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

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/epl-2.0.html b/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/epl-v10.html b/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/notice.html b/notice.html
index c3d34c3..008b801 100644
--- a/notice.html
+++ b/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal.feature/LICENSE.txt b/org.eclipse.osbp.xtext.signal.feature/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal.feature/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal.feature/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal.feature/build.properties b/org.eclipse.osbp.xtext.signal.feature/build.properties
index 0ea4044..bee2254 100644
--- a/org.eclipse.osbp.xtext.signal.feature/build.properties
+++ b/org.eclipse.osbp.xtext.signal.feature/build.properties
@@ -3,8 +3,8 @@
                notice.html,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html
+               epl-2.0.html
 src.includes = license.html,\
                LICENSE.txt,\
                notice.html,\
-               epl-v10.html			   
+               epl-2.0.html			   
diff --git a/org.eclipse.osbp.xtext.signal.feature/epl-2.0.html b/org.eclipse.osbp.xtext.signal.feature/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal.feature/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.feature/epl-v10.html b/org.eclipse.osbp.xtext.signal.feature/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal.feature/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.feature/feature.properties b/org.eclipse.osbp.xtext.signal.feature/feature.properties
index 6f8c534..b3d6bbb 100644
--- a/org.eclipse.osbp.xtext.signal.feature/feature.properties
+++ b/org.eclipse.osbp.xtext.signal.feature/feature.properties
@@ -1,9 +1,11 @@
 #=======================================================================
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
@@ -30,9 +32,11 @@
 copyright=\
 Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). \n\
 All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&amp;Co.KG - initial API and basis\n\
@@ -47,126 +51,143 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+\n\
+November 22, 2017\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\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION\n\
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF\n\
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE\n\
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED\n\
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE\n\
+AGREEMENTS 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 OF ANY\n\
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU\n\
+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\
+Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
+is provided to you under the terms and conditions of the Eclipse Public License\n\
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also\n\
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,\n\
+"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\
+Content includes, but is not limited to, source code, object code, documentation\n\
+and other files maintained in the Eclipse Foundation source code repository\n\
+("Repository") in software modules ("Modules") and made available as\n\
+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\
+-   Content may be structured and packaged into modules to facilitate\n\
+    delivering, extending, and upgrading the Content. Typical modules may\n\
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and\n\
+    features ("Features").\n\
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR\n\
+    (Java™ ARchive) in a directory named "plugins".\n\
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and\n\
+    associated material. Each Feature may be packaged as a sub-directory in a\n\
+    directory named "features". Within a Feature, files named "feature.xml" may\n\
+    contain a list of the names and version numbers of the Plug-ins and/or\n\
+    Fragments associated with that Feature.\n\
+-   Features may also include other Features ("Included Features"). Within a\n\
+    Feature, files named "feature.xml" may contain a list of the names and\n\
+    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\
+The terms and conditions governing Plug-ins and Fragments should be contained in\n\
+files named "about.html" ("Abouts"). The terms and conditions governing Features\n\
+and Included Features should be contained in files named "license.html"\n\
+("Feature Licenses"). Abouts and Feature Licenses may be located in any\n\
+directory of a Download or Module including, but not limited to the following\n\
+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\
+-   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\
+Note: if a Feature made available by the Eclipse Foundation is installed using\n\
+the Provisioning Technology (as defined below), you must agree to a license\n\
+("Feature Update License") during the installation process. If the Feature\n\
+contains Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform you\n\
+where you can locate them. Feature Update Licenses may be found in the "license"\n\
+property of files named "feature.properties" found within a Feature. Such\n\
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and\n\
+conditions (or references to such terms and conditions) that govern your use of\n\
+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\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL\n\
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE\n\
+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\
+-   Eclipse Public License Version 1.0 (available at\n\
+    http://www.eclipse.org/legal/epl-v10.html)\n\
+-   Eclipse Distribution License Version 1.0 (available at\n\
+    http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+-   Common Public License Version 1.0 (available at\n\
+    http://www.eclipse.org/legal/cpl-v10.html)\n\
+-   Apache Software License 1.1 (available at\n\
+    http://www.apache.org/licenses/LICENSE)\n\
+-   Apache Software License 2.0 (available at\n\
+    http://www.apache.org/licenses/LICENSE-2.0)\n\
+-   Mozilla Public License Version 1.1 (available at\n\
+    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\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO\n\
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is\n\
+provided, please contact the Eclipse Foundation to determine what terms and\n\
+conditions govern that particular Content.\n\
 \n\
-\n\Use of Provisioning Technology\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\
+The Eclipse Foundation makes available provisioning software, examples of which\n\
+include, but are not limited to, p2 and the Eclipse Update Manager\n\
+("Provisioning Technology") for the purpose of allowing users to install\n\
+software, documentation, information and/or other materials (collectively\n\
+"Installable Software"). This capability is provided with the intent of allowing\n\
+such users to install, extend and update Eclipse-based products. Information\n\
+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\
+You may use Provisioning Technology to allow other parties to install\n\
+Installable Software. You shall be responsible for enabling the applicable\n\
+license agreements relating to the Installable Software to be presented to, and\n\
+accepted by, the users of the Provisioning Technology in accordance with the\n\
+Specification. By using Provisioning Technology in such a manner and making it\n\
+available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the\n\
+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\
+1.  A series of actions may occur ("Provisioning Process") in which a user may\n\
+    execute the Provisioning Technology on a machine ("Target Machine") with the\n\
+    intent of installing, extending or updating the functionality of an\n\
+    Eclipse-based product.\n\
+2.  During the Provisioning Process, the Provisioning Technology may cause third\n\
+    party Installable Software or a portion thereof to be accessed and copied to\n\
+    the Target Machine.\n\
+3.  Pursuant to the Specification, you will provide to the user the terms and\n\
+    conditions that govern the use of the Installable Software ("Installable\n\
+    Software Agreement") and such Installable Software Agreement shall be\n\
+    accessed from the Target Machine in accordance with the Specification. Such\n\
+    Installable Software Agreement must inform the user of the terms and\n\
+    conditions that govern the Installable Software and must solicit acceptance\n\
+    by the end user in the manner prescribed in such Installable\n\
+    Software Agreement. Upon such indication of agreement by the user, the\n\
+    provisioning Technology will complete installation of the\n\
+    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\
+Content may contain encryption software. The country in which you are currently\n\
+may have restrictions on the import, possession, and use, and/or re-export to\n\
+another country, of encryption software. BEFORE using any encryption software,\n\
+please check the country's laws, regulations and policies concerning the import,\n\
+possession, or use, and re-export of encryption software, to see if this is\n\
+permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the\n\
+United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.signal.feature/license.html b/org.eclipse.osbp.xtext.signal.feature/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.feature/license.html
+++ b/org.eclipse.osbp.xtext.signal.feature/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal.feature/notice.html b/org.eclipse.osbp.xtext.signal.feature/notice.html
index c3d34c3..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.feature/notice.html
+++ b/org.eclipse.osbp.xtext.signal.feature/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal.feature/pom.xml b/org.eclipse.osbp.xtext.signal.feature/pom.xml
index 4c6e261..5959f15 100644
--- a/org.eclipse.osbp.xtext.signal.feature/pom.xml
+++ b/org.eclipse.osbp.xtext.signal.feature/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ide/LICENSE.txt b/org.eclipse.osbp.xtext.signal.ide/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal.ide/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal.ide/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal.ide/about.html b/org.eclipse.osbp.xtext.signal.ide/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.signal.ide/about.html
+++ b/org.eclipse.osbp.xtext.signal.ide/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.signal.ide/about.properties b/org.eclipse.osbp.xtext.signal.ide/about.properties
index a38689d..f2f899e 100644
--- a/org.eclipse.osbp.xtext.signal.ide/about.properties
+++ b/org.eclipse.osbp.xtext.signal.ide/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Loetz GmbH&Co - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2018 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&Co - implementation\n
diff --git a/org.eclipse.osbp.xtext.signal.ide/build.properties b/org.eclipse.osbp.xtext.signal.ide/build.properties
index 2c92efc..45207cd 100644
--- a/org.eclipse.osbp.xtext.signal.ide/build.properties
+++ b/org.eclipse.osbp.xtext.signal.ide/build.properties
@@ -9,7 +9,7 @@
                about.mappings,\
                about.properties,\
                about_files/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                notice.html
 bin.excludes = **/*.xtend
diff --git a/org.eclipse.osbp.xtext.signal.ide/epl-2.0.html b/org.eclipse.osbp.xtext.signal.ide/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal.ide/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ide/epl-v10.html b/org.eclipse.osbp.xtext.signal.ide/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal.ide/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ide/license.html b/org.eclipse.osbp.xtext.signal.ide/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.ide/license.html
+++ b/org.eclipse.osbp.xtext.signal.ide/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal.ide/notice.html b/org.eclipse.osbp.xtext.signal.ide/notice.html
index c3d34c3..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.ide/notice.html
+++ b/org.eclipse.osbp.xtext.signal.ide/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal.ide/pom.xml b/org.eclipse.osbp.xtext.signal.ide/pom.xml
index ddbde33..588172a 100644
--- a/org.eclipse.osbp.xtext.signal.ide/pom.xml
+++ b/org.eclipse.osbp.xtext.signal.ide/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/AbstractSignalDSLIdeModule.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/AbstractSignalDSLIdeModule.java
index f50b44a..7c4d456 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/AbstractSignalDSLIdeModule.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/AbstractSignalDSLIdeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/PartialSignalDSLContentAssistParser.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/PartialSignalDSLContentAssistParser.java
index ae68718..1ec094e 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/PartialSignalDSLContentAssistParser.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/PartialSignalDSLContentAssistParser.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java
index f736d4c..dff0d14 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/SignalDSLParser.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -44,7 +46,8 @@
 			nameMappings = new HashMap<AbstractElement, String>() {
 				private static final long serialVersionUID = 1L;
 				{
-					put(grammarAccess.getDataTransferAccess().getAlternatives(), "rule__DataTransfer__Alternatives");
+					put(grammarAccess.getTriggerPolicyAccess().getAlternatives(), "rule__TriggerPolicy__Alternatives");
+					put(grammarAccess.getSchedulerAccess().getAlternatives(), "rule__Scheduler__Alternatives");
 					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2(), "rule__XImportDeclaration__Alternatives_2");
 					put(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3(), "rule__XImportDeclaration__Alternatives_2_0_3");
 					put(grammarAccess.getXAnnotationAccess().getAlternatives_3_1(), "rule__XAnnotation__Alternatives_3_1");
@@ -89,15 +92,20 @@
 					put(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives(), "rule__JvmArgumentTypeReference__Alternatives");
 					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2(), "rule__JvmWildcardTypeReference__Alternatives_2");
 					put(grammarAccess.getSignalActionEnumAccess().getAlternatives(), "rule__SignalActionEnum__Alternatives");
-					put(grammarAccess.getSignalTypeEnumAccess().getAlternatives(), "rule__SignalTypeEnum__Alternatives");
-					put(grammarAccess.getSignalHandlerTypeEnumAccess().getAlternatives(), "rule__SignalHandlerTypeEnum__Alternatives");
 					put(grammarAccess.getSignalExecutionTypeEnumAccess().getAlternatives(), "rule__SignalExecutionTypeEnum__Alternatives");
+					put(grammarAccess.getDayOfWeekEnumAccess().getAlternatives(), "rule__DayOfWeekEnum__Alternatives");
 					put(grammarAccess.getSignalModelAccess().getGroup(), "rule__SignalModel__Group__0");
 					put(grammarAccess.getSignalPackageAccess().getGroup(), "rule__SignalPackage__Group__0");
 					put(grammarAccess.getSignalPackageAccess().getGroup_3(), "rule__SignalPackage__Group_3__0");
 					put(grammarAccess.getSignalWatcherAccess().getGroup(), "rule__SignalWatcher__Group__0");
 					put(grammarAccess.getSignalHandlerAccess().getGroup(), "rule__SignalHandler__Group__0");
-					put(grammarAccess.getListTransferAccess().getGroup(), "rule__ListTransfer__Group__0");
+					put(grammarAccess.getTriggerFileAccess().getGroup(), "rule__TriggerFile__Group__0");
+					put(grammarAccess.getSignalSchedulerAccess().getGroup(), "rule__SignalScheduler__Group__0");
+					put(grammarAccess.getCronSchedulerAccess().getGroup(), "rule__CronScheduler__Group__0");
+					put(grammarAccess.getHourlySchedulerAccess().getGroup(), "rule__HourlyScheduler__Group__0");
+					put(grammarAccess.getDailySchedulerAccess().getGroup(), "rule__DailyScheduler__Group__0");
+					put(grammarAccess.getWeeklySchedulerAccess().getGroup(), "rule__WeeklyScheduler__Group__0");
+					put(grammarAccess.getMonthlySchedulerAccess().getGroup(), "rule__MonthlyScheduler__Group__0");
 					put(grammarAccess.getSignalDatainterchangeAccess().getGroup(), "rule__SignalDatainterchange__Group__0");
 					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
 					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_0(), "rule__XImportDeclaration__Group_2_0__0");
@@ -305,15 +313,23 @@
 					put(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1(), "rule__SignalPackage__WatchersAssignment_3_1");
 					put(grammarAccess.getSignalWatcherAccess().getNameAssignment_2(), "rule__SignalWatcher__NameAssignment_2");
 					put(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4(), "rule__SignalWatcher__DirectoryAssignment_4");
-					put(grammarAccess.getSignalWatcherAccess().getSignalAssignment_6(), "rule__SignalWatcher__SignalAssignment_6");
-					put(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_8(), "rule__SignalWatcher__HandlersAssignment_8");
+					put(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6(), "rule__SignalWatcher__HandlersAssignment_6");
 					put(grammarAccess.getSignalHandlerAccess().getNameAssignment_2(), "rule__SignalHandler__NameAssignment_2");
-					put(grammarAccess.getSignalHandlerAccess().getActionTypeAssignment_3(), "rule__SignalHandler__ActionTypeAssignment_3");
-					put(grammarAccess.getSignalHandlerAccess().getDataAssignment_4(), "rule__SignalHandler__DataAssignment_4");
-					put(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_5(), "rule__SignalHandler__ExecutiontypeAssignment_5");
-					put(grammarAccess.getSignalHandlerAccess().getFilemaskAssignment_7(), "rule__SignalHandler__FilemaskAssignment_7");
-					put(grammarAccess.getListTransferAccess().getInterchangesAssignment_3(), "rule__ListTransfer__InterchangesAssignment_3");
-					put(grammarAccess.getSingleTransferAccess().getInterchangeAssignment(), "rule__SingleTransfer__InterchangeAssignment");
+					put(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3(), "rule__SignalHandler__InterchangesAssignment_3");
+					put(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4(), "rule__SignalHandler__ExecutiontypeAssignment_4");
+					put(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5(), "rule__SignalHandler__TriggerpolicyAssignment_5");
+					put(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1(), "rule__TriggerFile__FilemaskAssignment_1");
+					put(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1(), "rule__SignalScheduler__SchedulerAssignment_1");
+					put(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1(), "rule__CronScheduler__ExpressionAssignment_1");
+					put(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1(), "rule__HourlyScheduler__MinuteAssignment_1");
+					put(grammarAccess.getDailySchedulerAccess().getHourAssignment_1(), "rule__DailyScheduler__HourAssignment_1");
+					put(grammarAccess.getDailySchedulerAccess().getMinuteAssignment_3(), "rule__DailyScheduler__MinuteAssignment_3");
+					put(grammarAccess.getWeeklySchedulerAccess().getDayofweekAssignment_1(), "rule__WeeklyScheduler__DayofweekAssignment_1");
+					put(grammarAccess.getWeeklySchedulerAccess().getHourAssignment_3(), "rule__WeeklyScheduler__HourAssignment_3");
+					put(grammarAccess.getWeeklySchedulerAccess().getMinuteAssignment_5(), "rule__WeeklyScheduler__MinuteAssignment_5");
+					put(grammarAccess.getMonthlySchedulerAccess().getDayofmonthAssignment_1(), "rule__MonthlyScheduler__DayofmonthAssignment_1");
+					put(grammarAccess.getMonthlySchedulerAccess().getHourAssignment_3(), "rule__MonthlyScheduler__HourAssignment_3");
+					put(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5(), "rule__MonthlyScheduler__MinuteAssignment_5");
 					put(grammarAccess.getSignalDatainterchangeAccess().getDataActionAssignment_0(), "rule__SignalDatainterchange__DataActionAssignment_0");
 					put(grammarAccess.getSignalDatainterchangeAccess().getDataRefAssignment_1(), "rule__SignalDatainterchange__DataRefAssignment_1");
 					put(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3(), "rule__SignalDatainterchange__FileNameAssignment_3");
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g
index e35f93f..78f901d 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.g
@@ -163,75 +163,225 @@
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleDataTransfer
-entryRuleDataTransfer
+// Entry rule entryRuleTriggerPolicy
+entryRuleTriggerPolicy
 :
-{ before(grammarAccess.getDataTransferRule()); }
-	 ruleDataTransfer
-{ after(grammarAccess.getDataTransferRule()); } 
+{ before(grammarAccess.getTriggerPolicyRule()); }
+	 ruleTriggerPolicy
+{ after(grammarAccess.getTriggerPolicyRule()); } 
 	 EOF 
 ;
 
-// Rule DataTransfer
-ruleDataTransfer 
+// Rule TriggerPolicy
+ruleTriggerPolicy 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getDataTransferAccess().getAlternatives()); }
-		(rule__DataTransfer__Alternatives)
-		{ after(grammarAccess.getDataTransferAccess().getAlternatives()); }
+		{ before(grammarAccess.getTriggerPolicyAccess().getAlternatives()); }
+		(rule__TriggerPolicy__Alternatives)
+		{ after(grammarAccess.getTriggerPolicyAccess().getAlternatives()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleListTransfer
-entryRuleListTransfer
+// Entry rule entryRuleTriggerFile
+entryRuleTriggerFile
 :
-{ before(grammarAccess.getListTransferRule()); }
-	 ruleListTransfer
-{ after(grammarAccess.getListTransferRule()); } 
+{ before(grammarAccess.getTriggerFileRule()); }
+	 ruleTriggerFile
+{ after(grammarAccess.getTriggerFileRule()); } 
 	 EOF 
 ;
 
-// Rule ListTransfer
-ruleListTransfer 
+// Rule TriggerFile
+ruleTriggerFile 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getListTransferAccess().getGroup()); }
-		(rule__ListTransfer__Group__0)
-		{ after(grammarAccess.getListTransferAccess().getGroup()); }
+		{ before(grammarAccess.getTriggerFileAccess().getGroup()); }
+		(rule__TriggerFile__Group__0)
+		{ after(grammarAccess.getTriggerFileAccess().getGroup()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-// Entry rule entryRuleSingleTransfer
-entryRuleSingleTransfer
+// Entry rule entryRuleSignalScheduler
+entryRuleSignalScheduler
 :
-{ before(grammarAccess.getSingleTransferRule()); }
-	 ruleSingleTransfer
-{ after(grammarAccess.getSingleTransferRule()); } 
+{ before(grammarAccess.getSignalSchedulerRule()); }
+	 ruleSignalScheduler
+{ after(grammarAccess.getSignalSchedulerRule()); } 
 	 EOF 
 ;
 
-// Rule SingleTransfer
-ruleSingleTransfer 
+// Rule SignalScheduler
+ruleSignalScheduler 
 	@init {
 		int stackSize = keepStackSize();
 	}
 	:
 	(
-		{ before(grammarAccess.getSingleTransferAccess().getInterchangeAssignment()); }
-		(rule__SingleTransfer__InterchangeAssignment)
-		{ after(grammarAccess.getSingleTransferAccess().getInterchangeAssignment()); }
+		{ before(grammarAccess.getSignalSchedulerAccess().getGroup()); }
+		(rule__SignalScheduler__Group__0)
+		{ after(grammarAccess.getSignalSchedulerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleScheduler
+entryRuleScheduler
+:
+{ before(grammarAccess.getSchedulerRule()); }
+	 ruleScheduler
+{ after(grammarAccess.getSchedulerRule()); } 
+	 EOF 
+;
+
+// Rule Scheduler
+ruleScheduler 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getSchedulerAccess().getAlternatives()); }
+		(rule__Scheduler__Alternatives)
+		{ after(grammarAccess.getSchedulerAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCronScheduler
+entryRuleCronScheduler
+:
+{ before(grammarAccess.getCronSchedulerRule()); }
+	 ruleCronScheduler
+{ after(grammarAccess.getCronSchedulerRule()); } 
+	 EOF 
+;
+
+// Rule CronScheduler
+ruleCronScheduler 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCronSchedulerAccess().getGroup()); }
+		(rule__CronScheduler__Group__0)
+		{ after(grammarAccess.getCronSchedulerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleHourlyScheduler
+entryRuleHourlyScheduler
+:
+{ before(grammarAccess.getHourlySchedulerRule()); }
+	 ruleHourlyScheduler
+{ after(grammarAccess.getHourlySchedulerRule()); } 
+	 EOF 
+;
+
+// Rule HourlyScheduler
+ruleHourlyScheduler 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getHourlySchedulerAccess().getGroup()); }
+		(rule__HourlyScheduler__Group__0)
+		{ after(grammarAccess.getHourlySchedulerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleDailyScheduler
+entryRuleDailyScheduler
+:
+{ before(grammarAccess.getDailySchedulerRule()); }
+	 ruleDailyScheduler
+{ after(grammarAccess.getDailySchedulerRule()); } 
+	 EOF 
+;
+
+// Rule DailyScheduler
+ruleDailyScheduler 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getDailySchedulerAccess().getGroup()); }
+		(rule__DailyScheduler__Group__0)
+		{ after(grammarAccess.getDailySchedulerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleWeeklyScheduler
+entryRuleWeeklyScheduler
+:
+{ before(grammarAccess.getWeeklySchedulerRule()); }
+	 ruleWeeklyScheduler
+{ after(grammarAccess.getWeeklySchedulerRule()); } 
+	 EOF 
+;
+
+// Rule WeeklyScheduler
+ruleWeeklyScheduler 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getWeeklySchedulerAccess().getGroup()); }
+		(rule__WeeklyScheduler__Group__0)
+		{ after(grammarAccess.getWeeklySchedulerAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleMonthlyScheduler
+entryRuleMonthlyScheduler
+:
+{ before(grammarAccess.getMonthlySchedulerRule()); }
+	 ruleMonthlyScheduler
+{ after(grammarAccess.getMonthlySchedulerRule()); } 
+	 EOF 
+;
+
+// Rule MonthlyScheduler
+ruleMonthlyScheduler 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getMonthlySchedulerAccess().getGroup()); }
+		(rule__MonthlyScheduler__Group__0)
+		{ after(grammarAccess.getMonthlySchedulerAccess().getGroup()); }
 	)
 ;
 finally {
@@ -2351,38 +2501,6 @@
 	restoreStackSize(stackSize);
 }
 
-// Rule SignalTypeEnum
-ruleSignalTypeEnum
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalTypeEnumAccess().getAlternatives()); }
-		(rule__SignalTypeEnum__Alternatives)
-		{ after(grammarAccess.getSignalTypeEnumAccess().getAlternatives()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-// Rule SignalHandlerTypeEnum
-ruleSignalHandlerTypeEnum
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalHandlerTypeEnumAccess().getAlternatives()); }
-		(rule__SignalHandlerTypeEnum__Alternatives)
-		{ after(grammarAccess.getSignalHandlerTypeEnumAccess().getAlternatives()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
 // Rule SignalExecutionTypeEnum
 ruleSignalExecutionTypeEnum
 	@init {
@@ -2399,21 +2517,76 @@
 	restoreStackSize(stackSize);
 }
 
-rule__DataTransfer__Alternatives
+// Rule DayOfWeekEnum
+ruleDayOfWeekEnum
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getDataTransferAccess().getSingleTransferParserRuleCall_0()); }
-		ruleSingleTransfer
-		{ after(grammarAccess.getDataTransferAccess().getSingleTransferParserRuleCall_0()); }
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getAlternatives()); }
+		(rule__DayOfWeekEnum__Alternatives)
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TriggerPolicy__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); }
+		ruleTriggerFile
+		{ after(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getDataTransferAccess().getListTransferParserRuleCall_1()); }
-		ruleListTransfer
-		{ after(grammarAccess.getDataTransferAccess().getListTransferParserRuleCall_1()); }
+		{ before(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); }
+		ruleSignalScheduler
+		{ after(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Scheduler__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); }
+		ruleCronScheduler
+		{ after(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); }
+		ruleHourlyScheduler
+		{ after(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); }
+		ruleDailyScheduler
+		{ after(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); }
+		ruleWeeklyScheduler
+		{ after(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); }
+		ruleMonthlyScheduler
+		{ after(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); }
 	)
 ;
 finally {
@@ -3608,63 +3781,72 @@
 	restoreStackSize(stackSize);
 }
 
-rule__SignalTypeEnum__Alternatives
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0()); }
-		('createSignals')
-		{ after(grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0()); }
-	)
-	|
-	(
-		{ before(grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1()); }
-		('modifySignals')
-		{ after(grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalHandlerTypeEnum__Alternatives
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0()); }
-		('doAfterModify')
-		{ after(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0()); }
-	)
-	|
-	(
-		{ before(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1()); }
-		('doAfterCreate')
-		{ after(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
 rule__SignalExecutionTypeEnum__Alternatives
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0()); }
-		('synch')
-		{ after(grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0()); }
+		{ before(grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0()); }
+		('sequential')
+		{ after(grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0()); }
 	)
 	|
 	(
-		{ before(grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1()); }
-		('asynch')
-		{ after(grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1()); }
+		{ before(grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1()); }
+		('parallel')
+		{ after(grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DayOfWeekEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0()); }
+		('sunday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1()); }
+		('monday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2()); }
+		('tuesday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3()); }
+		('wednesday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4()); }
+		('thursday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5()); }
+		('friday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6()); }
+		('saturday')
+		{ after(grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6()); }
 	)
 ;
 finally {
@@ -3716,7 +3898,7 @@
 :
 (
 	{ before(grammarAccess.getSignalModelAccess().getPackagesAssignment_1()); }
-	(rule__SignalModel__PackagesAssignment_1)*
+	(rule__SignalModel__PackagesAssignment_1)
 	{ after(grammarAccess.getSignalModelAccess().getPackagesAssignment_1()); }
 )
 ;
@@ -4067,9 +4249,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalWatcherAccess().getForKeyword_5()); }
-	'for'
-	{ after(grammarAccess.getSignalWatcherAccess().getForKeyword_5()); }
+	{ before(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); }
+	'{'
+	{ after(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); }
 )
 ;
 finally {
@@ -4094,9 +4276,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalWatcherAccess().getSignalAssignment_6()); }
-	(rule__SignalWatcher__SignalAssignment_6)
-	{ after(grammarAccess.getSignalWatcherAccess().getSignalAssignment_6()); }
+	{ before(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); }
+	(rule__SignalWatcher__HandlersAssignment_6)*
+	{ after(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); }
 )
 ;
 finally {
@@ -4109,7 +4291,6 @@
 	}
 :
 	rule__SignalWatcher__Group__7__Impl
-	rule__SignalWatcher__Group__8
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4121,62 +4302,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_7()); }
-	'{'
-	{ after(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_7()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__8
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalWatcher__Group__8__Impl
-	rule__SignalWatcher__Group__9
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__8__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_8()); }
-	(rule__SignalWatcher__HandlersAssignment_8)*
-	{ after(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_8()); }
-)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__9
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	rule__SignalWatcher__Group__9__Impl
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__Group__9__Impl
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-(
-	{ before(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_9()); }
+	{ before(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); }
 	'}'
-	{ after(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_9()); }
+	{ after(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); }
 )
 ;
 finally {
@@ -4283,9 +4411,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getActionTypeAssignment_3()); }
-	(rule__SignalHandler__ActionTypeAssignment_3)
-	{ after(grammarAccess.getSignalHandlerAccess().getActionTypeAssignment_3()); }
+	{ before(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); }
+	(rule__SignalHandler__InterchangesAssignment_3)*
+	{ after(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); }
 )
 ;
 finally {
@@ -4310,9 +4438,9 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getDataAssignment_4()); }
-	(rule__SignalHandler__DataAssignment_4)
-	{ after(grammarAccess.getSignalHandlerAccess().getDataAssignment_4()); }
+	{ before(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); }
+	(rule__SignalHandler__ExecutiontypeAssignment_4)
+	{ after(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); }
 )
 ;
 finally {
@@ -4325,7 +4453,6 @@
 	}
 :
 	rule__SignalHandler__Group__5__Impl
-	rule__SignalHandler__Group__6
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4337,62 +4464,63 @@
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_5()); }
-	(rule__SignalHandler__ExecutiontypeAssignment_5)?
-	{ after(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_5()); }
+	{ before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); }
+	(rule__SignalHandler__TriggerpolicyAssignment_5)
+	{ after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__6
+
+rule__TriggerFile__Group__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__6__Impl
-	rule__SignalHandler__Group__7
+	rule__TriggerFile__Group__0__Impl
+	rule__TriggerFile__Group__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__6__Impl
+rule__TriggerFile__Group__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getForFileMaskKeyword_6()); }
+	{ before(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); }
 	'forFileMask'
-	{ after(grammarAccess.getSignalHandlerAccess().getForFileMaskKeyword_6()); }
+	{ after(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__7
+rule__TriggerFile__Group__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__SignalHandler__Group__7__Impl
+	rule__TriggerFile__Group__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__Group__7__Impl
+rule__TriggerFile__Group__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getSignalHandlerAccess().getFilemaskAssignment_7()); }
-	(rule__SignalHandler__FilemaskAssignment_7)
-	{ after(grammarAccess.getSignalHandlerAccess().getFilemaskAssignment_7()); }
+	{ before(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); }
+	(rule__TriggerFile__FilemaskAssignment_1)
+	{ after(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); }
 )
 ;
 finally {
@@ -4400,134 +4528,593 @@
 }
 
 
-rule__ListTransfer__Group__0
+rule__SignalScheduler__Group__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__ListTransfer__Group__0__Impl
-	rule__ListTransfer__Group__1
+	rule__SignalScheduler__Group__0__Impl
+	rule__SignalScheduler__Group__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__0__Impl
+rule__SignalScheduler__Group__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getListTransferAccess().getListTransferAction_0()); }
-	()
-	{ after(grammarAccess.getListTransferAccess().getListTransferAction_0()); }
+	{ before(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); }
+	'scheduleFor'
+	{ after(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__1
+rule__SignalScheduler__Group__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__ListTransfer__Group__1__Impl
-	rule__ListTransfer__Group__2
+	rule__SignalScheduler__Group__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__1__Impl
+rule__SignalScheduler__Group__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getListTransferAccess().getDataTransferKeyword_1()); }
-	'DataTransfer'
-	{ after(grammarAccess.getListTransferAccess().getDataTransferKeyword_1()); }
+	{ before(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); }
+	(rule__SignalScheduler__SchedulerAssignment_1)
+	{ after(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__2
+
+rule__CronScheduler__Group__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__ListTransfer__Group__2__Impl
-	rule__ListTransfer__Group__3
+	rule__CronScheduler__Group__0__Impl
+	rule__CronScheduler__Group__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__2__Impl
+rule__CronScheduler__Group__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getListTransferAccess().getLeftCurlyBracketKeyword_2()); }
-	'{'
-	{ after(grammarAccess.getListTransferAccess().getLeftCurlyBracketKeyword_2()); }
+	{ before(grammarAccess.getCronSchedulerAccess().getCronKeyword_0()); }
+	'cron'
+	{ after(grammarAccess.getCronSchedulerAccess().getCronKeyword_0()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__3
+rule__CronScheduler__Group__1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__ListTransfer__Group__3__Impl
-	rule__ListTransfer__Group__4
+	rule__CronScheduler__Group__1__Impl
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__3__Impl
+rule__CronScheduler__Group__1__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getListTransferAccess().getInterchangesAssignment_3()); }
-	(rule__ListTransfer__InterchangesAssignment_3)*
-	{ after(grammarAccess.getListTransferAccess().getInterchangesAssignment_3()); }
+	{ before(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1()); }
+	(rule__CronScheduler__ExpressionAssignment_1)
+	{ after(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1()); }
 )
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__4
+
+rule__HourlyScheduler__Group__0
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
-	rule__ListTransfer__Group__4__Impl
+	rule__HourlyScheduler__Group__0__Impl
+	rule__HourlyScheduler__Group__1
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__Group__4__Impl
+rule__HourlyScheduler__Group__0__Impl
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 (
-	{ before(grammarAccess.getListTransferAccess().getRightCurlyBracketKeyword_4()); }
-	'}'
-	{ after(grammarAccess.getListTransferAccess().getRightCurlyBracketKeyword_4()); }
+	{ before(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); }
+	'hourlyAt'
+	{ after(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HourlyScheduler__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__HourlyScheduler__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HourlyScheduler__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1()); }
+	(rule__HourlyScheduler__MinuteAssignment_1)
+	{ after(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DailyScheduler__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__DailyScheduler__Group__0__Impl
+	rule__DailyScheduler__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); }
+	'dailyAt'
+	{ after(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__DailyScheduler__Group__1__Impl
+	rule__DailyScheduler__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getDailySchedulerAccess().getHourAssignment_1()); }
+	(rule__DailyScheduler__HourAssignment_1)
+	{ after(grammarAccess.getDailySchedulerAccess().getHourAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__DailyScheduler__Group__2__Impl
+	rule__DailyScheduler__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getDailySchedulerAccess().getColonKeyword_2()); }
+	':'
+	{ after(grammarAccess.getDailySchedulerAccess().getColonKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__DailyScheduler__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getDailySchedulerAccess().getMinuteAssignment_3()); }
+	(rule__DailyScheduler__MinuteAssignment_3)
+	{ after(grammarAccess.getDailySchedulerAccess().getMinuteAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__WeeklyScheduler__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WeeklyScheduler__Group__0__Impl
+	rule__WeeklyScheduler__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); }
+	'weeklyOn'
+	{ after(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WeeklyScheduler__Group__1__Impl
+	rule__WeeklyScheduler__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWeeklySchedulerAccess().getDayofweekAssignment_1()); }
+	(rule__WeeklyScheduler__DayofweekAssignment_1)
+	{ after(grammarAccess.getWeeklySchedulerAccess().getDayofweekAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WeeklyScheduler__Group__2__Impl
+	rule__WeeklyScheduler__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2()); }
+	'at'
+	{ after(grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WeeklyScheduler__Group__3__Impl
+	rule__WeeklyScheduler__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWeeklySchedulerAccess().getHourAssignment_3()); }
+	(rule__WeeklyScheduler__HourAssignment_3)
+	{ after(grammarAccess.getWeeklySchedulerAccess().getHourAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WeeklyScheduler__Group__4__Impl
+	rule__WeeklyScheduler__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4()); }
+	':'
+	{ after(grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__WeeklyScheduler__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getWeeklySchedulerAccess().getMinuteAssignment_5()); }
+	(rule__WeeklyScheduler__MinuteAssignment_5)
+	{ after(grammarAccess.getWeeklySchedulerAccess().getMinuteAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__MonthlyScheduler__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MonthlyScheduler__Group__0__Impl
+	rule__MonthlyScheduler__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); }
+	'monthlyOn'
+	{ after(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MonthlyScheduler__Group__1__Impl
+	rule__MonthlyScheduler__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMonthlySchedulerAccess().getDayofmonthAssignment_1()); }
+	(rule__MonthlyScheduler__DayofmonthAssignment_1)
+	{ after(grammarAccess.getMonthlySchedulerAccess().getDayofmonthAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MonthlyScheduler__Group__2__Impl
+	rule__MonthlyScheduler__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2()); }
+	'at'
+	{ after(grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MonthlyScheduler__Group__3__Impl
+	rule__MonthlyScheduler__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMonthlySchedulerAccess().getHourAssignment_3()); }
+	(rule__MonthlyScheduler__HourAssignment_3)
+	{ after(grammarAccess.getMonthlySchedulerAccess().getHourAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MonthlyScheduler__Group__4__Impl
+	rule__MonthlyScheduler__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4()); }
+	':'
+	{ after(grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__MonthlyScheduler__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5()); }
+	(rule__MonthlyScheduler__MinuteAssignment_5)
+	{ after(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5()); }
 )
 ;
 finally {
@@ -17653,30 +18240,15 @@
 	restoreStackSize(stackSize);
 }
 
-rule__SignalWatcher__SignalAssignment_6
+rule__SignalWatcher__HandlersAssignment_6
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalWatcherAccess().getSignalSignalTypeEnumEnumRuleCall_6_0()); }
-		ruleSignalTypeEnum
-		{ after(grammarAccess.getSignalWatcherAccess().getSignalSignalTypeEnumEnumRuleCall_6_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalWatcher__HandlersAssignment_8
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_8_0()); }
+		{ before(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); }
 		ruleSignalHandler
-		{ after(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_8_0()); }
+		{ after(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); }
 	)
 ;
 finally {
@@ -17698,90 +18270,225 @@
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__ActionTypeAssignment_3
+rule__SignalHandler__InterchangesAssignment_3
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalHandlerAccess().getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0()); }
-		ruleSignalHandlerTypeEnum
-		{ after(grammarAccess.getSignalHandlerAccess().getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0()); }
+		{ before(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); }
+		ruleSignalDatainterchange
+		{ after(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__DataAssignment_4
+rule__SignalHandler__ExecutiontypeAssignment_4
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalHandlerAccess().getDataDataTransferParserRuleCall_4_0()); }
-		ruleDataTransfer
-		{ after(grammarAccess.getSignalHandlerAccess().getDataDataTransferParserRuleCall_4_0()); }
-	)
-;
-finally {
-	restoreStackSize(stackSize);
-}
-
-rule__SignalHandler__ExecutiontypeAssignment_5
-	@init {
-		int stackSize = keepStackSize();
-	}
-:
-	(
-		{ before(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0()); }
+		{ before(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); }
 		ruleSignalExecutionTypeEnum
-		{ after(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0()); }
+		{ after(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SignalHandler__FilemaskAssignment_7
+rule__SignalHandler__TriggerpolicyAssignment_5
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSignalHandlerAccess().getFilemaskSTRINGTerminalRuleCall_7_0()); }
+		{ before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); }
+		ruleTriggerPolicy
+		{ after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TriggerFile__FilemaskAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); }
 		RULE_STRING
-		{ after(grammarAccess.getSignalHandlerAccess().getFilemaskSTRINGTerminalRuleCall_7_0()); }
+		{ after(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__ListTransfer__InterchangesAssignment_3
+rule__SignalScheduler__SchedulerAssignment_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getListTransferAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); }
-		ruleSignalDatainterchange
-		{ after(grammarAccess.getListTransferAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); }
+		{ before(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); }
+		ruleScheduler
+		{ after(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); }
 	)
 ;
 finally {
 	restoreStackSize(stackSize);
 }
 
-rule__SingleTransfer__InterchangeAssignment
+rule__CronScheduler__ExpressionAssignment_1
 	@init {
 		int stackSize = keepStackSize();
 	}
 :
 	(
-		{ before(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0()); }
-		ruleSignalDatainterchange
-		{ after(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0()); }
+		{ before(grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__HourlyScheduler__MinuteAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__HourAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DailyScheduler__MinuteAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0()); }
+		RULE_INT
+		{ after(grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__DayofweekAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0()); }
+		ruleDayOfWeekEnum
+		{ after(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__HourAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0()); }
+		RULE_INT
+		{ after(grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__WeeklyScheduler__MinuteAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); }
+		RULE_INT
+		{ after(grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__DayofmonthAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__HourAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0()); }
+		RULE_INT
+		{ after(grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__MonthlyScheduler__MinuteAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); }
+		RULE_INT
+		{ after(grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); }
 	)
 ;
 finally {
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens
index 0ee818a..6e97cc8 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSL.tokens
@@ -1,20 +1,20 @@
 '!'=40
 '!='=22
 '!=='=24
-'#'=75
+'#'=84
 '%'=39
 '%='=20
 '&&'=15
-'&'=97
-'('=71
-')'=72
+'&'=106
+'('=80
+')'=81
 '*'=36
 '**'=37
 '*='=18
 '+'=34
 '++'=41
 '+='=16
-','=73
+','=82
 '-'=35
 '--'=42
 '-='=17
@@ -24,9 +24,9 @@
 '..<'=29
 '/'=38
 '/='=19
-':'=82
-'::'=99
-';'=69
+':'=73
+'::'=108
+';'=78
 '<'=27
 '<>'=32
 '='=13
@@ -35,60 +35,69 @@
 '=>'=31
 '>'=26
 '>='=25
-'?'=96
-'?.'=100
+'?'=105
+'?.'=109
 '?:'=33
-'@'=70
-'DataTransfer'=67
+'@'=79
 'Export'=52
 'Import'=51
-'['=76
-']'=74
-'as'=78
-'asynch'=58
-'case'=84
-'catch'=95
-'createSignals'=53
-'default'=83
-'directory'=63
-'do'=86
-'doAfterCreate'=56
-'doAfterModify'=55
-'else'=80
+'['=85
+']'=83
+'as'=87
+'at'=75
+'case'=92
+'catch'=104
+'cron'=70
+'dailyAt'=72
+'default'=91
+'directory'=66
+'do'=95
+'else'=89
 'extends'=45
 'extension'=48
 'false'=50
-'fileName'=68
-'finally'=93
-'for'=64
-'forFileMask'=66
-'handler'=65
-'if'=79
+'fileName'=77
+'finally'=102
+'for'=93
+'forFileMask'=68
+'friday'=60
+'handler'=67
+'hourlyAt'=71
+'if'=88
 'import'=47
-'instanceof'=77
-'modifySignals'=54
-'new'=87
-'ns'=98
-'null'=88
-'package'=59
-'return'=91
+'instanceof'=86
+'monday'=56
+'monthlyOn'=76
+'new'=96
+'ns'=107
+'null'=97
+'package'=62
+'parallel'=54
+'return'=100
+'saturday'=61
+'scheduleFor'=69
+'sequential'=53
 'static'=46
+'sunday'=55
 'super'=49
-'switch'=81
-'synch'=57
-'synchronized'=94
-'throw'=90
-'true'=103
-'try'=92
-'typeof'=89
+'switch'=90
+'synchronized'=103
+'throw'=99
+'thursday'=59
+'true'=112
+'try'=101
+'tuesday'=57
+'typeof'=98
 'val'=44
-'var'=102
-'watcher'=62
-'while'=85
-'{'=60
-'|'=101
+'var'=111
+'watcher'=65
+'wednesday'=58
+'weeklyOn'=74
+'while'=94
+'{'=63
+'|'=110
 '||'=14
-'}'=61
+'}'=64
 RULE_ANY_OTHER=12
 RULE_DECIMAL=7
 RULE_HEX=5
@@ -102,6 +111,15 @@
 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__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java
index 24e42d4..6af2ff4 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLLexer.java
@@ -1,3 +1,20 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
 package org.eclipse.osbp.xtext.signal.ide.contentassist.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -101,18 +118,27 @@
     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__111=111;
     public static final int T__81=81;
+    public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
+    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
+    public static final int T__108=108;
     public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
     public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -962,10 +988,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:51:7: ( 'createSignals' )
-            // InternalSignalDSL.g:51:9: 'createSignals'
+            // InternalSignalDSL.g:51:7: ( 'sequential' )
+            // InternalSignalDSL.g:51:9: 'sequential'
             {
-            match("createSignals"); 
+            match("sequential"); 
 
 
             }
@@ -983,10 +1009,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:52:7: ( 'modifySignals' )
-            // InternalSignalDSL.g:52:9: 'modifySignals'
+            // InternalSignalDSL.g:52:7: ( 'parallel' )
+            // InternalSignalDSL.g:52:9: 'parallel'
             {
-            match("modifySignals"); 
+            match("parallel"); 
 
 
             }
@@ -1004,10 +1030,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:53:7: ( 'doAfterModify' )
-            // InternalSignalDSL.g:53:9: 'doAfterModify'
+            // InternalSignalDSL.g:53:7: ( 'sunday' )
+            // InternalSignalDSL.g:53:9: 'sunday'
             {
-            match("doAfterModify"); 
+            match("sunday"); 
 
 
             }
@@ -1025,10 +1051,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:54:7: ( 'doAfterCreate' )
-            // InternalSignalDSL.g:54:9: 'doAfterCreate'
+            // InternalSignalDSL.g:54:7: ( 'monday' )
+            // InternalSignalDSL.g:54:9: 'monday'
             {
-            match("doAfterCreate"); 
+            match("monday"); 
 
 
             }
@@ -1046,10 +1072,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:55:7: ( 'synch' )
-            // InternalSignalDSL.g:55:9: 'synch'
+            // InternalSignalDSL.g:55:7: ( 'tuesday' )
+            // InternalSignalDSL.g:55:9: 'tuesday'
             {
-            match("synch"); 
+            match("tuesday"); 
 
 
             }
@@ -1067,10 +1093,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:56:7: ( 'asynch' )
-            // InternalSignalDSL.g:56:9: 'asynch'
+            // InternalSignalDSL.g:56:7: ( 'wednesday' )
+            // InternalSignalDSL.g:56:9: 'wednesday'
             {
-            match("asynch"); 
+            match("wednesday"); 
 
 
             }
@@ -1088,10 +1114,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:57:7: ( 'package' )
-            // InternalSignalDSL.g:57:9: 'package'
+            // InternalSignalDSL.g:57:7: ( 'thursday' )
+            // InternalSignalDSL.g:57:9: 'thursday'
             {
-            match("package"); 
+            match("thursday"); 
 
 
             }
@@ -1109,10 +1135,11 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:58:7: ( '{' )
-            // InternalSignalDSL.g:58:9: '{'
+            // InternalSignalDSL.g:58:7: ( 'friday' )
+            // InternalSignalDSL.g:58:9: 'friday'
             {
-            match('{'); 
+            match("friday"); 
+
 
             }
 
@@ -1129,10 +1156,11 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:59:7: ( '}' )
-            // InternalSignalDSL.g:59:9: '}'
+            // InternalSignalDSL.g:59:7: ( 'saturday' )
+            // InternalSignalDSL.g:59:9: 'saturday'
             {
-            match('}'); 
+            match("saturday"); 
+
 
             }
 
@@ -1149,10 +1177,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:60:7: ( 'watcher' )
-            // InternalSignalDSL.g:60:9: 'watcher'
+            // InternalSignalDSL.g:60:7: ( 'package' )
+            // InternalSignalDSL.g:60:9: 'package'
             {
-            match("watcher"); 
+            match("package"); 
 
 
             }
@@ -1170,11 +1198,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:61:7: ( 'directory' )
-            // InternalSignalDSL.g:61:9: 'directory'
+            // InternalSignalDSL.g:61:7: ( '{' )
+            // InternalSignalDSL.g:61:9: '{'
             {
-            match("directory"); 
-
+            match('{'); 
 
             }
 
@@ -1191,11 +1218,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:62:7: ( 'for' )
-            // InternalSignalDSL.g:62:9: 'for'
+            // InternalSignalDSL.g:62:7: ( '}' )
+            // InternalSignalDSL.g:62:9: '}'
             {
-            match("for"); 
-
+            match('}'); 
 
             }
 
@@ -1212,10 +1238,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:63:7: ( 'handler' )
-            // InternalSignalDSL.g:63:9: 'handler'
+            // InternalSignalDSL.g:63:7: ( 'watcher' )
+            // InternalSignalDSL.g:63:9: 'watcher'
             {
-            match("handler"); 
+            match("watcher"); 
 
 
             }
@@ -1233,10 +1259,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:64:7: ( 'forFileMask' )
-            // InternalSignalDSL.g:64:9: 'forFileMask'
+            // InternalSignalDSL.g:64:7: ( 'directory' )
+            // InternalSignalDSL.g:64:9: 'directory'
             {
-            match("forFileMask"); 
+            match("directory"); 
 
 
             }
@@ -1254,10 +1280,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:65:7: ( 'DataTransfer' )
-            // InternalSignalDSL.g:65:9: 'DataTransfer'
+            // InternalSignalDSL.g:65:7: ( 'handler' )
+            // InternalSignalDSL.g:65:9: 'handler'
             {
-            match("DataTransfer"); 
+            match("handler"); 
 
 
             }
@@ -1275,10 +1301,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:66:7: ( 'fileName' )
-            // InternalSignalDSL.g:66:9: 'fileName'
+            // InternalSignalDSL.g:66:7: ( 'forFileMask' )
+            // InternalSignalDSL.g:66:9: 'forFileMask'
             {
-            match("fileName"); 
+            match("forFileMask"); 
 
 
             }
@@ -1296,10 +1322,11 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:67:7: ( ';' )
-            // InternalSignalDSL.g:67:9: ';'
+            // InternalSignalDSL.g:67:7: ( 'scheduleFor' )
+            // InternalSignalDSL.g:67:9: 'scheduleFor'
             {
-            match(';'); 
+            match("scheduleFor"); 
+
 
             }
 
@@ -1316,10 +1343,11 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:68:7: ( '@' )
-            // InternalSignalDSL.g:68:9: '@'
+            // InternalSignalDSL.g:68:7: ( 'cron' )
+            // InternalSignalDSL.g:68:9: 'cron'
             {
-            match('@'); 
+            match("cron"); 
+
 
             }
 
@@ -1336,10 +1364,11 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:69:7: ( '(' )
-            // InternalSignalDSL.g:69:9: '('
+            // InternalSignalDSL.g:69:7: ( 'hourlyAt' )
+            // InternalSignalDSL.g:69:9: 'hourlyAt'
             {
-            match('('); 
+            match("hourlyAt"); 
+
 
             }
 
@@ -1356,10 +1385,11 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:70:7: ( ')' )
-            // InternalSignalDSL.g:70:9: ')'
+            // InternalSignalDSL.g:70:7: ( 'dailyAt' )
+            // InternalSignalDSL.g:70:9: 'dailyAt'
             {
-            match(')'); 
+            match("dailyAt"); 
+
 
             }
 
@@ -1376,10 +1406,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:71:7: ( ',' )
-            // InternalSignalDSL.g:71:9: ','
+            // InternalSignalDSL.g:71:7: ( ':' )
+            // InternalSignalDSL.g:71:9: ':'
             {
-            match(','); 
+            match(':'); 
 
             }
 
@@ -1396,10 +1426,11 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:72:7: ( ']' )
-            // InternalSignalDSL.g:72:9: ']'
+            // InternalSignalDSL.g:72:7: ( 'weeklyOn' )
+            // InternalSignalDSL.g:72:9: 'weeklyOn'
             {
-            match(']'); 
+            match("weeklyOn"); 
+
 
             }
 
@@ -1416,10 +1447,11 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:73:7: ( '#' )
-            // InternalSignalDSL.g:73:9: '#'
+            // InternalSignalDSL.g:73:7: ( 'at' )
+            // InternalSignalDSL.g:73:9: 'at'
             {
-            match('#'); 
+            match("at"); 
+
 
             }
 
@@ -1436,10 +1468,11 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:74:7: ( '[' )
-            // InternalSignalDSL.g:74:9: '['
+            // InternalSignalDSL.g:74:7: ( 'monthlyOn' )
+            // InternalSignalDSL.g:74:9: 'monthlyOn'
             {
-            match('['); 
+            match("monthlyOn"); 
+
 
             }
 
@@ -1456,10 +1489,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:75:7: ( 'instanceof' )
-            // InternalSignalDSL.g:75:9: 'instanceof'
+            // InternalSignalDSL.g:75:7: ( 'fileName' )
+            // InternalSignalDSL.g:75:9: 'fileName'
             {
-            match("instanceof"); 
+            match("fileName"); 
 
 
             }
@@ -1477,11 +1510,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:76:7: ( 'as' )
-            // InternalSignalDSL.g:76:9: 'as'
+            // InternalSignalDSL.g:76:7: ( ';' )
+            // InternalSignalDSL.g:76:9: ';'
             {
-            match("as"); 
-
+            match(';'); 
 
             }
 
@@ -1498,11 +1530,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:77:7: ( 'if' )
-            // InternalSignalDSL.g:77:9: 'if'
+            // InternalSignalDSL.g:77:7: ( '@' )
+            // InternalSignalDSL.g:77:9: '@'
             {
-            match("if"); 
-
+            match('@'); 
 
             }
 
@@ -1519,11 +1550,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:78:7: ( 'else' )
-            // InternalSignalDSL.g:78:9: 'else'
+            // InternalSignalDSL.g:78:7: ( '(' )
+            // InternalSignalDSL.g:78:9: '('
             {
-            match("else"); 
-
+            match('('); 
 
             }
 
@@ -1540,11 +1570,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:79:7: ( 'switch' )
-            // InternalSignalDSL.g:79:9: 'switch'
+            // InternalSignalDSL.g:79:7: ( ')' )
+            // InternalSignalDSL.g:79:9: ')'
             {
-            match("switch"); 
-
+            match(')'); 
 
             }
 
@@ -1561,10 +1590,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:80:7: ( ':' )
-            // InternalSignalDSL.g:80:9: ':'
+            // InternalSignalDSL.g:80:7: ( ',' )
+            // InternalSignalDSL.g:80:9: ','
             {
-            match(':'); 
+            match(','); 
 
             }
 
@@ -1581,11 +1610,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:81:7: ( 'default' )
-            // InternalSignalDSL.g:81:9: 'default'
+            // InternalSignalDSL.g:81:7: ( ']' )
+            // InternalSignalDSL.g:81:9: ']'
             {
-            match("default"); 
-
+            match(']'); 
 
             }
 
@@ -1602,11 +1630,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:82:7: ( 'case' )
-            // InternalSignalDSL.g:82:9: 'case'
+            // InternalSignalDSL.g:82:7: ( '#' )
+            // InternalSignalDSL.g:82:9: '#'
             {
-            match("case"); 
-
+            match('#'); 
 
             }
 
@@ -1623,11 +1650,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:83:7: ( 'while' )
-            // InternalSignalDSL.g:83:9: 'while'
+            // InternalSignalDSL.g:83:7: ( '[' )
+            // InternalSignalDSL.g:83:9: '['
             {
-            match("while"); 
-
+            match('['); 
 
             }
 
@@ -1644,10 +1670,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:84:7: ( 'do' )
-            // InternalSignalDSL.g:84:9: 'do'
+            // InternalSignalDSL.g:84:7: ( 'instanceof' )
+            // InternalSignalDSL.g:84:9: 'instanceof'
             {
-            match("do"); 
+            match("instanceof"); 
 
 
             }
@@ -1665,10 +1691,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:85:7: ( 'new' )
-            // InternalSignalDSL.g:85:9: 'new'
+            // InternalSignalDSL.g:85:7: ( 'as' )
+            // InternalSignalDSL.g:85:9: 'as'
             {
-            match("new"); 
+            match("as"); 
 
 
             }
@@ -1686,10 +1712,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:86:7: ( 'null' )
-            // InternalSignalDSL.g:86:9: 'null'
+            // InternalSignalDSL.g:86:7: ( 'if' )
+            // InternalSignalDSL.g:86:9: 'if'
             {
-            match("null"); 
+            match("if"); 
 
 
             }
@@ -1707,10 +1733,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:87:7: ( 'typeof' )
-            // InternalSignalDSL.g:87:9: 'typeof'
+            // InternalSignalDSL.g:87:7: ( 'else' )
+            // InternalSignalDSL.g:87:9: 'else'
             {
-            match("typeof"); 
+            match("else"); 
 
 
             }
@@ -1728,10 +1754,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:88:7: ( 'throw' )
-            // InternalSignalDSL.g:88:9: 'throw'
+            // InternalSignalDSL.g:88:7: ( 'switch' )
+            // InternalSignalDSL.g:88:9: 'switch'
             {
-            match("throw"); 
+            match("switch"); 
 
 
             }
@@ -1749,10 +1775,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:89:7: ( 'return' )
-            // InternalSignalDSL.g:89:9: 'return'
+            // InternalSignalDSL.g:89:7: ( 'default' )
+            // InternalSignalDSL.g:89:9: 'default'
             {
-            match("return"); 
+            match("default"); 
 
 
             }
@@ -1770,10 +1796,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:90:7: ( 'try' )
-            // InternalSignalDSL.g:90:9: 'try'
+            // InternalSignalDSL.g:90:7: ( 'case' )
+            // InternalSignalDSL.g:90:9: 'case'
             {
-            match("try"); 
+            match("case"); 
 
 
             }
@@ -1791,10 +1817,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:91:7: ( 'finally' )
-            // InternalSignalDSL.g:91:9: 'finally'
+            // InternalSignalDSL.g:91:7: ( 'for' )
+            // InternalSignalDSL.g:91:9: 'for'
             {
-            match("finally"); 
+            match("for"); 
 
 
             }
@@ -1812,10 +1838,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:92:7: ( 'synchronized' )
-            // InternalSignalDSL.g:92:9: 'synchronized'
+            // InternalSignalDSL.g:92:7: ( 'while' )
+            // InternalSignalDSL.g:92:9: 'while'
             {
-            match("synchronized"); 
+            match("while"); 
 
 
             }
@@ -1833,10 +1859,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:93:7: ( 'catch' )
-            // InternalSignalDSL.g:93:9: 'catch'
+            // InternalSignalDSL.g:93:7: ( 'do' )
+            // InternalSignalDSL.g:93:9: 'do'
             {
-            match("catch"); 
+            match("do"); 
 
 
             }
@@ -1854,10 +1880,11 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:94:7: ( '?' )
-            // InternalSignalDSL.g:94:9: '?'
+            // InternalSignalDSL.g:94:7: ( 'new' )
+            // InternalSignalDSL.g:94:9: 'new'
             {
-            match('?'); 
+            match("new"); 
+
 
             }
 
@@ -1874,10 +1901,11 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:95:7: ( '&' )
-            // InternalSignalDSL.g:95:9: '&'
+            // InternalSignalDSL.g:95:7: ( 'null' )
+            // InternalSignalDSL.g:95:9: 'null'
             {
-            match('&'); 
+            match("null"); 
+
 
             }
 
@@ -1894,10 +1922,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:96:7: ( 'ns' )
-            // InternalSignalDSL.g:96:9: 'ns'
+            // InternalSignalDSL.g:96:7: ( 'typeof' )
+            // InternalSignalDSL.g:96:9: 'typeof'
             {
-            match("ns"); 
+            match("typeof"); 
 
 
             }
@@ -1915,10 +1943,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:97:7: ( '::' )
-            // InternalSignalDSL.g:97:9: '::'
+            // InternalSignalDSL.g:97:7: ( 'throw' )
+            // InternalSignalDSL.g:97:9: 'throw'
             {
-            match("::"); 
+            match("throw"); 
 
 
             }
@@ -1936,10 +1964,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:98:8: ( '?.' )
-            // InternalSignalDSL.g:98:10: '?.'
+            // InternalSignalDSL.g:98:8: ( 'return' )
+            // InternalSignalDSL.g:98:10: 'return'
             {
-            match("?."); 
+            match("return"); 
 
 
             }
@@ -1957,10 +1985,11 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:99:8: ( '|' )
-            // InternalSignalDSL.g:99:10: '|'
+            // InternalSignalDSL.g:99:8: ( 'try' )
+            // InternalSignalDSL.g:99:10: 'try'
             {
-            match('|'); 
+            match("try"); 
+
 
             }
 
@@ -1977,10 +2006,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:100:8: ( 'var' )
-            // InternalSignalDSL.g:100:10: 'var'
+            // InternalSignalDSL.g:100:8: ( 'finally' )
+            // InternalSignalDSL.g:100:10: 'finally'
             {
-            match("var"); 
+            match("finally"); 
 
 
             }
@@ -1998,10 +2027,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:101:8: ( 'true' )
-            // InternalSignalDSL.g:101:10: 'true'
+            // InternalSignalDSL.g:101:8: ( 'synchronized' )
+            // InternalSignalDSL.g:101:10: 'synchronized'
             {
-            match("true"); 
+            match("synchronized"); 
 
 
             }
@@ -2014,15 +2043,201 @@
     }
     // $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;
+            // InternalSignalDSL.g:102:8: ( 'catch' )
+            // InternalSignalDSL.g:102:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:103:8: ( '?' )
+            // InternalSignalDSL.g:103:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__105"
+
+    // $ANTLR start "T__106"
+    public final void mT__106() throws RecognitionException {
+        try {
+            int _type = T__106;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalSignalDSL.g:104:8: ( '&' )
+            // InternalSignalDSL.g:104:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalSignalDSL.g:105:8: ( 'ns' )
+            // InternalSignalDSL.g:105:10: 'ns'
+            {
+            match("ns"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:106:8: ( '::' )
+            // InternalSignalDSL.g:106:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:107:8: ( '?.' )
+            // InternalSignalDSL.g:107:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__109"
+
+    // $ANTLR start "T__110"
+    public final void mT__110() throws RecognitionException {
+        try {
+            int _type = T__110;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalSignalDSL.g:108:8: ( '|' )
+            // InternalSignalDSL.g:108:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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;
+            // InternalSignalDSL.g:109:8: ( 'var' )
+            // InternalSignalDSL.g:109:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:110:8: ( 'true' )
+            // InternalSignalDSL.g:110:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20298:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalSignalDSL.g:20298:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:21005:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalSignalDSL.g:21005:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalSignalDSL.g:20298:12: ( '0x' | '0X' )
+            // InternalSignalDSL.g:21005:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2050,7 +2265,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalSignalDSL.g:20298:13: '0x'
+                    // InternalSignalDSL.g:21005:13: '0x'
                     {
                     match("0x"); 
 
@@ -2058,7 +2273,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:20298:18: '0X'
+                    // InternalSignalDSL.g:21005:18: '0X'
                     {
                     match("0X"); 
 
@@ -2068,7 +2283,7 @@
 
             }
 
-            // InternalSignalDSL.g:20298:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalSignalDSL.g:21005:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2106,7 +2321,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalSignalDSL.g:20298:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:21005:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2115,10 +2330,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalSignalDSL.g:20298:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:21005:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalSignalDSL.g:20298:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:21005:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2136,7 +2351,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalSignalDSL.g:20298:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalSignalDSL.g:21005:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2160,7 +2375,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:20298:84: ( 'l' | 'L' )
+                            // InternalSignalDSL.g:21005:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2199,11 +2414,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20300:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalSignalDSL.g:20300:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:21007:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalSignalDSL.g:21007:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalSignalDSL.g:20300:21: ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:21007:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2252,11 +2467,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20302:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalSignalDSL.g:20302:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:21009:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalSignalDSL.g:21009:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalSignalDSL.g:20302:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalSignalDSL.g:21009:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2265,7 +2480,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalSignalDSL.g:20302:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalSignalDSL.g:21009:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2276,7 +2491,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalSignalDSL.g:20302:36: ( '+' | '-' )?
+                    // InternalSignalDSL.g:21009:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2309,7 +2524,7 @@
 
             }
 
-            // InternalSignalDSL.g:20302:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:21009:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2321,7 +2536,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalSignalDSL.g:20302:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalSignalDSL.g:21009:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2345,7 +2560,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:20302:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalSignalDSL.g:21009: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();
@@ -2378,10 +2593,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20304:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalSignalDSL.g:20304:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:21011:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalSignalDSL.g:21011:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalSignalDSL.g:20304:11: ( '^' )?
+            // InternalSignalDSL.g:21011:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2390,7 +2605,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:20304:11: '^'
+                    // InternalSignalDSL.g:21011:11: '^'
                     {
                     match('^'); 
 
@@ -2408,7 +2623,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalSignalDSL.g:20304:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:21011:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2457,10 +2672,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20306:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalSignalDSL.g:20306:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:21013:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalSignalDSL.g:21013:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalSignalDSL.g:20306:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:21013:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2478,10 +2693,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalSignalDSL.g:20306:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalSignalDSL.g:21013:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalSignalDSL.g:20306:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalSignalDSL.g:21013:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2497,7 +2712,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:20306:21: '\\\\' .
+                    	    // InternalSignalDSL.g:21013:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2505,7 +2720,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:20306:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalSignalDSL.g:21013:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2525,7 +2740,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:20306:44: ( '\"' )?
+                    // InternalSignalDSL.g:21013:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2534,7 +2749,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalSignalDSL.g:20306:44: '\"'
+                            // InternalSignalDSL.g:21013:44: '\"'
                             {
                             match('\"'); 
 
@@ -2547,10 +2762,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:20306:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalSignalDSL.g:21013:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalSignalDSL.g:20306:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalSignalDSL.g:21013:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -2566,7 +2781,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:20306:55: '\\\\' .
+                    	    // InternalSignalDSL.g:21013:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2574,7 +2789,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:20306:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalSignalDSL.g:21013:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2594,7 +2809,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:20306:79: ( '\\'' )?
+                    // InternalSignalDSL.g:21013:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2603,7 +2818,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalSignalDSL.g:20306:79: '\\''
+                            // InternalSignalDSL.g:21013:79: '\\''
                             {
                             match('\''); 
 
@@ -2634,12 +2849,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20308:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalSignalDSL.g:20308:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalSignalDSL.g:21015:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalSignalDSL.g:21015:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalSignalDSL.g:20308:24: ( options {greedy=false; } : . )*
+            // InternalSignalDSL.g:21015:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2664,7 +2879,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalSignalDSL.g:20308:52: .
+            	    // InternalSignalDSL.g:21015:52: .
             	    {
             	    matchAny(); 
 
@@ -2694,12 +2909,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20310:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalSignalDSL.g:20310:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:21017:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalSignalDSL.g:21017:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalSignalDSL.g:20310:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalSignalDSL.g:21017:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -2712,7 +2927,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalSignalDSL.g:20310:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalSignalDSL.g:21017: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();
@@ -2732,7 +2947,7 @@
                 }
             } while (true);
 
-            // InternalSignalDSL.g:20310:40: ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:21017:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -2741,9 +2956,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:20310:41: ( '\\r' )? '\\n'
+                    // InternalSignalDSL.g:21017:41: ( '\\r' )? '\\n'
                     {
-                    // InternalSignalDSL.g:20310:41: ( '\\r' )?
+                    // InternalSignalDSL.g:21017:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2752,7 +2967,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalSignalDSL.g:20310:41: '\\r'
+                            // InternalSignalDSL.g:21017:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2784,10 +2999,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20312:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalSignalDSL.g:20312:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:21019:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalSignalDSL.g:21019:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalSignalDSL.g:20312:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:21019:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -2841,8 +3056,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20314:16: ( . )
-            // InternalSignalDSL.g:20314:18: .
+            // InternalSignalDSL.g:21021:16: ( . )
+            // InternalSignalDSL.g:21021:18: .
             {
             matchAny(); 
 
@@ -2857,8 +3072,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalSignalDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=100;
+        // InternalSignalDSL.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=109;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -3499,63 +3714,126 @@
                 }
                 break;
             case 92 :
-                // InternalSignalDSL.g:1:560: RULE_HEX
+                // InternalSignalDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalSignalDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalSignalDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalSignalDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalSignalDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // InternalSignalDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // InternalSignalDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // InternalSignalDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // InternalSignalDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // InternalSignalDSL.g:1:623: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 93 :
-                // InternalSignalDSL.g:1:569: RULE_INT
+            case 102 :
+                // InternalSignalDSL.g:1:632: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 94 :
-                // InternalSignalDSL.g:1:578: RULE_DECIMAL
+            case 103 :
+                // InternalSignalDSL.g:1:641: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 95 :
-                // InternalSignalDSL.g:1:591: RULE_ID
+            case 104 :
+                // InternalSignalDSL.g:1:654: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 96 :
-                // InternalSignalDSL.g:1:599: RULE_STRING
+            case 105 :
+                // InternalSignalDSL.g:1:662: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 97 :
-                // InternalSignalDSL.g:1:611: RULE_ML_COMMENT
+            case 106 :
+                // InternalSignalDSL.g:1:674: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 98 :
-                // InternalSignalDSL.g:1:627: RULE_SL_COMMENT
+            case 107 :
+                // InternalSignalDSL.g:1:690: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 99 :
-                // InternalSignalDSL.g:1:643: RULE_WS
+            case 108 :
+                // InternalSignalDSL.g:1:706: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 100 :
-                // InternalSignalDSL.g:1:651: RULE_ANY_OTHER
+            case 109 :
+                // InternalSignalDSL.g:1:714: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3569,70 +3847,69 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\65\1\67\1\71\1\74\1\100\1\103\1\107\1\111\1\113\1\115\1\117\1\121\1\124\14\126\2\uffff\3\126\10\uffff\1\174\3\126\2\u0086\1\62\5\uffff\1\u008b\26\uffff\1\u008d\5\uffff\1\u008f\4\uffff\1\126\1\uffff\10\126\1\u009a\10\126\1\u00a6\2\126\1\u00aa\1\126\2\uffff\4\126\12\uffff\2\126\1\u00b2\4\126\1\uffff\1\u0086\12\uffff\1\u00b8\1\u00b9\10\126\1\uffff\1\126\1\u00c4\11\126\1\uffff\3\126\1\uffff\5\126\1\u00d6\1\126\1\uffff\2\126\1\u00da\2\126\2\uffff\1\126\1\u00de\10\126\1\uffff\5\126\1\u00ec\13\126\1\uffff\1\u00f8\2\126\1\uffff\1\u00fb\2\126\1\uffff\1\126\1\u0100\1\u0102\3\126\1\u0106\6\126\1\uffff\1\u010d\7\126\1\u0115\2\126\1\uffff\1\126\1\u0119\1\uffff\3\126\1\u011d\1\uffff\1\126\1\uffff\1\u011f\1\u0120\1\126\1\uffff\3\126\1\u0125\1\u0126\1\126\1\uffff\4\126\1\u012c\2\126\1\uffff\2\126\1\u0131\1\uffff\1\u0132\1\u0133\1\126\1\uffff\1\126\2\uffff\3\126\1\u0139\2\uffff\4\126\1\u013f\1\uffff\1\u0140\1\u0141\1\u0142\1\126\3\uffff\4\126\1\u0148\1\uffff\5\126\4\uffff\1\126\1\u014f\3\126\1\uffff\4\126\1\u0157\1\126\1\uffff\1\126\1\u015a\5\126\1\uffff\2\126\1\uffff\1\u0162\5\126\1\u0168\1\uffff\4\126\1\u016d\1\uffff\1\u016e\1\u016f\1\u0170\1\u0171\5\uffff";
+        "\1\uffff\1\64\1\66\1\70\1\73\1\77\1\102\1\106\1\110\1\112\1\114\1\116\1\120\1\123\13\125\2\uffff\3\125\1\174\1\125\10\uffff\2\125\2\u008d\1\61\5\uffff\1\u0092\26\uffff\1\u0094\5\uffff\1\u0096\4\uffff\1\125\1\uffff\13\125\1\u00a5\17\125\2\uffff\3\125\1\u00bd\4\125\2\uffff\1\u00c3\1\u00c4\10\uffff\2\125\1\u00c7\1\125\1\uffff\1\u008d\12\uffff\1\u00c9\1\u00ca\14\125\1\uffff\2\125\1\u00da\13\125\1\u00e7\10\125\1\uffff\5\125\2\uffff\1\u00f5\1\125\1\uffff\1\125\2\uffff\1\125\1\u00f9\15\125\1\uffff\14\125\1\uffff\1\u0113\11\125\1\u011d\1\u011e\1\125\1\uffff\1\u0120\2\125\1\uffff\1\125\1\u0125\10\125\1\u012e\14\125\1\u013b\1\125\1\uffff\3\125\1\u0140\5\125\2\uffff\1\u0146\1\uffff\3\125\1\u014a\1\uffff\1\u014b\3\125\1\u014f\1\125\1\u0151\1\125\1\uffff\1\u0153\3\125\1\u0157\1\u0158\2\125\1\u015b\3\125\1\uffff\1\u015f\3\125\1\uffff\5\125\1\uffff\1\u0168\1\u0169\1\125\2\uffff\3\125\1\uffff\1\125\1\uffff\1\125\1\uffff\2\125\1\u0172\2\uffff\1\125\1\u0174\1\uffff\1\125\1\u0176\1\125\1\uffff\2\125\1\u017a\1\125\1\u017c\1\u017d\1\u017e\1\125\2\uffff\2\125\1\u0182\4\125\1\u0187\1\uffff\1\u0188\1\uffff\1\125\1\uffff\1\u018a\1\125\1\u018c\1\uffff\1\125\3\uffff\1\u018e\1\u018f\1\125\1\uffff\4\125\2\uffff\1\u0195\1\uffff\1\u0196\1\uffff\1\u0197\2\uffff\1\u0198\2\125\1\u019b\1\125\4\uffff\1\u019d\1\125\1\uffff\1\u019f\1\uffff\1\u01a0\2\uffff";
     static final String DFA21_eofS =
-        "\u0172\uffff";
+        "\u01a1\uffff";
     static final String DFA21_minS =
-        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\164\1\146\1\141\1\155\1\170\1\141\1\157\1\145\1\163\1\141\2\uffff\3\141\10\uffff\1\72\1\145\1\150\1\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\164\1\163\1\141\1\160\1\156\1\151\1\160\1\163\1\44\1\154\1\162\1\154\2\160\1\145\1\163\1\144\1\44\1\162\1\146\1\44\1\143\2\uffff\1\164\1\151\1\156\1\164\12\uffff\1\167\1\154\1\44\1\160\1\162\1\165\1\164\1\uffff\1\60\12\uffff\2\44\2\145\1\164\1\145\1\143\1\164\1\157\1\164\1\uffff\1\163\1\44\1\145\1\141\2\157\1\141\1\145\1\143\1\151\1\146\1\uffff\1\145\1\141\1\156\1\uffff\1\153\1\143\1\154\1\144\1\141\1\44\1\154\1\uffff\1\145\1\157\1\44\1\145\1\165\2\uffff\1\156\1\44\1\151\1\162\1\150\1\143\1\162\1\141\1\145\1\151\1\uffff\1\116\1\154\2\162\1\164\1\44\1\150\1\146\1\164\1\143\1\165\1\143\1\141\1\150\1\145\1\154\1\124\1\uffff\1\44\1\157\1\167\1\uffff\1\44\1\162\1\144\1\uffff\1\143\2\44\1\150\1\164\1\156\1\44\1\154\1\141\1\154\2\164\1\145\1\uffff\1\44\1\171\1\145\1\164\1\154\1\150\1\147\1\145\1\44\1\145\1\162\1\uffff\1\146\1\44\1\uffff\1\156\1\163\1\151\1\44\1\uffff\1\157\1\uffff\2\44\1\143\1\uffff\1\145\1\155\1\171\2\44\1\123\1\uffff\1\123\1\162\1\157\1\164\1\44\1\145\1\162\1\uffff\1\162\1\141\1\44\1\uffff\2\44\1\157\1\uffff\1\156\2\uffff\1\145\1\115\1\145\1\44\2\uffff\2\151\1\103\1\162\1\44\1\uffff\3\44\1\156\3\uffff\1\156\1\151\1\157\1\141\1\44\1\uffff\2\147\1\157\1\162\1\171\4\uffff\1\163\1\44\1\172\1\146\1\163\1\uffff\2\156\1\144\1\145\1\44\1\146\1\uffff\1\145\1\44\1\153\2\141\1\151\1\141\1\uffff\1\145\1\144\1\uffff\1\44\2\154\1\146\1\164\1\162\1\44\1\uffff\2\163\1\171\1\145\1\44\1\uffff\4\44\5\uffff";
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\141\1\146\1\141\1\155\1\170\1\141\1\157\1\150\1\141\2\uffff\3\141\1\72\1\163\10\uffff\2\145\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\164\1\163\1\141\1\156\1\161\1\164\1\150\1\151\1\156\1\160\1\163\1\44\1\154\1\151\1\162\1\154\2\160\1\143\1\156\1\145\1\162\1\160\1\165\1\144\1\164\1\151\2\uffff\1\162\1\151\1\146\1\44\1\156\1\165\1\157\1\163\2\uffff\2\44\10\uffff\1\167\1\154\1\44\1\164\1\uffff\1\60\12\uffff\2\44\2\145\1\164\1\145\1\144\2\165\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\144\1\44\1\145\1\141\2\157\1\141\1\153\1\144\1\163\1\162\1\157\1\145\1\44\1\145\1\156\1\153\1\143\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\156\1\145\1\143\2\uffff\1\44\1\154\1\uffff\1\165\2\uffff\1\156\1\44\1\151\1\162\1\141\1\145\1\162\1\144\1\143\1\150\1\162\1\141\1\145\1\141\1\151\1\uffff\1\116\1\154\2\162\1\154\2\141\1\150\1\144\1\163\1\167\1\157\1\uffff\1\44\1\145\1\154\1\150\1\145\1\143\1\171\1\165\2\154\2\44\1\150\1\uffff\1\44\1\162\1\144\1\uffff\1\143\1\44\1\171\1\156\1\144\1\165\1\150\1\162\1\164\1\156\1\44\1\171\1\154\1\141\1\154\2\164\1\154\1\147\1\171\1\154\1\141\1\144\1\44\1\146\1\uffff\1\163\1\171\1\145\1\44\1\164\1\101\1\154\1\145\1\171\2\uffff\1\44\1\uffff\1\156\1\163\1\151\1\44\1\uffff\1\44\1\164\1\141\1\154\1\44\1\157\1\44\1\143\1\uffff\1\44\1\145\1\155\1\171\2\44\2\145\1\44\2\171\1\141\1\uffff\1\44\1\144\1\117\1\162\1\uffff\1\157\2\164\1\162\1\101\1\uffff\2\44\1\157\2\uffff\1\151\1\171\1\145\1\uffff\1\156\1\uffff\1\145\1\uffff\1\115\1\145\1\44\2\uffff\1\154\1\44\1\uffff\1\117\1\44\1\171\1\uffff\1\141\1\156\1\44\1\162\3\44\1\164\2\uffff\1\156\1\141\1\44\1\106\1\151\1\157\1\141\1\44\1\uffff\1\44\1\uffff\1\156\1\uffff\1\44\1\171\1\44\1\uffff\1\171\3\uffff\2\44\1\154\1\uffff\1\157\1\172\1\146\1\163\2\uffff\1\44\1\uffff\1\44\1\uffff\1\44\2\uffff\1\44\1\162\1\145\1\44\1\153\4\uffff\1\44\1\144\1\uffff\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\141\1\170\1\171\1\156\1\157\1\155\1\170\1\162\2\157\1\163\1\141\2\uffff\1\150\2\141\10\uffff\1\72\1\165\1\171\1\145\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\1\164\1\163\1\141\1\160\1\156\1\151\1\160\1\163\1\172\1\154\1\162\1\156\2\160\1\145\1\164\1\144\1\172\1\162\1\146\1\172\1\143\2\uffff\1\164\1\151\1\156\1\164\12\uffff\1\167\1\154\1\172\1\160\1\162\1\171\1\164\1\uffff\1\154\12\uffff\2\172\2\145\1\164\1\145\1\143\1\164\1\157\1\164\1\uffff\1\163\1\172\1\145\1\141\2\157\1\141\1\145\1\143\1\151\1\146\1\uffff\1\145\1\141\1\156\1\uffff\1\153\1\143\1\154\1\144\1\141\1\172\1\154\1\uffff\1\145\1\157\1\172\1\145\1\165\2\uffff\1\156\1\172\1\151\1\162\1\150\1\143\1\162\1\141\1\145\1\151\1\uffff\1\116\1\154\2\162\1\164\1\172\1\150\1\146\1\164\1\143\1\165\1\143\1\141\1\150\1\145\1\154\1\124\1\uffff\1\172\1\157\1\167\1\uffff\1\172\1\162\1\163\1\uffff\1\143\2\172\1\150\1\164\1\156\1\172\1\154\1\141\1\154\2\164\1\145\1\uffff\1\172\1\171\1\145\1\164\1\154\1\150\1\147\1\145\1\172\1\145\1\162\1\uffff\1\146\1\172\1\uffff\1\156\1\163\1\151\1\172\1\uffff\1\157\1\uffff\2\172\1\143\1\uffff\1\145\1\155\1\171\2\172\1\123\1\uffff\1\123\1\162\1\157\1\164\1\172\1\145\1\162\1\uffff\1\162\1\141\1\172\1\uffff\2\172\1\157\1\uffff\1\156\2\uffff\1\145\1\115\1\145\1\172\2\uffff\2\151\1\115\1\162\1\172\1\uffff\3\172\1\156\3\uffff\1\156\1\151\1\157\1\141\1\172\1\uffff\2\147\1\157\1\162\1\171\4\uffff\1\163\2\172\1\146\1\163\1\uffff\2\156\1\144\1\145\1\172\1\146\1\uffff\1\145\1\172\1\153\2\141\1\151\1\141\1\uffff\1\145\1\144\1\uffff\1\172\2\154\1\146\1\164\1\162\1\172\1\uffff\2\163\1\171\1\145\1\172\1\uffff\4\172\5\uffff";
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\156\1\162\1\155\1\170\1\141\1\157\1\171\1\150\2\uffff\2\157\1\162\1\72\1\164\10\uffff\1\165\1\145\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\1\164\1\163\1\141\1\160\1\161\1\164\1\150\1\151\1\156\1\160\1\163\1\172\1\154\1\151\1\162\1\156\2\160\1\162\1\156\1\145\1\165\1\160\1\171\1\145\1\164\1\151\2\uffff\1\162\1\151\1\146\1\172\1\156\1\165\1\157\1\164\2\uffff\2\172\10\uffff\1\167\1\154\1\172\1\164\1\uffff\1\154\12\uffff\2\172\2\145\1\164\1\145\1\144\2\165\1\145\1\164\1\143\1\157\1\164\1\uffff\1\163\1\144\1\172\1\145\1\141\2\157\1\141\1\153\1\164\1\163\1\162\1\157\1\145\1\172\1\145\1\156\1\153\1\143\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\156\1\145\1\143\2\uffff\1\172\1\154\1\uffff\1\165\2\uffff\1\156\1\172\1\151\1\162\1\141\1\145\1\162\1\144\1\143\1\150\1\162\1\141\1\145\1\141\1\151\1\uffff\1\116\1\154\2\162\1\154\2\141\1\150\1\144\1\163\1\167\1\157\1\uffff\1\172\1\145\1\154\1\150\1\145\1\143\1\171\1\165\2\154\2\172\1\150\1\uffff\1\172\1\162\1\163\1\uffff\1\143\1\172\1\171\1\156\1\144\1\165\1\150\1\162\1\164\1\156\1\172\1\171\1\154\1\141\1\154\2\164\1\154\1\147\1\171\1\154\1\141\1\144\1\172\1\146\1\uffff\1\163\1\171\1\145\1\172\1\164\1\101\1\154\1\145\1\171\2\uffff\1\172\1\uffff\1\156\1\163\1\151\1\172\1\uffff\1\172\1\164\1\141\1\154\1\172\1\157\1\172\1\143\1\uffff\1\172\1\145\1\155\1\171\2\172\2\145\1\172\2\171\1\141\1\uffff\1\172\1\144\1\117\1\162\1\uffff\1\157\2\164\1\162\1\101\1\uffff\2\172\1\157\2\uffff\1\151\1\171\1\145\1\uffff\1\156\1\uffff\1\145\1\uffff\1\115\1\145\1\172\2\uffff\1\154\1\172\1\uffff\1\117\1\172\1\171\1\uffff\1\141\1\156\1\172\1\162\3\172\1\164\2\uffff\1\156\1\141\1\172\1\106\1\151\1\157\1\141\1\172\1\uffff\1\172\1\uffff\1\156\1\uffff\1\172\1\171\1\172\1\uffff\1\171\3\uffff\2\172\1\154\1\uffff\1\157\1\172\1\146\1\163\2\uffff\1\172\1\uffff\1\172\1\uffff\1\172\2\uffff\1\172\1\162\1\145\1\172\1\153\4\uffff\1\172\1\144\1\uffff\1\172\1\uffff\1\172\2\uffff";
     static final String DFA21_acceptS =
-        "\32\uffff\1\60\1\61\3\uffff\1\71\1\72\1\73\1\74\1\75\1\76\1\77\1\100\7\uffff\1\137\2\140\1\143\1\144\1\uffff\1\23\1\1\1\2\1\131\1\3\1\125\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\141\1\142\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16\1\24\1\17\1\uffff\1\37\1\25\1\130\1\124\1\uffff\1\137\26\uffff\1\60\1\61\4\uffff\1\71\1\72\1\73\1\74\1\75\1\76\1\77\1\100\1\127\1\106\7\uffff\1\134\1\uffff\1\135\1\136\1\140\1\143\1\13\1\11\1\14\1\12\1\21\1\22\12\uffff\1\103\13\uffff\1\112\3\uffff\1\102\7\uffff\1\126\5\uffff\1\40\1\132\12\uffff\1\64\21\uffff\1\113\3\uffff\1\120\3\uffff\1\104\15\uffff\1\110\13\uffff\1\114\2\uffff\1\133\4\uffff\1\45\1\uffff\1\55\3\uffff\1\46\6\uffff\1\123\7\uffff\1\111\3\uffff\1\116\3\uffff\1\42\1\uffff\1\105\1\43\4\uffff\1\47\1\50\5\uffff\1\56\4\uffff\1\115\1\117\1\41\5\uffff\1\121\5\uffff\1\107\1\57\1\62\1\65\5\uffff\1\70\6\uffff\1\44\7\uffff\1\63\2\uffff\1\101\7\uffff\1\66\5\uffff\1\122\4\uffff\1\67\1\51\1\52\1\53\1\54";
+        "\31\uffff\1\63\1\64\5\uffff\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111\5\uffff\1\150\2\151\1\154\1\155\1\uffff\1\23\1\1\1\2\1\142\1\3\1\136\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\152\1\153\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\141\1\135\1\uffff\1\150\33\uffff\1\63\1\64\10\uffff\1\140\1\75\2\uffff\1\102\1\103\1\104\1\105\1\106\1\107\1\110\1\111\4\uffff\1\145\1\uffff\1\146\1\147\1\151\1\154\1\13\1\11\1\14\1\12\1\21\1\22\16\uffff\1\114\27\uffff\1\123\5\uffff\1\77\1\113\2\uffff\1\137\1\uffff\1\40\1\143\17\uffff\1\121\14\uffff\1\131\15\uffff\1\124\3\uffff\1\115\31\uffff\1\144\11\uffff\1\72\1\120\1\uffff\1\125\4\uffff\1\45\10\uffff\1\46\14\uffff\1\127\4\uffff\1\122\5\uffff\1\134\3\uffff\1\42\1\53\3\uffff\1\116\1\uffff\1\43\1\uffff\1\60\3\uffff\1\47\1\50\2\uffff\1\54\3\uffff\1\126\10\uffff\1\130\1\41\10\uffff\1\132\1\uffff\1\62\1\uffff\1\55\3\uffff\1\65\1\uffff\1\74\1\117\1\67\3\uffff\1\61\4\uffff\1\101\1\52\1\uffff\1\57\1\uffff\1\76\1\uffff\1\73\1\44\5\uffff\1\100\1\56\1\66\1\51\2\uffff\1\112\1\uffff\1\71\1\uffff\1\70\1\133";
     static final String DFA21_specialS =
-        "\1\0\u0171\uffff}>";
+        "\1\0\u01a0\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\62\2\61\2\62\1\61\22\62\1\61\1\11\1\57\1\45\1\56\1\10\1\3\1\60\1\41\1\42\1\6\1\4\1\43\1\5\1\14\1\7\1\53\11\54\1\47\1\37\1\13\1\1\1\12\1\15\1\40\3\56\1\36\1\24\3\56\1\23\21\56\1\46\1\62\1\44\1\55\1\56\1\62\1\30\1\56\1\25\1\27\1\17\1\22\1\56\1\35\1\21\3\56\1\26\1\50\1\56\1\31\1\56\1\52\1\20\1\51\1\56\1\16\1\34\3\56\1\32\1\2\1\33\uff82\62",
-            "\1\63\1\64",
-            "\1\66",
-            "\1\70",
-            "\1\73\21\uffff\1\72",
-            "\1\77\17\uffff\1\75\1\76",
-            "\1\102\22\uffff\1\101",
-            "\1\105\4\uffff\1\106\15\uffff\1\104",
-            "\1\110",
-            "\1\112",
-            "\1\114",
-            "\1\116",
-            "\1\120",
-            "\1\123\13\uffff\1\122",
-            "\1\125",
-            "\1\130\13\uffff\1\127",
-            "\1\131\1\132\1\uffff\1\134\1\uffff\1\133",
-            "\1\137\6\uffff\1\135\1\136",
-            "\1\140\7\uffff\1\142\5\uffff\1\141",
-            "\1\143",
-            "\1\144",
-            "\1\146\20\uffff\1\145",
+            "\11\61\2\60\2\61\1\60\22\61\1\60\1\11\1\56\1\46\1\55\1\10\1\3\1\57\1\42\1\43\1\6\1\4\1\44\1\5\1\14\1\7\1\52\11\53\1\36\1\40\1\13\1\1\1\12\1\15\1\41\4\55\1\24\3\55\1\23\21\55\1\47\1\61\1\45\1\54\1\55\1\61\1\37\1\55\1\35\1\33\1\17\1\22\1\55\1\34\1\21\3\55\1\26\1\50\1\55\1\25\1\55\1\51\1\20\1\27\1\55\1\16\1\30\3\55\1\31\1\2\1\32\uff82\61",
+            "\1\62\1\63",
+            "\1\65",
+            "\1\67",
+            "\1\72\21\uffff\1\71",
+            "\1\76\17\uffff\1\74\1\75",
+            "\1\101\22\uffff\1\100",
+            "\1\104\4\uffff\1\105\15\uffff\1\103",
+            "\1\107",
+            "\1\111",
+            "\1\113",
+            "\1\115",
+            "\1\117",
+            "\1\122\13\uffff\1\121",
+            "\1\124",
+            "\1\127\13\uffff\1\126",
+            "\1\133\1\uffff\1\134\1\uffff\1\132\16\uffff\1\130\1\131\1\uffff\1\135\1\uffff\1\136",
+            "\1\141\6\uffff\1\137\1\140",
+            "\1\142\7\uffff\1\145\5\uffff\1\144\2\uffff\1\143",
+            "\1\146",
             "\1\147",
-            "\1\152\3\uffff\1\151\5\uffff\1\150",
-            "\1\153",
-            "\1\154",
+            "\1\150",
+            "\1\151",
+            "\1\153\11\uffff\1\155\2\uffff\1\152\3\uffff\1\154",
+            "\1\157\3\uffff\1\156\2\uffff\1\160",
             "",
             "",
-            "\1\157\6\uffff\1\160",
-            "\1\161",
-            "\1\162",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\164\3\uffff\1\165\3\uffff\1\163\5\uffff\1\166",
+            "\1\167\15\uffff\1\170",
+            "\1\172\20\uffff\1\171",
             "\1\173",
-            "\1\175\15\uffff\1\177\1\uffff\1\176",
-            "\1\u0081\11\uffff\1\u0082\6\uffff\1\u0080",
-            "\1\u0083",
-            "\12\u0085\10\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\13\uffff\1\u0084\6\uffff\1\u0085\2\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\13\uffff\1\u0084",
-            "\12\u0085\10\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\22\uffff\1\u0085\2\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087",
-            "\1\126\34\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\176\1\175",
             "",
             "",
             "",
             "",
             "",
+            "",
+            "",
+            "",
+            "\1\u0087\15\uffff\1\u0089\1\uffff\1\u0088",
             "\1\u008a",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b\6\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "\1\125\34\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0091",
             "",
             "",
             "",
@@ -3655,300 +3932,348 @@
             "",
             "",
             "",
-            "\1\u008c",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u008e",
-            "",
-            "",
-            "",
-            "",
-            "\1\u0090\5\uffff\1\u0091",
-            "",
-            "\1\u0092",
             "\1\u0093",
-            "\1\u0094",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u0095",
-            "\1\u0096",
-            "\1\u0097",
-            "\1\u0098",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0097\5\uffff\1\u0098",
+            "",
             "\1\u0099",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u009a",
             "\1\u009b",
-            "\1\u009c",
-            "\1\u009d\1\uffff\1\u009e",
+            "\1\u009d\1\uffff\1\u009c",
+            "\1\u009e",
             "\1\u009f",
             "\1\u00a0",
             "\1\u00a1",
-            "\1\u00a2\1\u00a3",
+            "\1\u00a2",
+            "\1\u00a3",
             "\1\u00a4",
-            "\1\126\13\uffff\12\126\7\uffff\1\u00a5\31\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u00a6",
             "\1\u00a7",
             "\1\u00a8",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\30\126\1\u00a9\1\126",
+            "\1\u00a9\1\uffff\1\u00aa",
             "\1\u00ab",
-            "",
-            "",
             "\1\u00ac",
-            "\1\u00ad",
-            "\1\u00ae",
+            "\1\u00ae\16\uffff\1\u00ad",
             "\1\u00af",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00b0",
-            "\1\u00b1",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u00b2\2\uffff\1\u00b1",
             "\1\u00b3",
-            "\1\u00b4",
-            "\1\u00b6\3\uffff\1\u00b5",
-            "\1\u00b7",
-            "",
-            "\12\u0085\10\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\22\uffff\1\u0085\2\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087",
+            "\1\u00b5\3\uffff\1\u00b4",
+            "\1\u00b6\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
             "",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
             "\1\u00ba",
             "\1\u00bb",
             "\1\u00bc",
-            "\1\u00bd",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00be",
             "\1\u00bf",
             "\1\u00c0",
-            "\1\u00c1",
+            "\1\u00c1\1\u00c2",
             "",
-            "\1\u00c2",
-            "\1\126\13\uffff\12\126\7\uffff\5\126\1\u00c3\24\126\4\uffff\1\126\1\uffff\32\126",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00c5",
             "\1\u00c6",
-            "\1\u00c7",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00c8",
-            "\1\u00c9",
-            "\1\u00ca",
+            "",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00cb",
             "\1\u00cc",
             "\1\u00cd",
-            "",
             "\1\u00ce",
             "\1\u00cf",
             "\1\u00d0",
-            "",
             "\1\u00d1",
             "\1\u00d2",
             "\1\u00d3",
             "\1\u00d4",
             "\1\u00d5",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\u00d7",
+            "\1\u00d6",
             "",
+            "\1\u00d7",
             "\1\u00d8",
-            "\1\u00d9",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\125\13\uffff\12\125\7\uffff\5\125\1\u00d9\24\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00db",
             "\1\u00dc",
-            "",
-            "",
             "\1\u00dd",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u00de",
             "\1\u00df",
             "\1\u00e0",
-            "\1\u00e1",
-            "\1\u00e2",
+            "\1\u00e1\17\uffff\1\u00e2",
             "\1\u00e3",
             "\1\u00e4",
             "\1\u00e5",
             "\1\u00e6",
-            "",
-            "\1\u00e7",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00e8",
             "\1\u00e9",
             "\1\u00ea",
             "\1\u00eb",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u00ec",
             "\1\u00ed",
             "\1\u00ee",
             "\1\u00ef",
+            "",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
             "\1\u00f3",
             "\1\u00f4",
-            "\1\u00f5",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00f6",
+            "",
             "\1\u00f7",
             "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\u00f9",
+            "",
+            "\1\u00f8",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u00fa",
-            "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u00fb",
             "\1\u00fc",
-            "\1\u00fd\16\uffff\1\u00fe",
-            "",
+            "\1\u00fd",
+            "\1\u00fe",
             "\1\u00ff",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\21\126\1\u0101\10\126",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
             "\1\u0103",
             "\1\u0104",
             "\1\u0105",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u0106",
+            "",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
             "\1\u010a",
             "\1\u010b",
             "\1\u010c",
-            "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u010d",
             "\1\u010e",
             "\1\u010f",
             "\1\u0110",
             "\1\u0111",
             "\1\u0112",
-            "\1\u0113",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0114",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u0115",
             "\1\u0116",
             "\1\u0117",
-            "",
             "\1\u0118",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "",
+            "\1\u0119",
             "\1\u011a",
             "\1\u011b",
             "\1\u011c",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u011f",
             "",
-            "\1\u011e",
-            "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0121",
+            "\1\u0122\16\uffff\1\u0123",
             "",
-            "\1\u0122",
-            "\1\u0123",
             "\1\u0124",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0126",
             "\1\u0127",
-            "",
             "\1\u0128",
             "\1\u0129",
             "\1\u012a",
             "\1\u012b",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u012c",
             "\1\u012d",
-            "\1\u012e",
-            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u012f",
             "\1\u0130",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
             "\1\u0134",
-            "",
             "\1\u0135",
-            "",
-            "",
             "\1\u0136",
             "\1\u0137",
             "\1\u0138",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "",
-            "",
+            "\1\u0139",
             "\1\u013a",
-            "\1\u013b",
-            "\1\u013d\11\uffff\1\u013c",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u013c",
+            "",
+            "\1\u013d",
             "\1\u013e",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u013f",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0141",
+            "\1\u0142",
             "\1\u0143",
-            "",
-            "",
-            "",
             "\1\u0144",
             "\1\u0145",
-            "\1\u0146",
-            "\1\u0147",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
             "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\u0147",
+            "\1\u0148",
             "\1\u0149",
-            "\1\u014a",
-            "\1\u014b",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u014c",
             "\1\u014d",
-            "",
-            "",
-            "",
-            "",
             "\1\u014e",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0150",
-            "\1\u0151",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0152",
             "",
-            "\1\u0153",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0154",
             "\1\u0155",
             "\1\u0156",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\u0158",
-            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0159",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\u015b",
+            "\1\u015a",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u015c",
             "\1\u015d",
             "\1\u015e",
-            "\1\u015f",
             "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u0160",
             "\1\u0161",
+            "\1\u0162",
             "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
             "\1\u0163",
             "\1\u0164",
             "\1\u0165",
             "\1\u0166",
             "\1\u0167",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
             "",
-            "\1\u0169",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "\1\u016a",
+            "",
+            "",
             "\1\u016b",
             "\1\u016c",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u016d",
             "",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
-            "\1\126\13\uffff\12\126\7\uffff\32\126\4\uffff\1\126\1\uffff\32\126",
+            "\1\u016e",
+            "",
+            "\1\u016f",
+            "",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "\1\u0173",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\u0175",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0177",
+            "",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u017b",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u017f",
+            "",
+            "",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\u0189",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u018b",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\u018d",
             "",
             "",
             "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0190",
+            "",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u019c",
+            "",
+            "",
+            "",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "\1\u019e",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
+            "",
+            "\1\125\13\uffff\12\125\7\uffff\32\125\4\uffff\1\125\1\uffff\32\125",
             "",
             ""
     };
@@ -3983,7 +4308,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
@@ -4033,65 +4358,63 @@
 
                         else if ( (LA21_0=='E') ) {s = 20;}
 
-                        else if ( (LA21_0=='c') ) {s = 21;}
+                        else if ( (LA21_0=='p') ) {s = 21;}
 
                         else if ( (LA21_0=='m') ) {s = 22;}
 
-                        else if ( (LA21_0=='d') ) {s = 23;}
+                        else if ( (LA21_0=='t') ) {s = 23;}
 
-                        else if ( (LA21_0=='a') ) {s = 24;}
+                        else if ( (LA21_0=='w') ) {s = 24;}
 
-                        else if ( (LA21_0=='p') ) {s = 25;}
+                        else if ( (LA21_0=='{') ) {s = 25;}
 
-                        else if ( (LA21_0=='{') ) {s = 26;}
+                        else if ( (LA21_0=='}') ) {s = 26;}
 
-                        else if ( (LA21_0=='}') ) {s = 27;}
+                        else if ( (LA21_0=='d') ) {s = 27;}
 
-                        else if ( (LA21_0=='w') ) {s = 28;}
+                        else if ( (LA21_0=='h') ) {s = 28;}
 
-                        else if ( (LA21_0=='h') ) {s = 29;}
+                        else if ( (LA21_0=='c') ) {s = 29;}
 
-                        else if ( (LA21_0=='D') ) {s = 30;}
+                        else if ( (LA21_0==':') ) {s = 30;}
 
-                        else if ( (LA21_0==';') ) {s = 31;}
+                        else if ( (LA21_0=='a') ) {s = 31;}
 
-                        else if ( (LA21_0=='@') ) {s = 32;}
+                        else if ( (LA21_0==';') ) {s = 32;}
 
-                        else if ( (LA21_0=='(') ) {s = 33;}
+                        else if ( (LA21_0=='@') ) {s = 33;}
 
-                        else if ( (LA21_0==')') ) {s = 34;}
+                        else if ( (LA21_0=='(') ) {s = 34;}
 
-                        else if ( (LA21_0==',') ) {s = 35;}
+                        else if ( (LA21_0==')') ) {s = 35;}
 
-                        else if ( (LA21_0==']') ) {s = 36;}
+                        else if ( (LA21_0==',') ) {s = 36;}
 
-                        else if ( (LA21_0=='#') ) {s = 37;}
+                        else if ( (LA21_0==']') ) {s = 37;}
 
-                        else if ( (LA21_0=='[') ) {s = 38;}
+                        else if ( (LA21_0=='#') ) {s = 38;}
 
-                        else if ( (LA21_0==':') ) {s = 39;}
+                        else if ( (LA21_0=='[') ) {s = 39;}
 
                         else if ( (LA21_0=='n') ) {s = 40;}
 
-                        else if ( (LA21_0=='t') ) {s = 41;}
+                        else if ( (LA21_0=='r') ) {s = 41;}
 
-                        else if ( (LA21_0=='r') ) {s = 42;}
+                        else if ( (LA21_0=='0') ) {s = 42;}
 
-                        else if ( (LA21_0=='0') ) {s = 43;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 43;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 44;}
+                        else if ( (LA21_0=='^') ) {s = 44;}
 
-                        else if ( (LA21_0=='^') ) {s = 45;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='D')||(LA21_0>='F' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 45;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='C')||(LA21_0>='F' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 46;}
+                        else if ( (LA21_0=='\"') ) {s = 46;}
 
-                        else if ( (LA21_0=='\"') ) {s = 47;}
+                        else if ( (LA21_0=='\'') ) {s = 47;}
 
-                        else if ( (LA21_0=='\'') ) {s = 48;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 48;}
 
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 49;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 50;}
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 49;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java
index ee8c3c7..f15fe03 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src-gen/org/eclipse/osbp/xtext/signal/ide/contentassist/antlr/internal/InternalSignalDSLParser.java
@@ -25,9 +25,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -38,7 +40,7 @@
 @SuppressWarnings("all")
 public class InternalSignalDSLParser extends AbstractInternalContentAssistParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'Import'", "'Export'", "'createSignals'", "'modifySignals'", "'doAfterModify'", "'doAfterCreate'", "'synch'", "'asynch'", "'package'", "'{'", "'}'", "'watcher'", "'directory'", "'for'", "'handler'", "'forFileMask'", "'DataTransfer'", "'fileName'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'Import'", "'Export'", "'sequential'", "'parallel'", "'sunday'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'", "'package'", "'{'", "'}'", "'watcher'", "'directory'", "'handler'", "'forFileMask'", "'scheduleFor'", "'cron'", "'hourlyAt'", "'dailyAt'", "':'", "'weeklyOn'", "'at'", "'monthlyOn'", "'fileName'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
     };
     public static final int RULE_HEX=5;
     public static final int T__50=50;
@@ -129,18 +131,27 @@
     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__111=111;
     public static final int T__81=81;
+    public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
+    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
+    public static final int T__108=108;
     public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
     public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -517,23 +528,23 @@
     // $ANTLR end "ruleSignalHandler"
 
 
-    // $ANTLR start "entryRuleDataTransfer"
-    // InternalSignalDSL.g:167:1: entryRuleDataTransfer : ruleDataTransfer EOF ;
-    public final void entryRuleDataTransfer() throws RecognitionException {
+    // $ANTLR start "entryRuleTriggerPolicy"
+    // InternalSignalDSL.g:167:1: entryRuleTriggerPolicy : ruleTriggerPolicy EOF ;
+    public final void entryRuleTriggerPolicy() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:168:1: ( ruleDataTransfer EOF )
-            // InternalSignalDSL.g:169:1: ruleDataTransfer EOF
+            // InternalSignalDSL.g:168:1: ( ruleTriggerPolicy EOF )
+            // InternalSignalDSL.g:169:1: ruleTriggerPolicy EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataTransferRule()); 
+               before(grammarAccess.getTriggerPolicyRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleDataTransfer();
+            ruleTriggerPolicy();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataTransferRule()); 
+               after(grammarAccess.getTriggerPolicyRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -548,30 +559,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleDataTransfer"
+    // $ANTLR end "entryRuleTriggerPolicy"
 
 
-    // $ANTLR start "ruleDataTransfer"
-    // InternalSignalDSL.g:176:1: ruleDataTransfer : ( ( rule__DataTransfer__Alternatives ) ) ;
-    public final void ruleDataTransfer() throws RecognitionException {
+    // $ANTLR start "ruleTriggerPolicy"
+    // InternalSignalDSL.g:176:1: ruleTriggerPolicy : ( ( rule__TriggerPolicy__Alternatives ) ) ;
+    public final void ruleTriggerPolicy() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:180:2: ( ( ( rule__DataTransfer__Alternatives ) ) )
-            // InternalSignalDSL.g:181:2: ( ( rule__DataTransfer__Alternatives ) )
+            // InternalSignalDSL.g:180:2: ( ( ( rule__TriggerPolicy__Alternatives ) ) )
+            // InternalSignalDSL.g:181:2: ( ( rule__TriggerPolicy__Alternatives ) )
             {
-            // InternalSignalDSL.g:181:2: ( ( rule__DataTransfer__Alternatives ) )
-            // InternalSignalDSL.g:182:3: ( rule__DataTransfer__Alternatives )
+            // InternalSignalDSL.g:181:2: ( ( rule__TriggerPolicy__Alternatives ) )
+            // InternalSignalDSL.g:182:3: ( rule__TriggerPolicy__Alternatives )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getDataTransferAccess().getAlternatives()); 
+               before(grammarAccess.getTriggerPolicyAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:183:3: ( rule__DataTransfer__Alternatives )
-            // InternalSignalDSL.g:183:4: rule__DataTransfer__Alternatives
+            // InternalSignalDSL.g:183:3: ( rule__TriggerPolicy__Alternatives )
+            // InternalSignalDSL.g:183:4: rule__TriggerPolicy__Alternatives
             {
             pushFollow(FOLLOW_2);
-            rule__DataTransfer__Alternatives();
+            rule__TriggerPolicy__Alternatives();
 
             state._fsp--;
             if (state.failed) return ;
@@ -579,7 +590,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getDataTransferAccess().getAlternatives()); 
+               after(grammarAccess.getTriggerPolicyAccess().getAlternatives()); 
             }
 
             }
@@ -599,26 +610,26 @@
         }
         return ;
     }
-    // $ANTLR end "ruleDataTransfer"
+    // $ANTLR end "ruleTriggerPolicy"
 
 
-    // $ANTLR start "entryRuleListTransfer"
-    // InternalSignalDSL.g:192:1: entryRuleListTransfer : ruleListTransfer EOF ;
-    public final void entryRuleListTransfer() throws RecognitionException {
+    // $ANTLR start "entryRuleTriggerFile"
+    // InternalSignalDSL.g:192:1: entryRuleTriggerFile : ruleTriggerFile EOF ;
+    public final void entryRuleTriggerFile() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:193:1: ( ruleListTransfer EOF )
-            // InternalSignalDSL.g:194:1: ruleListTransfer EOF
+            // InternalSignalDSL.g:193:1: ( ruleTriggerFile EOF )
+            // InternalSignalDSL.g:194:1: ruleTriggerFile EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferRule()); 
+               before(grammarAccess.getTriggerFileRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleListTransfer();
+            ruleTriggerFile();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferRule()); 
+               after(grammarAccess.getTriggerFileRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -633,30 +644,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleListTransfer"
+    // $ANTLR end "entryRuleTriggerFile"
 
 
-    // $ANTLR start "ruleListTransfer"
-    // InternalSignalDSL.g:201:1: ruleListTransfer : ( ( rule__ListTransfer__Group__0 ) ) ;
-    public final void ruleListTransfer() throws RecognitionException {
+    // $ANTLR start "ruleTriggerFile"
+    // InternalSignalDSL.g:201:1: ruleTriggerFile : ( ( rule__TriggerFile__Group__0 ) ) ;
+    public final void ruleTriggerFile() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:205:2: ( ( ( rule__ListTransfer__Group__0 ) ) )
-            // InternalSignalDSL.g:206:2: ( ( rule__ListTransfer__Group__0 ) )
+            // InternalSignalDSL.g:205:2: ( ( ( rule__TriggerFile__Group__0 ) ) )
+            // InternalSignalDSL.g:206:2: ( ( rule__TriggerFile__Group__0 ) )
             {
-            // InternalSignalDSL.g:206:2: ( ( rule__ListTransfer__Group__0 ) )
-            // InternalSignalDSL.g:207:3: ( rule__ListTransfer__Group__0 )
+            // InternalSignalDSL.g:206:2: ( ( rule__TriggerFile__Group__0 ) )
+            // InternalSignalDSL.g:207:3: ( rule__TriggerFile__Group__0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getGroup()); 
+               before(grammarAccess.getTriggerFileAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:208:3: ( rule__ListTransfer__Group__0 )
-            // InternalSignalDSL.g:208:4: rule__ListTransfer__Group__0
+            // InternalSignalDSL.g:208:3: ( rule__TriggerFile__Group__0 )
+            // InternalSignalDSL.g:208:4: rule__TriggerFile__Group__0
             {
             pushFollow(FOLLOW_2);
-            rule__ListTransfer__Group__0();
+            rule__TriggerFile__Group__0();
 
             state._fsp--;
             if (state.failed) return ;
@@ -664,7 +675,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getGroup()); 
+               after(grammarAccess.getTriggerFileAccess().getGroup()); 
             }
 
             }
@@ -684,26 +695,26 @@
         }
         return ;
     }
-    // $ANTLR end "ruleListTransfer"
+    // $ANTLR end "ruleTriggerFile"
 
 
-    // $ANTLR start "entryRuleSingleTransfer"
-    // InternalSignalDSL.g:217:1: entryRuleSingleTransfer : ruleSingleTransfer EOF ;
-    public final void entryRuleSingleTransfer() throws RecognitionException {
+    // $ANTLR start "entryRuleSignalScheduler"
+    // InternalSignalDSL.g:217:1: entryRuleSignalScheduler : ruleSignalScheduler EOF ;
+    public final void entryRuleSignalScheduler() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:218:1: ( ruleSingleTransfer EOF )
-            // InternalSignalDSL.g:219:1: ruleSingleTransfer EOF
+            // InternalSignalDSL.g:218:1: ( ruleSignalScheduler EOF )
+            // InternalSignalDSL.g:219:1: ruleSignalScheduler EOF
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSingleTransferRule()); 
+               before(grammarAccess.getSignalSchedulerRule()); 
             }
             pushFollow(FOLLOW_1);
-            ruleSingleTransfer();
+            ruleSignalScheduler();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSingleTransferRule()); 
+               after(grammarAccess.getSignalSchedulerRule()); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return ;
 
@@ -718,30 +729,30 @@
         }
         return ;
     }
-    // $ANTLR end "entryRuleSingleTransfer"
+    // $ANTLR end "entryRuleSignalScheduler"
 
 
-    // $ANTLR start "ruleSingleTransfer"
-    // InternalSignalDSL.g:226:1: ruleSingleTransfer : ( ( rule__SingleTransfer__InterchangeAssignment ) ) ;
-    public final void ruleSingleTransfer() throws RecognitionException {
+    // $ANTLR start "ruleSignalScheduler"
+    // InternalSignalDSL.g:226:1: ruleSignalScheduler : ( ( rule__SignalScheduler__Group__0 ) ) ;
+    public final void ruleSignalScheduler() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:230:2: ( ( ( rule__SingleTransfer__InterchangeAssignment ) ) )
-            // InternalSignalDSL.g:231:2: ( ( rule__SingleTransfer__InterchangeAssignment ) )
+            // InternalSignalDSL.g:230:2: ( ( ( rule__SignalScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:231:2: ( ( rule__SignalScheduler__Group__0 ) )
             {
-            // InternalSignalDSL.g:231:2: ( ( rule__SingleTransfer__InterchangeAssignment ) )
-            // InternalSignalDSL.g:232:3: ( rule__SingleTransfer__InterchangeAssignment )
+            // InternalSignalDSL.g:231:2: ( ( rule__SignalScheduler__Group__0 ) )
+            // InternalSignalDSL.g:232:3: ( rule__SignalScheduler__Group__0 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSingleTransferAccess().getInterchangeAssignment()); 
+               before(grammarAccess.getSignalSchedulerAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:233:3: ( rule__SingleTransfer__InterchangeAssignment )
-            // InternalSignalDSL.g:233:4: rule__SingleTransfer__InterchangeAssignment
+            // InternalSignalDSL.g:233:3: ( rule__SignalScheduler__Group__0 )
+            // InternalSignalDSL.g:233:4: rule__SignalScheduler__Group__0
             {
             pushFollow(FOLLOW_2);
-            rule__SingleTransfer__InterchangeAssignment();
+            rule__SignalScheduler__Group__0();
 
             state._fsp--;
             if (state.failed) return ;
@@ -749,7 +760,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSingleTransferAccess().getInterchangeAssignment()); 
+               after(grammarAccess.getSignalSchedulerAccess().getGroup()); 
             }
 
             }
@@ -769,15 +780,525 @@
         }
         return ;
     }
-    // $ANTLR end "ruleSingleTransfer"
+    // $ANTLR end "ruleSignalScheduler"
+
+
+    // $ANTLR start "entryRuleScheduler"
+    // InternalSignalDSL.g:242:1: entryRuleScheduler : ruleScheduler EOF ;
+    public final void entryRuleScheduler() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:243:1: ( ruleScheduler EOF )
+            // InternalSignalDSL.g:244:1: ruleScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleScheduler();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSchedulerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleScheduler"
+
+
+    // $ANTLR start "ruleScheduler"
+    // InternalSignalDSL.g:251:1: ruleScheduler : ( ( rule__Scheduler__Alternatives ) ) ;
+    public final void ruleScheduler() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:255:2: ( ( ( rule__Scheduler__Alternatives ) ) )
+            // InternalSignalDSL.g:256:2: ( ( rule__Scheduler__Alternatives ) )
+            {
+            // InternalSignalDSL.g:256:2: ( ( rule__Scheduler__Alternatives ) )
+            // InternalSignalDSL.g:257:3: ( rule__Scheduler__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSchedulerAccess().getAlternatives()); 
+            }
+            // InternalSignalDSL.g:258:3: ( rule__Scheduler__Alternatives )
+            // InternalSignalDSL.g:258:4: rule__Scheduler__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__Scheduler__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSchedulerAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleScheduler"
+
+
+    // $ANTLR start "entryRuleCronScheduler"
+    // InternalSignalDSL.g:267:1: entryRuleCronScheduler : ruleCronScheduler EOF ;
+    public final void entryRuleCronScheduler() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:268:1: ( ruleCronScheduler EOF )
+            // InternalSignalDSL.g:269:1: ruleCronScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCronSchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCronScheduler();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCronSchedulerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCronScheduler"
+
+
+    // $ANTLR start "ruleCronScheduler"
+    // InternalSignalDSL.g:276:1: ruleCronScheduler : ( ( rule__CronScheduler__Group__0 ) ) ;
+    public final void ruleCronScheduler() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:280:2: ( ( ( rule__CronScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:281:2: ( ( rule__CronScheduler__Group__0 ) )
+            {
+            // InternalSignalDSL.g:281:2: ( ( rule__CronScheduler__Group__0 ) )
+            // InternalSignalDSL.g:282:3: ( rule__CronScheduler__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCronSchedulerAccess().getGroup()); 
+            }
+            // InternalSignalDSL.g:283:3: ( rule__CronScheduler__Group__0 )
+            // InternalSignalDSL.g:283:4: rule__CronScheduler__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CronScheduler__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCronSchedulerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCronScheduler"
+
+
+    // $ANTLR start "entryRuleHourlyScheduler"
+    // InternalSignalDSL.g:292:1: entryRuleHourlyScheduler : ruleHourlyScheduler EOF ;
+    public final void entryRuleHourlyScheduler() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:293:1: ( ruleHourlyScheduler EOF )
+            // InternalSignalDSL.g:294:1: ruleHourlyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getHourlySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleHourlyScheduler();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getHourlySchedulerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleHourlyScheduler"
+
+
+    // $ANTLR start "ruleHourlyScheduler"
+    // InternalSignalDSL.g:301:1: ruleHourlyScheduler : ( ( rule__HourlyScheduler__Group__0 ) ) ;
+    public final void ruleHourlyScheduler() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:305:2: ( ( ( rule__HourlyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:306:2: ( ( rule__HourlyScheduler__Group__0 ) )
+            {
+            // InternalSignalDSL.g:306:2: ( ( rule__HourlyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:307:3: ( rule__HourlyScheduler__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getHourlySchedulerAccess().getGroup()); 
+            }
+            // InternalSignalDSL.g:308:3: ( rule__HourlyScheduler__Group__0 )
+            // InternalSignalDSL.g:308:4: rule__HourlyScheduler__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__HourlyScheduler__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getHourlySchedulerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleHourlyScheduler"
+
+
+    // $ANTLR start "entryRuleDailyScheduler"
+    // InternalSignalDSL.g:317:1: entryRuleDailyScheduler : ruleDailyScheduler EOF ;
+    public final void entryRuleDailyScheduler() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:318:1: ( ruleDailyScheduler EOF )
+            // InternalSignalDSL.g:319:1: ruleDailyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleDailyScheduler();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleDailyScheduler"
+
+
+    // $ANTLR start "ruleDailyScheduler"
+    // InternalSignalDSL.g:326:1: ruleDailyScheduler : ( ( rule__DailyScheduler__Group__0 ) ) ;
+    public final void ruleDailyScheduler() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:330:2: ( ( ( rule__DailyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:331:2: ( ( rule__DailyScheduler__Group__0 ) )
+            {
+            // InternalSignalDSL.g:331:2: ( ( rule__DailyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:332:3: ( rule__DailyScheduler__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerAccess().getGroup()); 
+            }
+            // InternalSignalDSL.g:333:3: ( rule__DailyScheduler__Group__0 )
+            // InternalSignalDSL.g:333:4: rule__DailyScheduler__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__DailyScheduler__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDailyScheduler"
+
+
+    // $ANTLR start "entryRuleWeeklyScheduler"
+    // InternalSignalDSL.g:342:1: entryRuleWeeklyScheduler : ruleWeeklyScheduler EOF ;
+    public final void entryRuleWeeklyScheduler() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:343:1: ( ruleWeeklyScheduler EOF )
+            // InternalSignalDSL.g:344:1: ruleWeeklyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleWeeklyScheduler();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleWeeklyScheduler"
+
+
+    // $ANTLR start "ruleWeeklyScheduler"
+    // InternalSignalDSL.g:351:1: ruleWeeklyScheduler : ( ( rule__WeeklyScheduler__Group__0 ) ) ;
+    public final void ruleWeeklyScheduler() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:355:2: ( ( ( rule__WeeklyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:356:2: ( ( rule__WeeklyScheduler__Group__0 ) )
+            {
+            // InternalSignalDSL.g:356:2: ( ( rule__WeeklyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:357:3: ( rule__WeeklyScheduler__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getGroup()); 
+            }
+            // InternalSignalDSL.g:358:3: ( rule__WeeklyScheduler__Group__0 )
+            // InternalSignalDSL.g:358:4: rule__WeeklyScheduler__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleWeeklyScheduler"
+
+
+    // $ANTLR start "entryRuleMonthlyScheduler"
+    // InternalSignalDSL.g:367:1: entryRuleMonthlyScheduler : ruleMonthlyScheduler EOF ;
+    public final void entryRuleMonthlyScheduler() throws RecognitionException {
+        try {
+            // InternalSignalDSL.g:368:1: ( ruleMonthlyScheduler EOF )
+            // InternalSignalDSL.g:369:1: ruleMonthlyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleMonthlyScheduler();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleMonthlyScheduler"
+
+
+    // $ANTLR start "ruleMonthlyScheduler"
+    // InternalSignalDSL.g:376:1: ruleMonthlyScheduler : ( ( rule__MonthlyScheduler__Group__0 ) ) ;
+    public final void ruleMonthlyScheduler() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:380:2: ( ( ( rule__MonthlyScheduler__Group__0 ) ) )
+            // InternalSignalDSL.g:381:2: ( ( rule__MonthlyScheduler__Group__0 ) )
+            {
+            // InternalSignalDSL.g:381:2: ( ( rule__MonthlyScheduler__Group__0 ) )
+            // InternalSignalDSL.g:382:3: ( rule__MonthlyScheduler__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getGroup()); 
+            }
+            // InternalSignalDSL.g:383:3: ( rule__MonthlyScheduler__Group__0 )
+            // InternalSignalDSL.g:383:4: rule__MonthlyScheduler__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleMonthlyScheduler"
 
 
     // $ANTLR start "entryRuleSignalDatainterchange"
-    // InternalSignalDSL.g:242:1: entryRuleSignalDatainterchange : ruleSignalDatainterchange EOF ;
+    // InternalSignalDSL.g:392:1: entryRuleSignalDatainterchange : ruleSignalDatainterchange EOF ;
     public final void entryRuleSignalDatainterchange() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:243:1: ( ruleSignalDatainterchange EOF )
-            // InternalSignalDSL.g:244:1: ruleSignalDatainterchange EOF
+            // InternalSignalDSL.g:393:1: ( ruleSignalDatainterchange EOF )
+            // InternalSignalDSL.g:394:1: ruleSignalDatainterchange EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeRule()); 
@@ -807,23 +1328,23 @@
 
 
     // $ANTLR start "ruleSignalDatainterchange"
-    // InternalSignalDSL.g:251:1: ruleSignalDatainterchange : ( ( rule__SignalDatainterchange__Group__0 ) ) ;
+    // InternalSignalDSL.g:401:1: ruleSignalDatainterchange : ( ( rule__SignalDatainterchange__Group__0 ) ) ;
     public final void ruleSignalDatainterchange() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:255:2: ( ( ( rule__SignalDatainterchange__Group__0 ) ) )
-            // InternalSignalDSL.g:256:2: ( ( rule__SignalDatainterchange__Group__0 ) )
+            // InternalSignalDSL.g:405:2: ( ( ( rule__SignalDatainterchange__Group__0 ) ) )
+            // InternalSignalDSL.g:406:2: ( ( rule__SignalDatainterchange__Group__0 ) )
             {
-            // InternalSignalDSL.g:256:2: ( ( rule__SignalDatainterchange__Group__0 ) )
-            // InternalSignalDSL.g:257:3: ( rule__SignalDatainterchange__Group__0 )
+            // InternalSignalDSL.g:406:2: ( ( rule__SignalDatainterchange__Group__0 ) )
+            // InternalSignalDSL.g:407:3: ( rule__SignalDatainterchange__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:258:3: ( rule__SignalDatainterchange__Group__0 )
-            // InternalSignalDSL.g:258:4: rule__SignalDatainterchange__Group__0
+            // InternalSignalDSL.g:408:3: ( rule__SignalDatainterchange__Group__0 )
+            // InternalSignalDSL.g:408:4: rule__SignalDatainterchange__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__Group__0();
@@ -858,11 +1379,11 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalSignalDSL.g:267:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    // InternalSignalDSL.g:417:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
     public final void entryRuleTRANSLATABLEID() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:268:1: ( ruleTRANSLATABLEID EOF )
-            // InternalSignalDSL.g:269:1: ruleTRANSLATABLEID EOF
+            // InternalSignalDSL.g:418:1: ( ruleTRANSLATABLEID EOF )
+            // InternalSignalDSL.g:419:1: ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -892,17 +1413,17 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalSignalDSL.g:276:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    // InternalSignalDSL.g:426:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
     public final void ruleTRANSLATABLEID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:280:2: ( ( RULE_ID ) )
-            // InternalSignalDSL.g:281:2: ( RULE_ID )
+            // InternalSignalDSL.g:430:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:431:2: ( RULE_ID )
             {
-            // InternalSignalDSL.g:281:2: ( RULE_ID )
-            // InternalSignalDSL.g:282:3: RULE_ID
+            // InternalSignalDSL.g:431:2: ( RULE_ID )
+            // InternalSignalDSL.g:432:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall()); 
@@ -933,11 +1454,11 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalSignalDSL.g:292:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    // InternalSignalDSL.g:442:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
     public final void entryRuleXImportDeclaration() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:293:1: ( ruleXImportDeclaration EOF )
-            // InternalSignalDSL.g:294:1: ruleXImportDeclaration EOF
+            // InternalSignalDSL.g:443:1: ( ruleXImportDeclaration EOF )
+            // InternalSignalDSL.g:444:1: ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationRule()); 
@@ -967,23 +1488,23 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalSignalDSL.g:301:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    // InternalSignalDSL.g:451:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
     public final void ruleXImportDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:305:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
-            // InternalSignalDSL.g:306:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:455:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalSignalDSL.g:456:2: ( ( rule__XImportDeclaration__Group__0 ) )
             {
-            // InternalSignalDSL.g:306:2: ( ( rule__XImportDeclaration__Group__0 ) )
-            // InternalSignalDSL.g:307:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalSignalDSL.g:456:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:457:3: ( rule__XImportDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:308:3: ( rule__XImportDeclaration__Group__0 )
-            // InternalSignalDSL.g:308:4: rule__XImportDeclaration__Group__0
+            // InternalSignalDSL.g:458:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalSignalDSL.g:458:4: rule__XImportDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__0();
@@ -1018,11 +1539,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalSignalDSL.g:317:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    // InternalSignalDSL.g:467:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
     public final void entryRuleXAnnotation() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:318:1: ( ruleXAnnotation EOF )
-            // InternalSignalDSL.g:319:1: ruleXAnnotation EOF
+            // InternalSignalDSL.g:468:1: ( ruleXAnnotation EOF )
+            // InternalSignalDSL.g:469:1: ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationRule()); 
@@ -1052,23 +1573,23 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalSignalDSL.g:326:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    // InternalSignalDSL.g:476:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
     public final void ruleXAnnotation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:330:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
-            // InternalSignalDSL.g:331:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalSignalDSL.g:480:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalSignalDSL.g:481:2: ( ( rule__XAnnotation__Group__0 ) )
             {
-            // InternalSignalDSL.g:331:2: ( ( rule__XAnnotation__Group__0 ) )
-            // InternalSignalDSL.g:332:3: ( rule__XAnnotation__Group__0 )
+            // InternalSignalDSL.g:481:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalSignalDSL.g:482:3: ( rule__XAnnotation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:333:3: ( rule__XAnnotation__Group__0 )
-            // InternalSignalDSL.g:333:4: rule__XAnnotation__Group__0
+            // InternalSignalDSL.g:483:3: ( rule__XAnnotation__Group__0 )
+            // InternalSignalDSL.g:483:4: rule__XAnnotation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__0();
@@ -1103,11 +1624,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:342:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    // InternalSignalDSL.g:492:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
     public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:343:1: ( ruleXAnnotationElementValuePair EOF )
-            // InternalSignalDSL.g:344:1: ruleXAnnotationElementValuePair EOF
+            // InternalSignalDSL.g:493:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalSignalDSL.g:494:1: ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -1137,23 +1658,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:351:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    // InternalSignalDSL.g:501:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
     public final void ruleXAnnotationElementValuePair() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:355:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
-            // InternalSignalDSL.g:356:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalSignalDSL.g:505:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalSignalDSL.g:506:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
             {
-            // InternalSignalDSL.g:356:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
-            // InternalSignalDSL.g:357:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalSignalDSL.g:506:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalSignalDSL.g:507:3: ( rule__XAnnotationElementValuePair__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:358:3: ( rule__XAnnotationElementValuePair__Group__0 )
-            // InternalSignalDSL.g:358:4: rule__XAnnotationElementValuePair__Group__0
+            // InternalSignalDSL.g:508:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalSignalDSL.g:508:4: rule__XAnnotationElementValuePair__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__0();
@@ -1188,11 +1709,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:367:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalSignalDSL.g:517:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
     public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:368:1: ( ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalSignalDSL.g:369:1: ruleXAnnotationElementValueOrCommaList EOF
+            // InternalSignalDSL.g:518:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalSignalDSL.g:519:1: ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -1222,23 +1743,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:376:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    // InternalSignalDSL.g:526:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
     public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:380:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
-            // InternalSignalDSL.g:381:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalSignalDSL.g:530:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalSignalDSL.g:531:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
             {
-            // InternalSignalDSL.g:381:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
-            // InternalSignalDSL.g:382:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalSignalDSL.g:531:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalSignalDSL.g:532:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:383:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
-            // InternalSignalDSL.g:383:4: rule__XAnnotationElementValueOrCommaList__Alternatives
+            // InternalSignalDSL.g:533:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalSignalDSL.g:533:4: rule__XAnnotationElementValueOrCommaList__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Alternatives();
@@ -1273,11 +1794,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalSignalDSL.g:392:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    // InternalSignalDSL.g:542:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
     public final void entryRuleXAnnotationElementValue() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:393:1: ( ruleXAnnotationElementValue EOF )
-            // InternalSignalDSL.g:394:1: ruleXAnnotationElementValue EOF
+            // InternalSignalDSL.g:543:1: ( ruleXAnnotationElementValue EOF )
+            // InternalSignalDSL.g:544:1: ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueRule()); 
@@ -1307,23 +1828,23 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalSignalDSL.g:401:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    // InternalSignalDSL.g:551:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
     public final void ruleXAnnotationElementValue() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:405:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
-            // InternalSignalDSL.g:406:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalSignalDSL.g:555:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalSignalDSL.g:556:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
             {
-            // InternalSignalDSL.g:406:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
-            // InternalSignalDSL.g:407:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalSignalDSL.g:556:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalSignalDSL.g:557:3: ( rule__XAnnotationElementValue__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:408:3: ( rule__XAnnotationElementValue__Alternatives )
-            // InternalSignalDSL.g:408:4: rule__XAnnotationElementValue__Alternatives
+            // InternalSignalDSL.g:558:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalSignalDSL.g:558:4: rule__XAnnotationElementValue__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Alternatives();
@@ -1358,11 +1879,11 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalSignalDSL.g:417:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    // InternalSignalDSL.g:567:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
     public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:418:1: ( ruleXAnnotationOrExpression EOF )
-            // InternalSignalDSL.g:419:1: ruleXAnnotationOrExpression EOF
+            // InternalSignalDSL.g:568:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalSignalDSL.g:569:1: ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -1392,23 +1913,23 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalSignalDSL.g:426:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    // InternalSignalDSL.g:576:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
     public final void ruleXAnnotationOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:430:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
-            // InternalSignalDSL.g:431:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalSignalDSL.g:580:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalSignalDSL.g:581:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
             {
-            // InternalSignalDSL.g:431:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
-            // InternalSignalDSL.g:432:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalSignalDSL.g:581:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalSignalDSL.g:582:3: ( rule__XAnnotationOrExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:433:3: ( rule__XAnnotationOrExpression__Alternatives )
-            // InternalSignalDSL.g:433:4: rule__XAnnotationOrExpression__Alternatives
+            // InternalSignalDSL.g:583:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalSignalDSL.g:583:4: rule__XAnnotationOrExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationOrExpression__Alternatives();
@@ -1443,11 +1964,11 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalSignalDSL.g:442:1: entryRuleXExpression : ruleXExpression EOF ;
+    // InternalSignalDSL.g:592:1: entryRuleXExpression : ruleXExpression EOF ;
     public final void entryRuleXExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:443:1: ( ruleXExpression EOF )
-            // InternalSignalDSL.g:444:1: ruleXExpression EOF
+            // InternalSignalDSL.g:593:1: ( ruleXExpression EOF )
+            // InternalSignalDSL.g:594:1: ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionRule()); 
@@ -1477,17 +1998,17 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalSignalDSL.g:451:1: ruleXExpression : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:601:1: ruleXExpression : ( ruleXAssignment ) ;
     public final void ruleXExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:455:2: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:456:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:605:2: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:606:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:456:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:457:3: ruleXAssignment
+            // InternalSignalDSL.g:606:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:607:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
@@ -1522,11 +2043,11 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalSignalDSL.g:467:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    // InternalSignalDSL.g:617:1: entryRuleXAssignment : ruleXAssignment EOF ;
     public final void entryRuleXAssignment() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:468:1: ( ruleXAssignment EOF )
-            // InternalSignalDSL.g:469:1: ruleXAssignment EOF
+            // InternalSignalDSL.g:618:1: ( ruleXAssignment EOF )
+            // InternalSignalDSL.g:619:1: ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentRule()); 
@@ -1556,23 +2077,23 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalSignalDSL.g:476:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    // InternalSignalDSL.g:626:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
     public final void ruleXAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:480:2: ( ( ( rule__XAssignment__Alternatives ) ) )
-            // InternalSignalDSL.g:481:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalSignalDSL.g:630:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalSignalDSL.g:631:2: ( ( rule__XAssignment__Alternatives ) )
             {
-            // InternalSignalDSL.g:481:2: ( ( rule__XAssignment__Alternatives ) )
-            // InternalSignalDSL.g:482:3: ( rule__XAssignment__Alternatives )
+            // InternalSignalDSL.g:631:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalSignalDSL.g:632:3: ( rule__XAssignment__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:483:3: ( rule__XAssignment__Alternatives )
-            // InternalSignalDSL.g:483:4: rule__XAssignment__Alternatives
+            // InternalSignalDSL.g:633:3: ( rule__XAssignment__Alternatives )
+            // InternalSignalDSL.g:633:4: rule__XAssignment__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Alternatives();
@@ -1607,11 +2128,11 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalSignalDSL.g:492:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    // InternalSignalDSL.g:642:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
     public final void entryRuleOpSingleAssign() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:493:1: ( ruleOpSingleAssign EOF )
-            // InternalSignalDSL.g:494:1: ruleOpSingleAssign EOF
+            // InternalSignalDSL.g:643:1: ( ruleOpSingleAssign EOF )
+            // InternalSignalDSL.g:644:1: ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignRule()); 
@@ -1641,17 +2162,17 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalSignalDSL.g:501:1: ruleOpSingleAssign : ( '=' ) ;
+    // InternalSignalDSL.g:651:1: ruleOpSingleAssign : ( '=' ) ;
     public final void ruleOpSingleAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:505:2: ( ( '=' ) )
-            // InternalSignalDSL.g:506:2: ( '=' )
+            // InternalSignalDSL.g:655:2: ( ( '=' ) )
+            // InternalSignalDSL.g:656:2: ( '=' )
             {
-            // InternalSignalDSL.g:506:2: ( '=' )
-            // InternalSignalDSL.g:507:3: '='
+            // InternalSignalDSL.g:656:2: ( '=' )
+            // InternalSignalDSL.g:657:3: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
@@ -1682,11 +2203,11 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalSignalDSL.g:517:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    // InternalSignalDSL.g:667:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
     public final void entryRuleOpMultiAssign() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:518:1: ( ruleOpMultiAssign EOF )
-            // InternalSignalDSL.g:519:1: ruleOpMultiAssign EOF
+            // InternalSignalDSL.g:668:1: ( ruleOpMultiAssign EOF )
+            // InternalSignalDSL.g:669:1: ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignRule()); 
@@ -1716,23 +2237,23 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalSignalDSL.g:526:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    // InternalSignalDSL.g:676:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
     public final void ruleOpMultiAssign() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:530:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
-            // InternalSignalDSL.g:531:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalSignalDSL.g:680:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalSignalDSL.g:681:2: ( ( rule__OpMultiAssign__Alternatives ) )
             {
-            // InternalSignalDSL.g:531:2: ( ( rule__OpMultiAssign__Alternatives ) )
-            // InternalSignalDSL.g:532:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalSignalDSL.g:681:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalSignalDSL.g:682:3: ( rule__OpMultiAssign__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:533:3: ( rule__OpMultiAssign__Alternatives )
-            // InternalSignalDSL.g:533:4: rule__OpMultiAssign__Alternatives
+            // InternalSignalDSL.g:683:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalSignalDSL.g:683:4: rule__OpMultiAssign__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Alternatives();
@@ -1767,11 +2288,11 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalSignalDSL.g:542:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    // InternalSignalDSL.g:692:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
     public final void entryRuleXOrExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:543:1: ( ruleXOrExpression EOF )
-            // InternalSignalDSL.g:544:1: ruleXOrExpression EOF
+            // InternalSignalDSL.g:693:1: ( ruleXOrExpression EOF )
+            // InternalSignalDSL.g:694:1: ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionRule()); 
@@ -1801,23 +2322,23 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalSignalDSL.g:551:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:701:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
     public final void ruleXOrExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:555:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:556:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalSignalDSL.g:705:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:706:2: ( ( rule__XOrExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:556:2: ( ( rule__XOrExpression__Group__0 ) )
-            // InternalSignalDSL.g:557:3: ( rule__XOrExpression__Group__0 )
+            // InternalSignalDSL.g:706:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalSignalDSL.g:707:3: ( rule__XOrExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:558:3: ( rule__XOrExpression__Group__0 )
-            // InternalSignalDSL.g:558:4: rule__XOrExpression__Group__0
+            // InternalSignalDSL.g:708:3: ( rule__XOrExpression__Group__0 )
+            // InternalSignalDSL.g:708:4: rule__XOrExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__0();
@@ -1852,11 +2373,11 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // InternalSignalDSL.g:567:1: entryRuleOpOr : ruleOpOr EOF ;
+    // InternalSignalDSL.g:717:1: entryRuleOpOr : ruleOpOr EOF ;
     public final void entryRuleOpOr() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:568:1: ( ruleOpOr EOF )
-            // InternalSignalDSL.g:569:1: ruleOpOr EOF
+            // InternalSignalDSL.g:718:1: ( ruleOpOr EOF )
+            // InternalSignalDSL.g:719:1: ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrRule()); 
@@ -1886,17 +2407,17 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // InternalSignalDSL.g:576:1: ruleOpOr : ( '||' ) ;
+    // InternalSignalDSL.g:726:1: ruleOpOr : ( '||' ) ;
     public final void ruleOpOr() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:580:2: ( ( '||' ) )
-            // InternalSignalDSL.g:581:2: ( '||' )
+            // InternalSignalDSL.g:730:2: ( ( '||' ) )
+            // InternalSignalDSL.g:731:2: ( '||' )
             {
-            // InternalSignalDSL.g:581:2: ( '||' )
-            // InternalSignalDSL.g:582:3: '||'
+            // InternalSignalDSL.g:731:2: ( '||' )
+            // InternalSignalDSL.g:732:3: '||'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
@@ -1927,11 +2448,11 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // InternalSignalDSL.g:592:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    // InternalSignalDSL.g:742:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
     public final void entryRuleXAndExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:593:1: ( ruleXAndExpression EOF )
-            // InternalSignalDSL.g:594:1: ruleXAndExpression EOF
+            // InternalSignalDSL.g:743:1: ( ruleXAndExpression EOF )
+            // InternalSignalDSL.g:744:1: ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionRule()); 
@@ -1961,23 +2482,23 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // InternalSignalDSL.g:601:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:751:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
     public final void ruleXAndExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:605:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:606:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalSignalDSL.g:755:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:756:2: ( ( rule__XAndExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:606:2: ( ( rule__XAndExpression__Group__0 ) )
-            // InternalSignalDSL.g:607:3: ( rule__XAndExpression__Group__0 )
+            // InternalSignalDSL.g:756:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalSignalDSL.g:757:3: ( rule__XAndExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:608:3: ( rule__XAndExpression__Group__0 )
-            // InternalSignalDSL.g:608:4: rule__XAndExpression__Group__0
+            // InternalSignalDSL.g:758:3: ( rule__XAndExpression__Group__0 )
+            // InternalSignalDSL.g:758:4: rule__XAndExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__0();
@@ -2012,11 +2533,11 @@
 
 
     // $ANTLR start "entryRuleOpAnd"
-    // InternalSignalDSL.g:617:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    // InternalSignalDSL.g:767:1: entryRuleOpAnd : ruleOpAnd EOF ;
     public final void entryRuleOpAnd() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:618:1: ( ruleOpAnd EOF )
-            // InternalSignalDSL.g:619:1: ruleOpAnd EOF
+            // InternalSignalDSL.g:768:1: ( ruleOpAnd EOF )
+            // InternalSignalDSL.g:769:1: ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndRule()); 
@@ -2046,17 +2567,17 @@
 
 
     // $ANTLR start "ruleOpAnd"
-    // InternalSignalDSL.g:626:1: ruleOpAnd : ( '&&' ) ;
+    // InternalSignalDSL.g:776:1: ruleOpAnd : ( '&&' ) ;
     public final void ruleOpAnd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:630:2: ( ( '&&' ) )
-            // InternalSignalDSL.g:631:2: ( '&&' )
+            // InternalSignalDSL.g:780:2: ( ( '&&' ) )
+            // InternalSignalDSL.g:781:2: ( '&&' )
             {
-            // InternalSignalDSL.g:631:2: ( '&&' )
-            // InternalSignalDSL.g:632:3: '&&'
+            // InternalSignalDSL.g:781:2: ( '&&' )
+            // InternalSignalDSL.g:782:3: '&&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword()); 
@@ -2087,11 +2608,11 @@
 
 
     // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalSignalDSL.g:642:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    // InternalSignalDSL.g:792:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
     public final void entryRuleXEqualityExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:643:1: ( ruleXEqualityExpression EOF )
-            // InternalSignalDSL.g:644:1: ruleXEqualityExpression EOF
+            // InternalSignalDSL.g:793:1: ( ruleXEqualityExpression EOF )
+            // InternalSignalDSL.g:794:1: ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionRule()); 
@@ -2121,23 +2642,23 @@
 
 
     // $ANTLR start "ruleXEqualityExpression"
-    // InternalSignalDSL.g:651:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:801:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
     public final void ruleXEqualityExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:655:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:656:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalSignalDSL.g:805:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:806:2: ( ( rule__XEqualityExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:656:2: ( ( rule__XEqualityExpression__Group__0 ) )
-            // InternalSignalDSL.g:657:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalSignalDSL.g:806:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalSignalDSL.g:807:3: ( rule__XEqualityExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:658:3: ( rule__XEqualityExpression__Group__0 )
-            // InternalSignalDSL.g:658:4: rule__XEqualityExpression__Group__0
+            // InternalSignalDSL.g:808:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalSignalDSL.g:808:4: rule__XEqualityExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__0();
@@ -2172,11 +2693,11 @@
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalSignalDSL.g:667:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    // InternalSignalDSL.g:817:1: entryRuleOpEquality : ruleOpEquality EOF ;
     public final void entryRuleOpEquality() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:668:1: ( ruleOpEquality EOF )
-            // InternalSignalDSL.g:669:1: ruleOpEquality EOF
+            // InternalSignalDSL.g:818:1: ( ruleOpEquality EOF )
+            // InternalSignalDSL.g:819:1: ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityRule()); 
@@ -2206,23 +2727,23 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalSignalDSL.g:676:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    // InternalSignalDSL.g:826:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
     public final void ruleOpEquality() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:680:2: ( ( ( rule__OpEquality__Alternatives ) ) )
-            // InternalSignalDSL.g:681:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalSignalDSL.g:830:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalSignalDSL.g:831:2: ( ( rule__OpEquality__Alternatives ) )
             {
-            // InternalSignalDSL.g:681:2: ( ( rule__OpEquality__Alternatives ) )
-            // InternalSignalDSL.g:682:3: ( rule__OpEquality__Alternatives )
+            // InternalSignalDSL.g:831:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalSignalDSL.g:832:3: ( rule__OpEquality__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:683:3: ( rule__OpEquality__Alternatives )
-            // InternalSignalDSL.g:683:4: rule__OpEquality__Alternatives
+            // InternalSignalDSL.g:833:3: ( rule__OpEquality__Alternatives )
+            // InternalSignalDSL.g:833:4: rule__OpEquality__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpEquality__Alternatives();
@@ -2257,11 +2778,11 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalSignalDSL.g:692:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    // InternalSignalDSL.g:842:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
     public final void entryRuleXRelationalExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:693:1: ( ruleXRelationalExpression EOF )
-            // InternalSignalDSL.g:694:1: ruleXRelationalExpression EOF
+            // InternalSignalDSL.g:843:1: ( ruleXRelationalExpression EOF )
+            // InternalSignalDSL.g:844:1: ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionRule()); 
@@ -2291,23 +2812,23 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalSignalDSL.g:701:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:851:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
     public final void ruleXRelationalExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:705:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:706:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalSignalDSL.g:855:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:856:2: ( ( rule__XRelationalExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:706:2: ( ( rule__XRelationalExpression__Group__0 ) )
-            // InternalSignalDSL.g:707:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalSignalDSL.g:856:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalSignalDSL.g:857:3: ( rule__XRelationalExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:708:3: ( rule__XRelationalExpression__Group__0 )
-            // InternalSignalDSL.g:708:4: rule__XRelationalExpression__Group__0
+            // InternalSignalDSL.g:858:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalSignalDSL.g:858:4: rule__XRelationalExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__0();
@@ -2342,11 +2863,11 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalSignalDSL.g:717:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    // InternalSignalDSL.g:867:1: entryRuleOpCompare : ruleOpCompare EOF ;
     public final void entryRuleOpCompare() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:718:1: ( ruleOpCompare EOF )
-            // InternalSignalDSL.g:719:1: ruleOpCompare EOF
+            // InternalSignalDSL.g:868:1: ( ruleOpCompare EOF )
+            // InternalSignalDSL.g:869:1: ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareRule()); 
@@ -2376,23 +2897,23 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalSignalDSL.g:726:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    // InternalSignalDSL.g:876:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
     public final void ruleOpCompare() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:730:2: ( ( ( rule__OpCompare__Alternatives ) ) )
-            // InternalSignalDSL.g:731:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalSignalDSL.g:880:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalSignalDSL.g:881:2: ( ( rule__OpCompare__Alternatives ) )
             {
-            // InternalSignalDSL.g:731:2: ( ( rule__OpCompare__Alternatives ) )
-            // InternalSignalDSL.g:732:3: ( rule__OpCompare__Alternatives )
+            // InternalSignalDSL.g:881:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalSignalDSL.g:882:3: ( rule__OpCompare__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:733:3: ( rule__OpCompare__Alternatives )
-            // InternalSignalDSL.g:733:4: rule__OpCompare__Alternatives
+            // InternalSignalDSL.g:883:3: ( rule__OpCompare__Alternatives )
+            // InternalSignalDSL.g:883:4: rule__OpCompare__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Alternatives();
@@ -2427,11 +2948,11 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalSignalDSL.g:742:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    // InternalSignalDSL.g:892:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
     public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:743:1: ( ruleXOtherOperatorExpression EOF )
-            // InternalSignalDSL.g:744:1: ruleXOtherOperatorExpression EOF
+            // InternalSignalDSL.g:893:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalSignalDSL.g:894:1: ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -2461,23 +2982,23 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalSignalDSL.g:751:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:901:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
     public final void ruleXOtherOperatorExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:755:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:756:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalSignalDSL.g:905:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:906:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:756:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
-            // InternalSignalDSL.g:757:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalSignalDSL.g:906:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalSignalDSL.g:907:3: ( rule__XOtherOperatorExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:758:3: ( rule__XOtherOperatorExpression__Group__0 )
-            // InternalSignalDSL.g:758:4: rule__XOtherOperatorExpression__Group__0
+            // InternalSignalDSL.g:908:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalSignalDSL.g:908:4: rule__XOtherOperatorExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__0();
@@ -2512,11 +3033,11 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalSignalDSL.g:767:1: entryRuleOpOther : ruleOpOther EOF ;
+    // InternalSignalDSL.g:917:1: entryRuleOpOther : ruleOpOther EOF ;
     public final void entryRuleOpOther() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:768:1: ( ruleOpOther EOF )
-            // InternalSignalDSL.g:769:1: ruleOpOther EOF
+            // InternalSignalDSL.g:918:1: ( ruleOpOther EOF )
+            // InternalSignalDSL.g:919:1: ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherRule()); 
@@ -2546,23 +3067,23 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalSignalDSL.g:776:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    // InternalSignalDSL.g:926:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
     public final void ruleOpOther() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:780:2: ( ( ( rule__OpOther__Alternatives ) ) )
-            // InternalSignalDSL.g:781:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalSignalDSL.g:930:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalSignalDSL.g:931:2: ( ( rule__OpOther__Alternatives ) )
             {
-            // InternalSignalDSL.g:781:2: ( ( rule__OpOther__Alternatives ) )
-            // InternalSignalDSL.g:782:3: ( rule__OpOther__Alternatives )
+            // InternalSignalDSL.g:931:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalSignalDSL.g:932:3: ( rule__OpOther__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:783:3: ( rule__OpOther__Alternatives )
-            // InternalSignalDSL.g:783:4: rule__OpOther__Alternatives
+            // InternalSignalDSL.g:933:3: ( rule__OpOther__Alternatives )
+            // InternalSignalDSL.g:933:4: rule__OpOther__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives();
@@ -2597,11 +3118,11 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalSignalDSL.g:792:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    // InternalSignalDSL.g:942:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
     public final void entryRuleXAdditiveExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:793:1: ( ruleXAdditiveExpression EOF )
-            // InternalSignalDSL.g:794:1: ruleXAdditiveExpression EOF
+            // InternalSignalDSL.g:943:1: ( ruleXAdditiveExpression EOF )
+            // InternalSignalDSL.g:944:1: ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionRule()); 
@@ -2631,23 +3152,23 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalSignalDSL.g:801:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:951:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
     public final void ruleXAdditiveExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:805:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:806:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalSignalDSL.g:955:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:956:2: ( ( rule__XAdditiveExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:806:2: ( ( rule__XAdditiveExpression__Group__0 ) )
-            // InternalSignalDSL.g:807:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalSignalDSL.g:956:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalSignalDSL.g:957:3: ( rule__XAdditiveExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:808:3: ( rule__XAdditiveExpression__Group__0 )
-            // InternalSignalDSL.g:808:4: rule__XAdditiveExpression__Group__0
+            // InternalSignalDSL.g:958:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalSignalDSL.g:958:4: rule__XAdditiveExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__0();
@@ -2682,11 +3203,11 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalSignalDSL.g:817:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    // InternalSignalDSL.g:967:1: entryRuleOpAdd : ruleOpAdd EOF ;
     public final void entryRuleOpAdd() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:818:1: ( ruleOpAdd EOF )
-            // InternalSignalDSL.g:819:1: ruleOpAdd EOF
+            // InternalSignalDSL.g:968:1: ( ruleOpAdd EOF )
+            // InternalSignalDSL.g:969:1: ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddRule()); 
@@ -2716,23 +3237,23 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalSignalDSL.g:826:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    // InternalSignalDSL.g:976:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
     public final void ruleOpAdd() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:830:2: ( ( ( rule__OpAdd__Alternatives ) ) )
-            // InternalSignalDSL.g:831:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalSignalDSL.g:980:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalSignalDSL.g:981:2: ( ( rule__OpAdd__Alternatives ) )
             {
-            // InternalSignalDSL.g:831:2: ( ( rule__OpAdd__Alternatives ) )
-            // InternalSignalDSL.g:832:3: ( rule__OpAdd__Alternatives )
+            // InternalSignalDSL.g:981:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalSignalDSL.g:982:3: ( rule__OpAdd__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpAddAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:833:3: ( rule__OpAdd__Alternatives )
-            // InternalSignalDSL.g:833:4: rule__OpAdd__Alternatives
+            // InternalSignalDSL.g:983:3: ( rule__OpAdd__Alternatives )
+            // InternalSignalDSL.g:983:4: rule__OpAdd__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpAdd__Alternatives();
@@ -2767,11 +3288,11 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalSignalDSL.g:842:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    // InternalSignalDSL.g:992:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
     public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:843:1: ( ruleXMultiplicativeExpression EOF )
-            // InternalSignalDSL.g:844:1: ruleXMultiplicativeExpression EOF
+            // InternalSignalDSL.g:993:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalSignalDSL.g:994:1: ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -2801,23 +3322,23 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalSignalDSL.g:851:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1001:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
     public final void ruleXMultiplicativeExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:855:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:856:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalSignalDSL.g:1005:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1006:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:856:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
-            // InternalSignalDSL.g:857:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalSignalDSL.g:1006:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalSignalDSL.g:1007:3: ( rule__XMultiplicativeExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:858:3: ( rule__XMultiplicativeExpression__Group__0 )
-            // InternalSignalDSL.g:858:4: rule__XMultiplicativeExpression__Group__0
+            // InternalSignalDSL.g:1008:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalSignalDSL.g:1008:4: rule__XMultiplicativeExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__0();
@@ -2852,11 +3373,11 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalSignalDSL.g:867:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    // InternalSignalDSL.g:1017:1: entryRuleOpMulti : ruleOpMulti EOF ;
     public final void entryRuleOpMulti() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:868:1: ( ruleOpMulti EOF )
-            // InternalSignalDSL.g:869:1: ruleOpMulti EOF
+            // InternalSignalDSL.g:1018:1: ( ruleOpMulti EOF )
+            // InternalSignalDSL.g:1019:1: ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiRule()); 
@@ -2886,23 +3407,23 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalSignalDSL.g:876:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    // InternalSignalDSL.g:1026:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
     public final void ruleOpMulti() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:880:2: ( ( ( rule__OpMulti__Alternatives ) ) )
-            // InternalSignalDSL.g:881:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalSignalDSL.g:1030:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalSignalDSL.g:1031:2: ( ( rule__OpMulti__Alternatives ) )
             {
-            // InternalSignalDSL.g:881:2: ( ( rule__OpMulti__Alternatives ) )
-            // InternalSignalDSL.g:882:3: ( rule__OpMulti__Alternatives )
+            // InternalSignalDSL.g:1031:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalSignalDSL.g:1032:3: ( rule__OpMulti__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:883:3: ( rule__OpMulti__Alternatives )
-            // InternalSignalDSL.g:883:4: rule__OpMulti__Alternatives
+            // InternalSignalDSL.g:1033:3: ( rule__OpMulti__Alternatives )
+            // InternalSignalDSL.g:1033:4: rule__OpMulti__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpMulti__Alternatives();
@@ -2937,11 +3458,11 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalSignalDSL.g:892:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    // InternalSignalDSL.g:1042:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
     public final void entryRuleXUnaryOperation() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:893:1: ( ruleXUnaryOperation EOF )
-            // InternalSignalDSL.g:894:1: ruleXUnaryOperation EOF
+            // InternalSignalDSL.g:1043:1: ( ruleXUnaryOperation EOF )
+            // InternalSignalDSL.g:1044:1: ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationRule()); 
@@ -2971,23 +3492,23 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalSignalDSL.g:901:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    // InternalSignalDSL.g:1051:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
     public final void ruleXUnaryOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:905:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
-            // InternalSignalDSL.g:906:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalSignalDSL.g:1055:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalSignalDSL.g:1056:2: ( ( rule__XUnaryOperation__Alternatives ) )
             {
-            // InternalSignalDSL.g:906:2: ( ( rule__XUnaryOperation__Alternatives ) )
-            // InternalSignalDSL.g:907:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalSignalDSL.g:1056:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalSignalDSL.g:1057:3: ( rule__XUnaryOperation__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:908:3: ( rule__XUnaryOperation__Alternatives )
-            // InternalSignalDSL.g:908:4: rule__XUnaryOperation__Alternatives
+            // InternalSignalDSL.g:1058:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalSignalDSL.g:1058:4: rule__XUnaryOperation__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Alternatives();
@@ -3022,11 +3543,11 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalSignalDSL.g:917:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    // InternalSignalDSL.g:1067:1: entryRuleOpUnary : ruleOpUnary EOF ;
     public final void entryRuleOpUnary() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:918:1: ( ruleOpUnary EOF )
-            // InternalSignalDSL.g:919:1: ruleOpUnary EOF
+            // InternalSignalDSL.g:1068:1: ( ruleOpUnary EOF )
+            // InternalSignalDSL.g:1069:1: ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryRule()); 
@@ -3056,23 +3577,23 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalSignalDSL.g:926:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    // InternalSignalDSL.g:1076:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
     public final void ruleOpUnary() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:930:2: ( ( ( rule__OpUnary__Alternatives ) ) )
-            // InternalSignalDSL.g:931:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalSignalDSL.g:1080:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalSignalDSL.g:1081:2: ( ( rule__OpUnary__Alternatives ) )
             {
-            // InternalSignalDSL.g:931:2: ( ( rule__OpUnary__Alternatives ) )
-            // InternalSignalDSL.g:932:3: ( rule__OpUnary__Alternatives )
+            // InternalSignalDSL.g:1081:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalSignalDSL.g:1082:3: ( rule__OpUnary__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:933:3: ( rule__OpUnary__Alternatives )
-            // InternalSignalDSL.g:933:4: rule__OpUnary__Alternatives
+            // InternalSignalDSL.g:1083:3: ( rule__OpUnary__Alternatives )
+            // InternalSignalDSL.g:1083:4: rule__OpUnary__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpUnary__Alternatives();
@@ -3107,11 +3628,11 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalSignalDSL.g:942:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    // InternalSignalDSL.g:1092:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
     public final void entryRuleXCastedExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:943:1: ( ruleXCastedExpression EOF )
-            // InternalSignalDSL.g:944:1: ruleXCastedExpression EOF
+            // InternalSignalDSL.g:1093:1: ( ruleXCastedExpression EOF )
+            // InternalSignalDSL.g:1094:1: ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionRule()); 
@@ -3141,23 +3662,23 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalSignalDSL.g:951:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1101:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
     public final void ruleXCastedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:955:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:956:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1105:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1106:2: ( ( rule__XCastedExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:956:2: ( ( rule__XCastedExpression__Group__0 ) )
-            // InternalSignalDSL.g:957:3: ( rule__XCastedExpression__Group__0 )
+            // InternalSignalDSL.g:1106:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1107:3: ( rule__XCastedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:958:3: ( rule__XCastedExpression__Group__0 )
-            // InternalSignalDSL.g:958:4: rule__XCastedExpression__Group__0
+            // InternalSignalDSL.g:1108:3: ( rule__XCastedExpression__Group__0 )
+            // InternalSignalDSL.g:1108:4: rule__XCastedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__0();
@@ -3192,11 +3713,11 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalSignalDSL.g:967:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    // InternalSignalDSL.g:1117:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
     public final void entryRuleXPostfixOperation() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:968:1: ( ruleXPostfixOperation EOF )
-            // InternalSignalDSL.g:969:1: ruleXPostfixOperation EOF
+            // InternalSignalDSL.g:1118:1: ( ruleXPostfixOperation EOF )
+            // InternalSignalDSL.g:1119:1: ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationRule()); 
@@ -3226,23 +3747,23 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalSignalDSL.g:976:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    // InternalSignalDSL.g:1126:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
     public final void ruleXPostfixOperation() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:980:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
-            // InternalSignalDSL.g:981:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalSignalDSL.g:1130:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalSignalDSL.g:1131:2: ( ( rule__XPostfixOperation__Group__0 ) )
             {
-            // InternalSignalDSL.g:981:2: ( ( rule__XPostfixOperation__Group__0 ) )
-            // InternalSignalDSL.g:982:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalSignalDSL.g:1131:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalSignalDSL.g:1132:3: ( rule__XPostfixOperation__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:983:3: ( rule__XPostfixOperation__Group__0 )
-            // InternalSignalDSL.g:983:4: rule__XPostfixOperation__Group__0
+            // InternalSignalDSL.g:1133:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalSignalDSL.g:1133:4: rule__XPostfixOperation__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__0();
@@ -3277,11 +3798,11 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalSignalDSL.g:992:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    // InternalSignalDSL.g:1142:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
     public final void entryRuleOpPostfix() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:993:1: ( ruleOpPostfix EOF )
-            // InternalSignalDSL.g:994:1: ruleOpPostfix EOF
+            // InternalSignalDSL.g:1143:1: ( ruleOpPostfix EOF )
+            // InternalSignalDSL.g:1144:1: ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixRule()); 
@@ -3311,23 +3832,23 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalSignalDSL.g:1001:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    // InternalSignalDSL.g:1151:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
     public final void ruleOpPostfix() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1005:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
-            // InternalSignalDSL.g:1006:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalSignalDSL.g:1155:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalSignalDSL.g:1156:2: ( ( rule__OpPostfix__Alternatives ) )
             {
-            // InternalSignalDSL.g:1006:2: ( ( rule__OpPostfix__Alternatives ) )
-            // InternalSignalDSL.g:1007:3: ( rule__OpPostfix__Alternatives )
+            // InternalSignalDSL.g:1156:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalSignalDSL.g:1157:3: ( rule__OpPostfix__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1008:3: ( rule__OpPostfix__Alternatives )
-            // InternalSignalDSL.g:1008:4: rule__OpPostfix__Alternatives
+            // InternalSignalDSL.g:1158:3: ( rule__OpPostfix__Alternatives )
+            // InternalSignalDSL.g:1158:4: rule__OpPostfix__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__OpPostfix__Alternatives();
@@ -3362,11 +3883,11 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalSignalDSL.g:1017:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    // InternalSignalDSL.g:1167:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
     public final void entryRuleXMemberFeatureCall() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1018:1: ( ruleXMemberFeatureCall EOF )
-            // InternalSignalDSL.g:1019:1: ruleXMemberFeatureCall EOF
+            // InternalSignalDSL.g:1168:1: ( ruleXMemberFeatureCall EOF )
+            // InternalSignalDSL.g:1169:1: ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallRule()); 
@@ -3396,23 +3917,23 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalSignalDSL.g:1026:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    // InternalSignalDSL.g:1176:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
     public final void ruleXMemberFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1030:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
-            // InternalSignalDSL.g:1031:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1180:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalSignalDSL.g:1181:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
             {
-            // InternalSignalDSL.g:1031:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
-            // InternalSignalDSL.g:1032:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1181:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1182:3: ( rule__XMemberFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1033:3: ( rule__XMemberFeatureCall__Group__0 )
-            // InternalSignalDSL.g:1033:4: rule__XMemberFeatureCall__Group__0
+            // InternalSignalDSL.g:1183:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1183:4: rule__XMemberFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__0();
@@ -3447,11 +3968,11 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalSignalDSL.g:1042:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    // InternalSignalDSL.g:1192:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
     public final void entryRuleXPrimaryExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1043:1: ( ruleXPrimaryExpression EOF )
-            // InternalSignalDSL.g:1044:1: ruleXPrimaryExpression EOF
+            // InternalSignalDSL.g:1193:1: ( ruleXPrimaryExpression EOF )
+            // InternalSignalDSL.g:1194:1: ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionRule()); 
@@ -3481,23 +4002,23 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalSignalDSL.g:1051:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    // InternalSignalDSL.g:1201:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
     public final void ruleXPrimaryExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1055:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
-            // InternalSignalDSL.g:1056:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalSignalDSL.g:1205:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalSignalDSL.g:1206:2: ( ( rule__XPrimaryExpression__Alternatives ) )
             {
-            // InternalSignalDSL.g:1056:2: ( ( rule__XPrimaryExpression__Alternatives ) )
-            // InternalSignalDSL.g:1057:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalSignalDSL.g:1206:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalSignalDSL.g:1207:3: ( rule__XPrimaryExpression__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1058:3: ( rule__XPrimaryExpression__Alternatives )
-            // InternalSignalDSL.g:1058:4: rule__XPrimaryExpression__Alternatives
+            // InternalSignalDSL.g:1208:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalSignalDSL.g:1208:4: rule__XPrimaryExpression__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XPrimaryExpression__Alternatives();
@@ -3532,11 +4053,11 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalSignalDSL.g:1067:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    // InternalSignalDSL.g:1217:1: entryRuleXLiteral : ruleXLiteral EOF ;
     public final void entryRuleXLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1068:1: ( ruleXLiteral EOF )
-            // InternalSignalDSL.g:1069:1: ruleXLiteral EOF
+            // InternalSignalDSL.g:1218:1: ( ruleXLiteral EOF )
+            // InternalSignalDSL.g:1219:1: ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralRule()); 
@@ -3566,23 +4087,23 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalSignalDSL.g:1076:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    // InternalSignalDSL.g:1226:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
     public final void ruleXLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1080:2: ( ( ( rule__XLiteral__Alternatives ) ) )
-            // InternalSignalDSL.g:1081:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1230:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalSignalDSL.g:1231:2: ( ( rule__XLiteral__Alternatives ) )
             {
-            // InternalSignalDSL.g:1081:2: ( ( rule__XLiteral__Alternatives ) )
-            // InternalSignalDSL.g:1082:3: ( rule__XLiteral__Alternatives )
+            // InternalSignalDSL.g:1231:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1232:3: ( rule__XLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXLiteralAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1083:3: ( rule__XLiteral__Alternatives )
-            // InternalSignalDSL.g:1083:4: rule__XLiteral__Alternatives
+            // InternalSignalDSL.g:1233:3: ( rule__XLiteral__Alternatives )
+            // InternalSignalDSL.g:1233:4: rule__XLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XLiteral__Alternatives();
@@ -3617,11 +4138,11 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalSignalDSL.g:1092:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    // InternalSignalDSL.g:1242:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
     public final void entryRuleXCollectionLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1093:1: ( ruleXCollectionLiteral EOF )
-            // InternalSignalDSL.g:1094:1: ruleXCollectionLiteral EOF
+            // InternalSignalDSL.g:1243:1: ( ruleXCollectionLiteral EOF )
+            // InternalSignalDSL.g:1244:1: ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralRule()); 
@@ -3651,23 +4172,23 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalSignalDSL.g:1101:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    // InternalSignalDSL.g:1251:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
     public final void ruleXCollectionLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1105:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
-            // InternalSignalDSL.g:1106:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1255:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalSignalDSL.g:1256:2: ( ( rule__XCollectionLiteral__Alternatives ) )
             {
-            // InternalSignalDSL.g:1106:2: ( ( rule__XCollectionLiteral__Alternatives ) )
-            // InternalSignalDSL.g:1107:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalSignalDSL.g:1256:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalSignalDSL.g:1257:3: ( rule__XCollectionLiteral__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1108:3: ( rule__XCollectionLiteral__Alternatives )
-            // InternalSignalDSL.g:1108:4: rule__XCollectionLiteral__Alternatives
+            // InternalSignalDSL.g:1258:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalSignalDSL.g:1258:4: rule__XCollectionLiteral__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XCollectionLiteral__Alternatives();
@@ -3702,11 +4223,11 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalSignalDSL.g:1117:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    // InternalSignalDSL.g:1267:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
     public final void entryRuleXSetLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1118:1: ( ruleXSetLiteral EOF )
-            // InternalSignalDSL.g:1119:1: ruleXSetLiteral EOF
+            // InternalSignalDSL.g:1268:1: ( ruleXSetLiteral EOF )
+            // InternalSignalDSL.g:1269:1: ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralRule()); 
@@ -3736,23 +4257,23 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalSignalDSL.g:1126:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1276:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
     public final void ruleXSetLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1130:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1131:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1280:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1281:2: ( ( rule__XSetLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1131:2: ( ( rule__XSetLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1132:3: ( rule__XSetLiteral__Group__0 )
+            // InternalSignalDSL.g:1281:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1282:3: ( rule__XSetLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1133:3: ( rule__XSetLiteral__Group__0 )
-            // InternalSignalDSL.g:1133:4: rule__XSetLiteral__Group__0
+            // InternalSignalDSL.g:1283:3: ( rule__XSetLiteral__Group__0 )
+            // InternalSignalDSL.g:1283:4: rule__XSetLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__0();
@@ -3787,11 +4308,11 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalSignalDSL.g:1142:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    // InternalSignalDSL.g:1292:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
     public final void entryRuleXListLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1143:1: ( ruleXListLiteral EOF )
-            // InternalSignalDSL.g:1144:1: ruleXListLiteral EOF
+            // InternalSignalDSL.g:1293:1: ( ruleXListLiteral EOF )
+            // InternalSignalDSL.g:1294:1: ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralRule()); 
@@ -3821,23 +4342,23 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalSignalDSL.g:1151:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1301:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
     public final void ruleXListLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1155:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1156:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1305:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1306:2: ( ( rule__XListLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1156:2: ( ( rule__XListLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1157:3: ( rule__XListLiteral__Group__0 )
+            // InternalSignalDSL.g:1306:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1307:3: ( rule__XListLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1158:3: ( rule__XListLiteral__Group__0 )
-            // InternalSignalDSL.g:1158:4: rule__XListLiteral__Group__0
+            // InternalSignalDSL.g:1308:3: ( rule__XListLiteral__Group__0 )
+            // InternalSignalDSL.g:1308:4: rule__XListLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__0();
@@ -3872,11 +4393,11 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalSignalDSL.g:1167:1: entryRuleXClosure : ruleXClosure EOF ;
+    // InternalSignalDSL.g:1317:1: entryRuleXClosure : ruleXClosure EOF ;
     public final void entryRuleXClosure() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1168:1: ( ruleXClosure EOF )
-            // InternalSignalDSL.g:1169:1: ruleXClosure EOF
+            // InternalSignalDSL.g:1318:1: ( ruleXClosure EOF )
+            // InternalSignalDSL.g:1319:1: ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureRule()); 
@@ -3906,23 +4427,23 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalSignalDSL.g:1176:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    // InternalSignalDSL.g:1326:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
     public final void ruleXClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1180:2: ( ( ( rule__XClosure__Group__0 ) ) )
-            // InternalSignalDSL.g:1181:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalSignalDSL.g:1330:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalSignalDSL.g:1331:2: ( ( rule__XClosure__Group__0 ) )
             {
-            // InternalSignalDSL.g:1181:2: ( ( rule__XClosure__Group__0 ) )
-            // InternalSignalDSL.g:1182:3: ( rule__XClosure__Group__0 )
+            // InternalSignalDSL.g:1331:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalSignalDSL.g:1332:3: ( rule__XClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1183:3: ( rule__XClosure__Group__0 )
-            // InternalSignalDSL.g:1183:4: rule__XClosure__Group__0
+            // InternalSignalDSL.g:1333:3: ( rule__XClosure__Group__0 )
+            // InternalSignalDSL.g:1333:4: rule__XClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__0();
@@ -3957,11 +4478,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalSignalDSL.g:1192:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    // InternalSignalDSL.g:1342:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
     public final void entryRuleXExpressionInClosure() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1193:1: ( ruleXExpressionInClosure EOF )
-            // InternalSignalDSL.g:1194:1: ruleXExpressionInClosure EOF
+            // InternalSignalDSL.g:1343:1: ( ruleXExpressionInClosure EOF )
+            // InternalSignalDSL.g:1344:1: ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureRule()); 
@@ -3991,23 +4512,23 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalSignalDSL.g:1201:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    // InternalSignalDSL.g:1351:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
     public final void ruleXExpressionInClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1205:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
-            // InternalSignalDSL.g:1206:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalSignalDSL.g:1355:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalSignalDSL.g:1356:2: ( ( rule__XExpressionInClosure__Group__0 ) )
             {
-            // InternalSignalDSL.g:1206:2: ( ( rule__XExpressionInClosure__Group__0 ) )
-            // InternalSignalDSL.g:1207:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalSignalDSL.g:1356:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalSignalDSL.g:1357:3: ( rule__XExpressionInClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1208:3: ( rule__XExpressionInClosure__Group__0 )
-            // InternalSignalDSL.g:1208:4: rule__XExpressionInClosure__Group__0
+            // InternalSignalDSL.g:1358:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalSignalDSL.g:1358:4: rule__XExpressionInClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__0();
@@ -4042,11 +4563,11 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalSignalDSL.g:1217:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    // InternalSignalDSL.g:1367:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
     public final void entryRuleXShortClosure() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1218:1: ( ruleXShortClosure EOF )
-            // InternalSignalDSL.g:1219:1: ruleXShortClosure EOF
+            // InternalSignalDSL.g:1368:1: ( ruleXShortClosure EOF )
+            // InternalSignalDSL.g:1369:1: ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureRule()); 
@@ -4076,23 +4597,23 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalSignalDSL.g:1226:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    // InternalSignalDSL.g:1376:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
     public final void ruleXShortClosure() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1230:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
-            // InternalSignalDSL.g:1231:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalSignalDSL.g:1380:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalSignalDSL.g:1381:2: ( ( rule__XShortClosure__Group__0 ) )
             {
-            // InternalSignalDSL.g:1231:2: ( ( rule__XShortClosure__Group__0 ) )
-            // InternalSignalDSL.g:1232:3: ( rule__XShortClosure__Group__0 )
+            // InternalSignalDSL.g:1381:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalSignalDSL.g:1382:3: ( rule__XShortClosure__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1233:3: ( rule__XShortClosure__Group__0 )
-            // InternalSignalDSL.g:1233:4: rule__XShortClosure__Group__0
+            // InternalSignalDSL.g:1383:3: ( rule__XShortClosure__Group__0 )
+            // InternalSignalDSL.g:1383:4: rule__XShortClosure__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__0();
@@ -4127,11 +4648,11 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalSignalDSL.g:1242:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    // InternalSignalDSL.g:1392:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
     public final void entryRuleXParenthesizedExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1243:1: ( ruleXParenthesizedExpression EOF )
-            // InternalSignalDSL.g:1244:1: ruleXParenthesizedExpression EOF
+            // InternalSignalDSL.g:1393:1: ( ruleXParenthesizedExpression EOF )
+            // InternalSignalDSL.g:1394:1: ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -4161,23 +4682,23 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalSignalDSL.g:1251:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1401:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
     public final void ruleXParenthesizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1255:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1256:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1405:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1406:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1256:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
-            // InternalSignalDSL.g:1257:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalSignalDSL.g:1406:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:1407:3: ( rule__XParenthesizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1258:3: ( rule__XParenthesizedExpression__Group__0 )
-            // InternalSignalDSL.g:1258:4: rule__XParenthesizedExpression__Group__0
+            // InternalSignalDSL.g:1408:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalSignalDSL.g:1408:4: rule__XParenthesizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__0();
@@ -4212,11 +4733,11 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalSignalDSL.g:1267:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    // InternalSignalDSL.g:1417:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
     public final void entryRuleXIfExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1268:1: ( ruleXIfExpression EOF )
-            // InternalSignalDSL.g:1269:1: ruleXIfExpression EOF
+            // InternalSignalDSL.g:1418:1: ( ruleXIfExpression EOF )
+            // InternalSignalDSL.g:1419:1: ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionRule()); 
@@ -4246,23 +4767,23 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalSignalDSL.g:1276:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1426:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
     public final void ruleXIfExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1280:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1281:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalSignalDSL.g:1430:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1431:2: ( ( rule__XIfExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1281:2: ( ( rule__XIfExpression__Group__0 ) )
-            // InternalSignalDSL.g:1282:3: ( rule__XIfExpression__Group__0 )
+            // InternalSignalDSL.g:1431:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalSignalDSL.g:1432:3: ( rule__XIfExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1283:3: ( rule__XIfExpression__Group__0 )
-            // InternalSignalDSL.g:1283:4: rule__XIfExpression__Group__0
+            // InternalSignalDSL.g:1433:3: ( rule__XIfExpression__Group__0 )
+            // InternalSignalDSL.g:1433:4: rule__XIfExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__0();
@@ -4297,11 +4818,11 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalSignalDSL.g:1292:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    // InternalSignalDSL.g:1442:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
     public final void entryRuleXSwitchExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1293:1: ( ruleXSwitchExpression EOF )
-            // InternalSignalDSL.g:1294:1: ruleXSwitchExpression EOF
+            // InternalSignalDSL.g:1443:1: ( ruleXSwitchExpression EOF )
+            // InternalSignalDSL.g:1444:1: ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionRule()); 
@@ -4331,23 +4852,23 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalSignalDSL.g:1301:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1451:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
     public final void ruleXSwitchExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1305:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1306:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalSignalDSL.g:1455:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1456:2: ( ( rule__XSwitchExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1306:2: ( ( rule__XSwitchExpression__Group__0 ) )
-            // InternalSignalDSL.g:1307:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalSignalDSL.g:1456:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalSignalDSL.g:1457:3: ( rule__XSwitchExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1308:3: ( rule__XSwitchExpression__Group__0 )
-            // InternalSignalDSL.g:1308:4: rule__XSwitchExpression__Group__0
+            // InternalSignalDSL.g:1458:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalSignalDSL.g:1458:4: rule__XSwitchExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__0();
@@ -4382,11 +4903,11 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalSignalDSL.g:1317:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    // InternalSignalDSL.g:1467:1: entryRuleXCasePart : ruleXCasePart EOF ;
     public final void entryRuleXCasePart() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1318:1: ( ruleXCasePart EOF )
-            // InternalSignalDSL.g:1319:1: ruleXCasePart EOF
+            // InternalSignalDSL.g:1468:1: ( ruleXCasePart EOF )
+            // InternalSignalDSL.g:1469:1: ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartRule()); 
@@ -4416,23 +4937,23 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalSignalDSL.g:1326:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    // InternalSignalDSL.g:1476:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
     public final void ruleXCasePart() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1330:2: ( ( ( rule__XCasePart__Group__0 ) ) )
-            // InternalSignalDSL.g:1331:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalSignalDSL.g:1480:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalSignalDSL.g:1481:2: ( ( rule__XCasePart__Group__0 ) )
             {
-            // InternalSignalDSL.g:1331:2: ( ( rule__XCasePart__Group__0 ) )
-            // InternalSignalDSL.g:1332:3: ( rule__XCasePart__Group__0 )
+            // InternalSignalDSL.g:1481:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalSignalDSL.g:1482:3: ( rule__XCasePart__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1333:3: ( rule__XCasePart__Group__0 )
-            // InternalSignalDSL.g:1333:4: rule__XCasePart__Group__0
+            // InternalSignalDSL.g:1483:3: ( rule__XCasePart__Group__0 )
+            // InternalSignalDSL.g:1483:4: rule__XCasePart__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__0();
@@ -4467,11 +4988,11 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalSignalDSL.g:1342:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    // InternalSignalDSL.g:1492:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
     public final void entryRuleXForLoopExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1343:1: ( ruleXForLoopExpression EOF )
-            // InternalSignalDSL.g:1344:1: ruleXForLoopExpression EOF
+            // InternalSignalDSL.g:1493:1: ( ruleXForLoopExpression EOF )
+            // InternalSignalDSL.g:1494:1: ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionRule()); 
@@ -4501,23 +5022,23 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalSignalDSL.g:1351:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1501:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
     public final void ruleXForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1355:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1356:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1505:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1506:2: ( ( rule__XForLoopExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1356:2: ( ( rule__XForLoopExpression__Group__0 ) )
-            // InternalSignalDSL.g:1357:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1506:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1507:3: ( rule__XForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1358:3: ( rule__XForLoopExpression__Group__0 )
-            // InternalSignalDSL.g:1358:4: rule__XForLoopExpression__Group__0
+            // InternalSignalDSL.g:1508:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1508:4: rule__XForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__0();
@@ -4552,11 +5073,11 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalSignalDSL.g:1367:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    // InternalSignalDSL.g:1517:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
     public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1368:1: ( ruleXBasicForLoopExpression EOF )
-            // InternalSignalDSL.g:1369:1: ruleXBasicForLoopExpression EOF
+            // InternalSignalDSL.g:1518:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalSignalDSL.g:1519:1: ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -4586,23 +5107,23 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalSignalDSL.g:1376:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1526:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
     public final void ruleXBasicForLoopExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1380:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1381:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1530:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1531:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1381:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
-            // InternalSignalDSL.g:1382:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1531:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalSignalDSL.g:1532:3: ( rule__XBasicForLoopExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1383:3: ( rule__XBasicForLoopExpression__Group__0 )
-            // InternalSignalDSL.g:1383:4: rule__XBasicForLoopExpression__Group__0
+            // InternalSignalDSL.g:1533:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalSignalDSL.g:1533:4: rule__XBasicForLoopExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__0();
@@ -4637,11 +5158,11 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalSignalDSL.g:1392:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    // InternalSignalDSL.g:1542:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
     public final void entryRuleXWhileExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1393:1: ( ruleXWhileExpression EOF )
-            // InternalSignalDSL.g:1394:1: ruleXWhileExpression EOF
+            // InternalSignalDSL.g:1543:1: ( ruleXWhileExpression EOF )
+            // InternalSignalDSL.g:1544:1: ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionRule()); 
@@ -4671,23 +5192,23 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalSignalDSL.g:1401:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1551:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
     public final void ruleXWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1405:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1406:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1555:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1556:2: ( ( rule__XWhileExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1406:2: ( ( rule__XWhileExpression__Group__0 ) )
-            // InternalSignalDSL.g:1407:3: ( rule__XWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1556:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1557:3: ( rule__XWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1408:3: ( rule__XWhileExpression__Group__0 )
-            // InternalSignalDSL.g:1408:4: rule__XWhileExpression__Group__0
+            // InternalSignalDSL.g:1558:3: ( rule__XWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1558:4: rule__XWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__0();
@@ -4722,11 +5243,11 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalSignalDSL.g:1417:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    // InternalSignalDSL.g:1567:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
     public final void entryRuleXDoWhileExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1418:1: ( ruleXDoWhileExpression EOF )
-            // InternalSignalDSL.g:1419:1: ruleXDoWhileExpression EOF
+            // InternalSignalDSL.g:1568:1: ( ruleXDoWhileExpression EOF )
+            // InternalSignalDSL.g:1569:1: ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionRule()); 
@@ -4756,23 +5277,23 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalSignalDSL.g:1426:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1576:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
     public final void ruleXDoWhileExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1430:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1431:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1580:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1581:2: ( ( rule__XDoWhileExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1431:2: ( ( rule__XDoWhileExpression__Group__0 ) )
-            // InternalSignalDSL.g:1432:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1581:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalSignalDSL.g:1582:3: ( rule__XDoWhileExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1433:3: ( rule__XDoWhileExpression__Group__0 )
-            // InternalSignalDSL.g:1433:4: rule__XDoWhileExpression__Group__0
+            // InternalSignalDSL.g:1583:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalSignalDSL.g:1583:4: rule__XDoWhileExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__0();
@@ -4807,11 +5328,11 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalSignalDSL.g:1442:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    // InternalSignalDSL.g:1592:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
     public final void entryRuleXBlockExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1443:1: ( ruleXBlockExpression EOF )
-            // InternalSignalDSL.g:1444:1: ruleXBlockExpression EOF
+            // InternalSignalDSL.g:1593:1: ( ruleXBlockExpression EOF )
+            // InternalSignalDSL.g:1594:1: ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionRule()); 
@@ -4841,23 +5362,23 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalSignalDSL.g:1451:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1601:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
     public final void ruleXBlockExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1455:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1456:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalSignalDSL.g:1605:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1606:2: ( ( rule__XBlockExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1456:2: ( ( rule__XBlockExpression__Group__0 ) )
-            // InternalSignalDSL.g:1457:3: ( rule__XBlockExpression__Group__0 )
+            // InternalSignalDSL.g:1606:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalSignalDSL.g:1607:3: ( rule__XBlockExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1458:3: ( rule__XBlockExpression__Group__0 )
-            // InternalSignalDSL.g:1458:4: rule__XBlockExpression__Group__0
+            // InternalSignalDSL.g:1608:3: ( rule__XBlockExpression__Group__0 )
+            // InternalSignalDSL.g:1608:4: rule__XBlockExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__0();
@@ -4892,11 +5413,11 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:1467:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    // InternalSignalDSL.g:1617:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
     public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1468:1: ( ruleXExpressionOrVarDeclaration EOF )
-            // InternalSignalDSL.g:1469:1: ruleXExpressionOrVarDeclaration EOF
+            // InternalSignalDSL.g:1618:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalSignalDSL.g:1619:1: ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -4926,23 +5447,23 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:1476:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    // InternalSignalDSL.g:1626:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
     public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1480:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
-            // InternalSignalDSL.g:1481:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalSignalDSL.g:1630:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalSignalDSL.g:1631:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
             {
-            // InternalSignalDSL.g:1481:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
-            // InternalSignalDSL.g:1482:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalSignalDSL.g:1631:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalSignalDSL.g:1632:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1483:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
-            // InternalSignalDSL.g:1483:4: rule__XExpressionOrVarDeclaration__Alternatives
+            // InternalSignalDSL.g:1633:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalSignalDSL.g:1633:4: rule__XExpressionOrVarDeclaration__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionOrVarDeclaration__Alternatives();
@@ -4977,11 +5498,11 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalSignalDSL.g:1492:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    // InternalSignalDSL.g:1642:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
     public final void entryRuleXVariableDeclaration() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1493:1: ( ruleXVariableDeclaration EOF )
-            // InternalSignalDSL.g:1494:1: ruleXVariableDeclaration EOF
+            // InternalSignalDSL.g:1643:1: ( ruleXVariableDeclaration EOF )
+            // InternalSignalDSL.g:1644:1: ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationRule()); 
@@ -5011,23 +5532,23 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalSignalDSL.g:1501:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    // InternalSignalDSL.g:1651:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
     public final void ruleXVariableDeclaration() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1505:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
-            // InternalSignalDSL.g:1506:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:1655:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalSignalDSL.g:1656:2: ( ( rule__XVariableDeclaration__Group__0 ) )
             {
-            // InternalSignalDSL.g:1506:2: ( ( rule__XVariableDeclaration__Group__0 ) )
-            // InternalSignalDSL.g:1507:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalSignalDSL.g:1656:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalSignalDSL.g:1657:3: ( rule__XVariableDeclaration__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1508:3: ( rule__XVariableDeclaration__Group__0 )
-            // InternalSignalDSL.g:1508:4: rule__XVariableDeclaration__Group__0
+            // InternalSignalDSL.g:1658:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalSignalDSL.g:1658:4: rule__XVariableDeclaration__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__0();
@@ -5062,11 +5583,11 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalSignalDSL.g:1517:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:1667:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
     public final void entryRuleJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1518:1: ( ruleJvmFormalParameter EOF )
-            // InternalSignalDSL.g:1519:1: ruleJvmFormalParameter EOF
+            // InternalSignalDSL.g:1668:1: ( ruleJvmFormalParameter EOF )
+            // InternalSignalDSL.g:1669:1: ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterRule()); 
@@ -5096,23 +5617,23 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalSignalDSL.g:1526:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    // InternalSignalDSL.g:1676:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
     public final void ruleJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1530:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
-            // InternalSignalDSL.g:1531:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1680:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalSignalDSL.g:1681:2: ( ( rule__JvmFormalParameter__Group__0 ) )
             {
-            // InternalSignalDSL.g:1531:2: ( ( rule__JvmFormalParameter__Group__0 ) )
-            // InternalSignalDSL.g:1532:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1681:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1682:3: ( rule__JvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1533:3: ( rule__JvmFormalParameter__Group__0 )
-            // InternalSignalDSL.g:1533:4: rule__JvmFormalParameter__Group__0
+            // InternalSignalDSL.g:1683:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1683:4: rule__JvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__0();
@@ -5147,11 +5668,11 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalSignalDSL.g:1542:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:1692:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
     public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1543:1: ( ruleFullJvmFormalParameter EOF )
-            // InternalSignalDSL.g:1544:1: ruleFullJvmFormalParameter EOF
+            // InternalSignalDSL.g:1693:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalSignalDSL.g:1694:1: ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -5181,23 +5702,23 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalSignalDSL.g:1551:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    // InternalSignalDSL.g:1701:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
     public final void ruleFullJvmFormalParameter() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1555:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
-            // InternalSignalDSL.g:1556:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1705:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalSignalDSL.g:1706:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
             {
-            // InternalSignalDSL.g:1556:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
-            // InternalSignalDSL.g:1557:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1706:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalSignalDSL.g:1707:3: ( rule__FullJvmFormalParameter__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1558:3: ( rule__FullJvmFormalParameter__Group__0 )
-            // InternalSignalDSL.g:1558:4: rule__FullJvmFormalParameter__Group__0
+            // InternalSignalDSL.g:1708:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalSignalDSL.g:1708:4: rule__FullJvmFormalParameter__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__0();
@@ -5232,11 +5753,11 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalSignalDSL.g:1567:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    // InternalSignalDSL.g:1717:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
     public final void entryRuleXFeatureCall() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1568:1: ( ruleXFeatureCall EOF )
-            // InternalSignalDSL.g:1569:1: ruleXFeatureCall EOF
+            // InternalSignalDSL.g:1718:1: ( ruleXFeatureCall EOF )
+            // InternalSignalDSL.g:1719:1: ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallRule()); 
@@ -5266,23 +5787,23 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalSignalDSL.g:1576:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    // InternalSignalDSL.g:1726:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
     public final void ruleXFeatureCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1580:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
-            // InternalSignalDSL.g:1581:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1730:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalSignalDSL.g:1731:2: ( ( rule__XFeatureCall__Group__0 ) )
             {
-            // InternalSignalDSL.g:1581:2: ( ( rule__XFeatureCall__Group__0 ) )
-            // InternalSignalDSL.g:1582:3: ( rule__XFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1731:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalSignalDSL.g:1732:3: ( rule__XFeatureCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1583:3: ( rule__XFeatureCall__Group__0 )
-            // InternalSignalDSL.g:1583:4: rule__XFeatureCall__Group__0
+            // InternalSignalDSL.g:1733:3: ( rule__XFeatureCall__Group__0 )
+            // InternalSignalDSL.g:1733:4: rule__XFeatureCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__0();
@@ -5317,11 +5838,11 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalSignalDSL.g:1592:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    // InternalSignalDSL.g:1742:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
     public final void entryRuleFeatureCallID() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1593:1: ( ruleFeatureCallID EOF )
-            // InternalSignalDSL.g:1594:1: ruleFeatureCallID EOF
+            // InternalSignalDSL.g:1743:1: ( ruleFeatureCallID EOF )
+            // InternalSignalDSL.g:1744:1: ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDRule()); 
@@ -5351,23 +5872,23 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalSignalDSL.g:1601:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    // InternalSignalDSL.g:1751:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
     public final void ruleFeatureCallID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1605:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
-            // InternalSignalDSL.g:1606:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalSignalDSL.g:1755:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalSignalDSL.g:1756:2: ( ( rule__FeatureCallID__Alternatives ) )
             {
-            // InternalSignalDSL.g:1606:2: ( ( rule__FeatureCallID__Alternatives ) )
-            // InternalSignalDSL.g:1607:3: ( rule__FeatureCallID__Alternatives )
+            // InternalSignalDSL.g:1756:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalSignalDSL.g:1757:3: ( rule__FeatureCallID__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1608:3: ( rule__FeatureCallID__Alternatives )
-            // InternalSignalDSL.g:1608:4: rule__FeatureCallID__Alternatives
+            // InternalSignalDSL.g:1758:3: ( rule__FeatureCallID__Alternatives )
+            // InternalSignalDSL.g:1758:4: rule__FeatureCallID__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__FeatureCallID__Alternatives();
@@ -5402,11 +5923,11 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalSignalDSL.g:1617:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    // InternalSignalDSL.g:1767:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
     public final void entryRuleIdOrSuper() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1618:1: ( ruleIdOrSuper EOF )
-            // InternalSignalDSL.g:1619:1: ruleIdOrSuper EOF
+            // InternalSignalDSL.g:1768:1: ( ruleIdOrSuper EOF )
+            // InternalSignalDSL.g:1769:1: ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperRule()); 
@@ -5436,23 +5957,23 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalSignalDSL.g:1626:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    // InternalSignalDSL.g:1776:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
     public final void ruleIdOrSuper() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1630:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
-            // InternalSignalDSL.g:1631:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalSignalDSL.g:1780:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalSignalDSL.g:1781:2: ( ( rule__IdOrSuper__Alternatives ) )
             {
-            // InternalSignalDSL.g:1631:2: ( ( rule__IdOrSuper__Alternatives ) )
-            // InternalSignalDSL.g:1632:3: ( rule__IdOrSuper__Alternatives )
+            // InternalSignalDSL.g:1781:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalSignalDSL.g:1782:3: ( rule__IdOrSuper__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1633:3: ( rule__IdOrSuper__Alternatives )
-            // InternalSignalDSL.g:1633:4: rule__IdOrSuper__Alternatives
+            // InternalSignalDSL.g:1783:3: ( rule__IdOrSuper__Alternatives )
+            // InternalSignalDSL.g:1783:4: rule__IdOrSuper__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__IdOrSuper__Alternatives();
@@ -5487,11 +6008,11 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalSignalDSL.g:1642:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    // InternalSignalDSL.g:1792:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
     public final void entryRuleXConstructorCall() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1643:1: ( ruleXConstructorCall EOF )
-            // InternalSignalDSL.g:1644:1: ruleXConstructorCall EOF
+            // InternalSignalDSL.g:1793:1: ( ruleXConstructorCall EOF )
+            // InternalSignalDSL.g:1794:1: ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallRule()); 
@@ -5521,23 +6042,23 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalSignalDSL.g:1651:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    // InternalSignalDSL.g:1801:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
     public final void ruleXConstructorCall() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1655:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
-            // InternalSignalDSL.g:1656:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalSignalDSL.g:1805:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalSignalDSL.g:1806:2: ( ( rule__XConstructorCall__Group__0 ) )
             {
-            // InternalSignalDSL.g:1656:2: ( ( rule__XConstructorCall__Group__0 ) )
-            // InternalSignalDSL.g:1657:3: ( rule__XConstructorCall__Group__0 )
+            // InternalSignalDSL.g:1806:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalSignalDSL.g:1807:3: ( rule__XConstructorCall__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1658:3: ( rule__XConstructorCall__Group__0 )
-            // InternalSignalDSL.g:1658:4: rule__XConstructorCall__Group__0
+            // InternalSignalDSL.g:1808:3: ( rule__XConstructorCall__Group__0 )
+            // InternalSignalDSL.g:1808:4: rule__XConstructorCall__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__0();
@@ -5572,11 +6093,11 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalSignalDSL.g:1667:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    // InternalSignalDSL.g:1817:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
     public final void entryRuleXBooleanLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1668:1: ( ruleXBooleanLiteral EOF )
-            // InternalSignalDSL.g:1669:1: ruleXBooleanLiteral EOF
+            // InternalSignalDSL.g:1818:1: ( ruleXBooleanLiteral EOF )
+            // InternalSignalDSL.g:1819:1: ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralRule()); 
@@ -5606,23 +6127,23 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalSignalDSL.g:1676:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1826:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
     public final void ruleXBooleanLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1680:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1681:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1830:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1831:2: ( ( rule__XBooleanLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1681:2: ( ( rule__XBooleanLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1682:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalSignalDSL.g:1831:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1832:3: ( rule__XBooleanLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1683:3: ( rule__XBooleanLiteral__Group__0 )
-            // InternalSignalDSL.g:1683:4: rule__XBooleanLiteral__Group__0
+            // InternalSignalDSL.g:1833:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalSignalDSL.g:1833:4: rule__XBooleanLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__0();
@@ -5657,11 +6178,11 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalSignalDSL.g:1692:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    // InternalSignalDSL.g:1842:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
     public final void entryRuleXNullLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1693:1: ( ruleXNullLiteral EOF )
-            // InternalSignalDSL.g:1694:1: ruleXNullLiteral EOF
+            // InternalSignalDSL.g:1843:1: ( ruleXNullLiteral EOF )
+            // InternalSignalDSL.g:1844:1: ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralRule()); 
@@ -5691,23 +6212,23 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalSignalDSL.g:1701:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1851:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
     public final void ruleXNullLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1705:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1706:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1855:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1856:2: ( ( rule__XNullLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1706:2: ( ( rule__XNullLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1707:3: ( rule__XNullLiteral__Group__0 )
+            // InternalSignalDSL.g:1856:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1857:3: ( rule__XNullLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1708:3: ( rule__XNullLiteral__Group__0 )
-            // InternalSignalDSL.g:1708:4: rule__XNullLiteral__Group__0
+            // InternalSignalDSL.g:1858:3: ( rule__XNullLiteral__Group__0 )
+            // InternalSignalDSL.g:1858:4: rule__XNullLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__0();
@@ -5742,11 +6263,11 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalSignalDSL.g:1717:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    // InternalSignalDSL.g:1867:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
     public final void entryRuleXNumberLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1718:1: ( ruleXNumberLiteral EOF )
-            // InternalSignalDSL.g:1719:1: ruleXNumberLiteral EOF
+            // InternalSignalDSL.g:1868:1: ( ruleXNumberLiteral EOF )
+            // InternalSignalDSL.g:1869:1: ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralRule()); 
@@ -5776,23 +6297,23 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalSignalDSL.g:1726:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1876:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
     public final void ruleXNumberLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1730:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1731:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1880:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1881:2: ( ( rule__XNumberLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1731:2: ( ( rule__XNumberLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1732:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalSignalDSL.g:1881:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1882:3: ( rule__XNumberLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1733:3: ( rule__XNumberLiteral__Group__0 )
-            // InternalSignalDSL.g:1733:4: rule__XNumberLiteral__Group__0
+            // InternalSignalDSL.g:1883:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalSignalDSL.g:1883:4: rule__XNumberLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__0();
@@ -5827,11 +6348,11 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalSignalDSL.g:1742:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    // InternalSignalDSL.g:1892:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
     public final void entryRuleXStringLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1743:1: ( ruleXStringLiteral EOF )
-            // InternalSignalDSL.g:1744:1: ruleXStringLiteral EOF
+            // InternalSignalDSL.g:1893:1: ( ruleXStringLiteral EOF )
+            // InternalSignalDSL.g:1894:1: ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralRule()); 
@@ -5861,23 +6382,23 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalSignalDSL.g:1751:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1901:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
     public final void ruleXStringLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1755:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1756:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1905:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1906:2: ( ( rule__XStringLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1756:2: ( ( rule__XStringLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1757:3: ( rule__XStringLiteral__Group__0 )
+            // InternalSignalDSL.g:1906:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1907:3: ( rule__XStringLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1758:3: ( rule__XStringLiteral__Group__0 )
-            // InternalSignalDSL.g:1758:4: rule__XStringLiteral__Group__0
+            // InternalSignalDSL.g:1908:3: ( rule__XStringLiteral__Group__0 )
+            // InternalSignalDSL.g:1908:4: rule__XStringLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__0();
@@ -5912,11 +6433,11 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalSignalDSL.g:1767:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    // InternalSignalDSL.g:1917:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
     public final void entryRuleXTypeLiteral() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1768:1: ( ruleXTypeLiteral EOF )
-            // InternalSignalDSL.g:1769:1: ruleXTypeLiteral EOF
+            // InternalSignalDSL.g:1918:1: ( ruleXTypeLiteral EOF )
+            // InternalSignalDSL.g:1919:1: ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralRule()); 
@@ -5946,23 +6467,23 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalSignalDSL.g:1776:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    // InternalSignalDSL.g:1926:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
     public final void ruleXTypeLiteral() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1780:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
-            // InternalSignalDSL.g:1781:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1930:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalSignalDSL.g:1931:2: ( ( rule__XTypeLiteral__Group__0 ) )
             {
-            // InternalSignalDSL.g:1781:2: ( ( rule__XTypeLiteral__Group__0 ) )
-            // InternalSignalDSL.g:1782:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalSignalDSL.g:1931:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalSignalDSL.g:1932:3: ( rule__XTypeLiteral__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1783:3: ( rule__XTypeLiteral__Group__0 )
-            // InternalSignalDSL.g:1783:4: rule__XTypeLiteral__Group__0
+            // InternalSignalDSL.g:1933:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalSignalDSL.g:1933:4: rule__XTypeLiteral__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__0();
@@ -5997,11 +6518,11 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalSignalDSL.g:1792:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    // InternalSignalDSL.g:1942:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
     public final void entryRuleXThrowExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1793:1: ( ruleXThrowExpression EOF )
-            // InternalSignalDSL.g:1794:1: ruleXThrowExpression EOF
+            // InternalSignalDSL.g:1943:1: ( ruleXThrowExpression EOF )
+            // InternalSignalDSL.g:1944:1: ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionRule()); 
@@ -6031,23 +6552,23 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalSignalDSL.g:1801:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1951:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
     public final void ruleXThrowExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1805:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1806:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalSignalDSL.g:1955:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1956:2: ( ( rule__XThrowExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1806:2: ( ( rule__XThrowExpression__Group__0 ) )
-            // InternalSignalDSL.g:1807:3: ( rule__XThrowExpression__Group__0 )
+            // InternalSignalDSL.g:1956:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalSignalDSL.g:1957:3: ( rule__XThrowExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1808:3: ( rule__XThrowExpression__Group__0 )
-            // InternalSignalDSL.g:1808:4: rule__XThrowExpression__Group__0
+            // InternalSignalDSL.g:1958:3: ( rule__XThrowExpression__Group__0 )
+            // InternalSignalDSL.g:1958:4: rule__XThrowExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__0();
@@ -6082,11 +6603,11 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalSignalDSL.g:1817:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    // InternalSignalDSL.g:1967:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
     public final void entryRuleXReturnExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1818:1: ( ruleXReturnExpression EOF )
-            // InternalSignalDSL.g:1819:1: ruleXReturnExpression EOF
+            // InternalSignalDSL.g:1968:1: ( ruleXReturnExpression EOF )
+            // InternalSignalDSL.g:1969:1: ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionRule()); 
@@ -6116,23 +6637,23 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalSignalDSL.g:1826:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:1976:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
     public final void ruleXReturnExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1830:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1831:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalSignalDSL.g:1980:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:1981:2: ( ( rule__XReturnExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1831:2: ( ( rule__XReturnExpression__Group__0 ) )
-            // InternalSignalDSL.g:1832:3: ( rule__XReturnExpression__Group__0 )
+            // InternalSignalDSL.g:1981:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalSignalDSL.g:1982:3: ( rule__XReturnExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1833:3: ( rule__XReturnExpression__Group__0 )
-            // InternalSignalDSL.g:1833:4: rule__XReturnExpression__Group__0
+            // InternalSignalDSL.g:1983:3: ( rule__XReturnExpression__Group__0 )
+            // InternalSignalDSL.g:1983:4: rule__XReturnExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__0();
@@ -6167,11 +6688,11 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:1842:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    // InternalSignalDSL.g:1992:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
     public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1843:1: ( ruleXTryCatchFinallyExpression EOF )
-            // InternalSignalDSL.g:1844:1: ruleXTryCatchFinallyExpression EOF
+            // InternalSignalDSL.g:1993:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalSignalDSL.g:1994:1: ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -6201,23 +6722,23 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:1851:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:2001:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
     public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1855:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1856:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalSignalDSL.g:2005:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:2006:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1856:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
-            // InternalSignalDSL.g:1857:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalSignalDSL.g:2006:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalSignalDSL.g:2007:3: ( rule__XTryCatchFinallyExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1858:3: ( rule__XTryCatchFinallyExpression__Group__0 )
-            // InternalSignalDSL.g:1858:4: rule__XTryCatchFinallyExpression__Group__0
+            // InternalSignalDSL.g:2008:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalSignalDSL.g:2008:4: rule__XTryCatchFinallyExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__0();
@@ -6252,11 +6773,11 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalSignalDSL.g:1867:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    // InternalSignalDSL.g:2017:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
     public final void entryRuleXSynchronizedExpression() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1868:1: ( ruleXSynchronizedExpression EOF )
-            // InternalSignalDSL.g:1869:1: ruleXSynchronizedExpression EOF
+            // InternalSignalDSL.g:2018:1: ( ruleXSynchronizedExpression EOF )
+            // InternalSignalDSL.g:2019:1: ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -6286,23 +6807,23 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalSignalDSL.g:1876:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    // InternalSignalDSL.g:2026:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
     public final void ruleXSynchronizedExpression() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1880:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
-            // InternalSignalDSL.g:1881:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:2030:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalSignalDSL.g:2031:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
             {
-            // InternalSignalDSL.g:1881:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
-            // InternalSignalDSL.g:1882:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalSignalDSL.g:2031:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalSignalDSL.g:2032:3: ( rule__XSynchronizedExpression__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1883:3: ( rule__XSynchronizedExpression__Group__0 )
-            // InternalSignalDSL.g:1883:4: rule__XSynchronizedExpression__Group__0
+            // InternalSignalDSL.g:2033:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalSignalDSL.g:2033:4: rule__XSynchronizedExpression__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__0();
@@ -6337,11 +6858,11 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalSignalDSL.g:1892:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    // InternalSignalDSL.g:2042:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
     public final void entryRuleXCatchClause() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1893:1: ( ruleXCatchClause EOF )
-            // InternalSignalDSL.g:1894:1: ruleXCatchClause EOF
+            // InternalSignalDSL.g:2043:1: ( ruleXCatchClause EOF )
+            // InternalSignalDSL.g:2044:1: ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseRule()); 
@@ -6371,23 +6892,23 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalSignalDSL.g:1901:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    // InternalSignalDSL.g:2051:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
     public final void ruleXCatchClause() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1905:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
-            // InternalSignalDSL.g:1906:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalSignalDSL.g:2055:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalSignalDSL.g:2056:2: ( ( rule__XCatchClause__Group__0 ) )
             {
-            // InternalSignalDSL.g:1906:2: ( ( rule__XCatchClause__Group__0 ) )
-            // InternalSignalDSL.g:1907:3: ( rule__XCatchClause__Group__0 )
+            // InternalSignalDSL.g:2056:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalSignalDSL.g:2057:3: ( rule__XCatchClause__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1908:3: ( rule__XCatchClause__Group__0 )
-            // InternalSignalDSL.g:1908:4: rule__XCatchClause__Group__0
+            // InternalSignalDSL.g:2058:3: ( rule__XCatchClause__Group__0 )
+            // InternalSignalDSL.g:2058:4: rule__XCatchClause__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__0();
@@ -6422,11 +6943,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalSignalDSL.g:1917:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    // InternalSignalDSL.g:2067:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
     public final void entryRuleQualifiedName() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1918:1: ( ruleQualifiedName EOF )
-            // InternalSignalDSL.g:1919:1: ruleQualifiedName EOF
+            // InternalSignalDSL.g:2068:1: ( ruleQualifiedName EOF )
+            // InternalSignalDSL.g:2069:1: ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameRule()); 
@@ -6456,23 +6977,23 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalSignalDSL.g:1926:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    // InternalSignalDSL.g:2076:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
     public final void ruleQualifiedName() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1930:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
-            // InternalSignalDSL.g:1931:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalSignalDSL.g:2080:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalSignalDSL.g:2081:2: ( ( rule__QualifiedName__Group__0 ) )
             {
-            // InternalSignalDSL.g:1931:2: ( ( rule__QualifiedName__Group__0 ) )
-            // InternalSignalDSL.g:1932:3: ( rule__QualifiedName__Group__0 )
+            // InternalSignalDSL.g:2081:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalSignalDSL.g:2082:3: ( rule__QualifiedName__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:1933:3: ( rule__QualifiedName__Group__0 )
-            // InternalSignalDSL.g:1933:4: rule__QualifiedName__Group__0
+            // InternalSignalDSL.g:2083:3: ( rule__QualifiedName__Group__0 )
+            // InternalSignalDSL.g:2083:4: rule__QualifiedName__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__0();
@@ -6507,14 +7028,14 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalSignalDSL.g:1942:1: entryRuleNumber : ruleNumber EOF ;
+    // InternalSignalDSL.g:2092:1: entryRuleNumber : ruleNumber EOF ;
     public final void entryRuleNumber() throws RecognitionException {
          
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalSignalDSL.g:1946:1: ( ruleNumber EOF )
-            // InternalSignalDSL.g:1947:1: ruleNumber EOF
+            // InternalSignalDSL.g:2096:1: ( ruleNumber EOF )
+            // InternalSignalDSL.g:2097:1: ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberRule()); 
@@ -6547,24 +7068,24 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalSignalDSL.g:1957:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    // InternalSignalDSL.g:2107:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
     public final void ruleNumber() throws RecognitionException {
 
         		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1962:2: ( ( ( rule__Number__Alternatives ) ) )
-            // InternalSignalDSL.g:1963:2: ( ( rule__Number__Alternatives ) )
+            // InternalSignalDSL.g:2112:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalSignalDSL.g:2113:2: ( ( rule__Number__Alternatives ) )
             {
-            // InternalSignalDSL.g:1963:2: ( ( rule__Number__Alternatives ) )
-            // InternalSignalDSL.g:1964:3: ( rule__Number__Alternatives )
+            // InternalSignalDSL.g:2113:2: ( ( rule__Number__Alternatives ) )
+            // InternalSignalDSL.g:2114:3: ( rule__Number__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1965:3: ( rule__Number__Alternatives )
-            // InternalSignalDSL.g:1965:4: rule__Number__Alternatives
+            // InternalSignalDSL.g:2115:3: ( rule__Number__Alternatives )
+            // InternalSignalDSL.g:2115:4: rule__Number__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives();
@@ -6600,11 +7121,11 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalSignalDSL.g:1975:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    // InternalSignalDSL.g:2125:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
     public final void entryRuleJvmTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:1976:1: ( ruleJvmTypeReference EOF )
-            // InternalSignalDSL.g:1977:1: ruleJvmTypeReference EOF
+            // InternalSignalDSL.g:2126:1: ( ruleJvmTypeReference EOF )
+            // InternalSignalDSL.g:2127:1: ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceRule()); 
@@ -6634,23 +7155,23 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalSignalDSL.g:1984:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    // InternalSignalDSL.g:2134:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
     public final void ruleJvmTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:1988:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
-            // InternalSignalDSL.g:1989:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2138:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalSignalDSL.g:2139:2: ( ( rule__JvmTypeReference__Alternatives ) )
             {
-            // InternalSignalDSL.g:1989:2: ( ( rule__JvmTypeReference__Alternatives ) )
-            // InternalSignalDSL.g:1990:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalSignalDSL.g:2139:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2140:3: ( rule__JvmTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:1991:3: ( rule__JvmTypeReference__Alternatives )
-            // InternalSignalDSL.g:1991:4: rule__JvmTypeReference__Alternatives
+            // InternalSignalDSL.g:2141:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalSignalDSL.g:2141:4: rule__JvmTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Alternatives();
@@ -6685,11 +7206,11 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalSignalDSL.g:2000:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    // InternalSignalDSL.g:2150:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
     public final void entryRuleArrayBrackets() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2001:1: ( ruleArrayBrackets EOF )
-            // InternalSignalDSL.g:2002:1: ruleArrayBrackets EOF
+            // InternalSignalDSL.g:2151:1: ( ruleArrayBrackets EOF )
+            // InternalSignalDSL.g:2152:1: ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsRule()); 
@@ -6719,23 +7240,23 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalSignalDSL.g:2009:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    // InternalSignalDSL.g:2159:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
     public final void ruleArrayBrackets() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2013:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
-            // InternalSignalDSL.g:2014:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalSignalDSL.g:2163:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalSignalDSL.g:2164:2: ( ( rule__ArrayBrackets__Group__0 ) )
             {
-            // InternalSignalDSL.g:2014:2: ( ( rule__ArrayBrackets__Group__0 ) )
-            // InternalSignalDSL.g:2015:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalSignalDSL.g:2164:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalSignalDSL.g:2165:3: ( rule__ArrayBrackets__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2016:3: ( rule__ArrayBrackets__Group__0 )
-            // InternalSignalDSL.g:2016:4: rule__ArrayBrackets__Group__0
+            // InternalSignalDSL.g:2166:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalSignalDSL.g:2166:4: rule__ArrayBrackets__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__0();
@@ -6770,11 +7291,11 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalSignalDSL.g:2025:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    // InternalSignalDSL.g:2175:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
     public final void entryRuleXFunctionTypeRef() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2026:1: ( ruleXFunctionTypeRef EOF )
-            // InternalSignalDSL.g:2027:1: ruleXFunctionTypeRef EOF
+            // InternalSignalDSL.g:2176:1: ( ruleXFunctionTypeRef EOF )
+            // InternalSignalDSL.g:2177:1: ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefRule()); 
@@ -6804,23 +7325,23 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalSignalDSL.g:2034:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    // InternalSignalDSL.g:2184:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
     public final void ruleXFunctionTypeRef() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2038:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
-            // InternalSignalDSL.g:2039:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalSignalDSL.g:2188:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalSignalDSL.g:2189:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
             {
-            // InternalSignalDSL.g:2039:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
-            // InternalSignalDSL.g:2040:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalSignalDSL.g:2189:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalSignalDSL.g:2190:3: ( rule__XFunctionTypeRef__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2041:3: ( rule__XFunctionTypeRef__Group__0 )
-            // InternalSignalDSL.g:2041:4: rule__XFunctionTypeRef__Group__0
+            // InternalSignalDSL.g:2191:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalSignalDSL.g:2191:4: rule__XFunctionTypeRef__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__0();
@@ -6855,11 +7376,11 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:2050:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    // InternalSignalDSL.g:2200:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
     public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2051:1: ( ruleJvmParameterizedTypeReference EOF )
-            // InternalSignalDSL.g:2052:1: ruleJvmParameterizedTypeReference EOF
+            // InternalSignalDSL.g:2201:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalSignalDSL.g:2202:1: ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -6889,23 +7410,23 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:2059:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    // InternalSignalDSL.g:2209:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
     public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2063:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
-            // InternalSignalDSL.g:2064:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2213:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalSignalDSL.g:2214:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
             {
-            // InternalSignalDSL.g:2064:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
-            // InternalSignalDSL.g:2065:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalSignalDSL.g:2214:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2215:3: ( rule__JvmParameterizedTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2066:3: ( rule__JvmParameterizedTypeReference__Group__0 )
-            // InternalSignalDSL.g:2066:4: rule__JvmParameterizedTypeReference__Group__0
+            // InternalSignalDSL.g:2216:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalSignalDSL.g:2216:4: rule__JvmParameterizedTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__0();
@@ -6940,11 +7461,11 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:2075:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    // InternalSignalDSL.g:2225:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
     public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2076:1: ( ruleJvmArgumentTypeReference EOF )
-            // InternalSignalDSL.g:2077:1: ruleJvmArgumentTypeReference EOF
+            // InternalSignalDSL.g:2226:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalSignalDSL.g:2227:1: ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -6974,23 +7495,23 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:2084:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    // InternalSignalDSL.g:2234:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
     public final void ruleJvmArgumentTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2088:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
-            // InternalSignalDSL.g:2089:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2238:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalSignalDSL.g:2239:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
             {
-            // InternalSignalDSL.g:2089:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
-            // InternalSignalDSL.g:2090:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalSignalDSL.g:2239:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalSignalDSL.g:2240:3: ( rule__JvmArgumentTypeReference__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2091:3: ( rule__JvmArgumentTypeReference__Alternatives )
-            // InternalSignalDSL.g:2091:4: rule__JvmArgumentTypeReference__Alternatives
+            // InternalSignalDSL.g:2241:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalSignalDSL.g:2241:4: rule__JvmArgumentTypeReference__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__JvmArgumentTypeReference__Alternatives();
@@ -7025,11 +7546,11 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:2100:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    // InternalSignalDSL.g:2250:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
     public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2101:1: ( ruleJvmWildcardTypeReference EOF )
-            // InternalSignalDSL.g:2102:1: ruleJvmWildcardTypeReference EOF
+            // InternalSignalDSL.g:2251:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalSignalDSL.g:2252:1: ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -7059,23 +7580,23 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:2109:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    // InternalSignalDSL.g:2259:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
     public final void ruleJvmWildcardTypeReference() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2113:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
-            // InternalSignalDSL.g:2114:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2263:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalSignalDSL.g:2264:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
             {
-            // InternalSignalDSL.g:2114:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
-            // InternalSignalDSL.g:2115:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalSignalDSL.g:2264:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalSignalDSL.g:2265:3: ( rule__JvmWildcardTypeReference__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2116:3: ( rule__JvmWildcardTypeReference__Group__0 )
-            // InternalSignalDSL.g:2116:4: rule__JvmWildcardTypeReference__Group__0
+            // InternalSignalDSL.g:2266:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalSignalDSL.g:2266:4: rule__JvmWildcardTypeReference__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__0();
@@ -7110,11 +7631,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalSignalDSL.g:2125:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    // InternalSignalDSL.g:2275:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
     public final void entryRuleJvmUpperBound() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2126:1: ( ruleJvmUpperBound EOF )
-            // InternalSignalDSL.g:2127:1: ruleJvmUpperBound EOF
+            // InternalSignalDSL.g:2276:1: ( ruleJvmUpperBound EOF )
+            // InternalSignalDSL.g:2277:1: ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundRule()); 
@@ -7144,23 +7665,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalSignalDSL.g:2134:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    // InternalSignalDSL.g:2284:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
     public final void ruleJvmUpperBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2138:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
-            // InternalSignalDSL.g:2139:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalSignalDSL.g:2288:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalSignalDSL.g:2289:2: ( ( rule__JvmUpperBound__Group__0 ) )
             {
-            // InternalSignalDSL.g:2139:2: ( ( rule__JvmUpperBound__Group__0 ) )
-            // InternalSignalDSL.g:2140:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalSignalDSL.g:2289:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalSignalDSL.g:2290:3: ( rule__JvmUpperBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2141:3: ( rule__JvmUpperBound__Group__0 )
-            // InternalSignalDSL.g:2141:4: rule__JvmUpperBound__Group__0
+            // InternalSignalDSL.g:2291:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalSignalDSL.g:2291:4: rule__JvmUpperBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__0();
@@ -7195,11 +7716,11 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:2150:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    // InternalSignalDSL.g:2300:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
     public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2151:1: ( ruleJvmUpperBoundAnded EOF )
-            // InternalSignalDSL.g:2152:1: ruleJvmUpperBoundAnded EOF
+            // InternalSignalDSL.g:2301:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalSignalDSL.g:2302:1: ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -7229,23 +7750,23 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:2159:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    // InternalSignalDSL.g:2309:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
     public final void ruleJvmUpperBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2163:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
-            // InternalSignalDSL.g:2164:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2313:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalSignalDSL.g:2314:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
             {
-            // InternalSignalDSL.g:2164:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
-            // InternalSignalDSL.g:2165:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2314:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2315:3: ( rule__JvmUpperBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2166:3: ( rule__JvmUpperBoundAnded__Group__0 )
-            // InternalSignalDSL.g:2166:4: rule__JvmUpperBoundAnded__Group__0
+            // InternalSignalDSL.g:2316:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2316:4: rule__JvmUpperBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__0();
@@ -7280,11 +7801,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalSignalDSL.g:2175:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    // InternalSignalDSL.g:2325:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
     public final void entryRuleJvmLowerBound() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2176:1: ( ruleJvmLowerBound EOF )
-            // InternalSignalDSL.g:2177:1: ruleJvmLowerBound EOF
+            // InternalSignalDSL.g:2326:1: ( ruleJvmLowerBound EOF )
+            // InternalSignalDSL.g:2327:1: ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundRule()); 
@@ -7314,23 +7835,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalSignalDSL.g:2184:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    // InternalSignalDSL.g:2334:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
     public final void ruleJvmLowerBound() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2188:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
-            // InternalSignalDSL.g:2189:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalSignalDSL.g:2338:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalSignalDSL.g:2339:2: ( ( rule__JvmLowerBound__Group__0 ) )
             {
-            // InternalSignalDSL.g:2189:2: ( ( rule__JvmLowerBound__Group__0 ) )
-            // InternalSignalDSL.g:2190:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalSignalDSL.g:2339:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalSignalDSL.g:2340:3: ( rule__JvmLowerBound__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2191:3: ( rule__JvmLowerBound__Group__0 )
-            // InternalSignalDSL.g:2191:4: rule__JvmLowerBound__Group__0
+            // InternalSignalDSL.g:2341:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalSignalDSL.g:2341:4: rule__JvmLowerBound__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__0();
@@ -7365,11 +7886,11 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:2200:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    // InternalSignalDSL.g:2350:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
     public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2201:1: ( ruleJvmLowerBoundAnded EOF )
-            // InternalSignalDSL.g:2202:1: ruleJvmLowerBoundAnded EOF
+            // InternalSignalDSL.g:2351:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalSignalDSL.g:2352:1: ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -7399,23 +7920,23 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:2209:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    // InternalSignalDSL.g:2359:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
     public final void ruleJvmLowerBoundAnded() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2213:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
-            // InternalSignalDSL.g:2214:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2363:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalSignalDSL.g:2364:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
             {
-            // InternalSignalDSL.g:2214:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
-            // InternalSignalDSL.g:2215:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2364:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalSignalDSL.g:2365:3: ( rule__JvmLowerBoundAnded__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2216:3: ( rule__JvmLowerBoundAnded__Group__0 )
-            // InternalSignalDSL.g:2216:4: rule__JvmLowerBoundAnded__Group__0
+            // InternalSignalDSL.g:2366:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalSignalDSL.g:2366:4: rule__JvmLowerBoundAnded__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__0();
@@ -7450,11 +7971,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:2225:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    // InternalSignalDSL.g:2375:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
     public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2226:1: ( ruleQualifiedNameWithWildcard EOF )
-            // InternalSignalDSL.g:2227:1: ruleQualifiedNameWithWildcard EOF
+            // InternalSignalDSL.g:2376:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalSignalDSL.g:2377:1: ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -7484,23 +8005,23 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:2234:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    // InternalSignalDSL.g:2384:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
     public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2238:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
-            // InternalSignalDSL.g:2239:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalSignalDSL.g:2388:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalSignalDSL.g:2389:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
             {
-            // InternalSignalDSL.g:2239:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
-            // InternalSignalDSL.g:2240:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalSignalDSL.g:2389:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalSignalDSL.g:2390:3: ( rule__QualifiedNameWithWildcard__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2241:3: ( rule__QualifiedNameWithWildcard__Group__0 )
-            // InternalSignalDSL.g:2241:4: rule__QualifiedNameWithWildcard__Group__0
+            // InternalSignalDSL.g:2391:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalSignalDSL.g:2391:4: rule__QualifiedNameWithWildcard__Group__0
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__0();
@@ -7535,11 +8056,11 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalSignalDSL.g:2250:1: entryRuleValidID : ruleValidID EOF ;
+    // InternalSignalDSL.g:2400:1: entryRuleValidID : ruleValidID EOF ;
     public final void entryRuleValidID() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2251:1: ( ruleValidID EOF )
-            // InternalSignalDSL.g:2252:1: ruleValidID EOF
+            // InternalSignalDSL.g:2401:1: ( ruleValidID EOF )
+            // InternalSignalDSL.g:2402:1: ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDRule()); 
@@ -7569,17 +8090,17 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalSignalDSL.g:2259:1: ruleValidID : ( RULE_ID ) ;
+    // InternalSignalDSL.g:2409:1: ruleValidID : ( RULE_ID ) ;
     public final void ruleValidID() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2263:2: ( ( RULE_ID ) )
-            // InternalSignalDSL.g:2264:2: ( RULE_ID )
+            // InternalSignalDSL.g:2413:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:2414:2: ( RULE_ID )
             {
-            // InternalSignalDSL.g:2264:2: ( RULE_ID )
-            // InternalSignalDSL.g:2265:3: RULE_ID
+            // InternalSignalDSL.g:2414:2: ( RULE_ID )
+            // InternalSignalDSL.g:2415:3: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getValidIDAccess().getIDTerminalRuleCall()); 
@@ -7610,11 +8131,11 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalSignalDSL.g:2275:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    // InternalSignalDSL.g:2425:1: entryRuleXImportSection : ruleXImportSection EOF ;
     public final void entryRuleXImportSection() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2276:1: ( ruleXImportSection EOF )
-            // InternalSignalDSL.g:2277:1: ruleXImportSection EOF
+            // InternalSignalDSL.g:2426:1: ( ruleXImportSection EOF )
+            // InternalSignalDSL.g:2427:1: ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionRule()); 
@@ -7644,26 +8165,26 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalSignalDSL.g:2284:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    // InternalSignalDSL.g:2434:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
     public final void ruleXImportSection() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2288:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
-            // InternalSignalDSL.g:2289:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalSignalDSL.g:2438:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalSignalDSL.g:2439:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
             {
-            // InternalSignalDSL.g:2289:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
-            // InternalSignalDSL.g:2290:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalSignalDSL.g:2439:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalSignalDSL.g:2440:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
             {
-            // InternalSignalDSL.g:2290:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
-            // InternalSignalDSL.g:2291:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalSignalDSL.g:2440:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalSignalDSL.g:2441:4: ( rule__XImportSection__ImportDeclarationsAssignment )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalSignalDSL.g:2292:4: ( rule__XImportSection__ImportDeclarationsAssignment )
-            // InternalSignalDSL.g:2292:5: rule__XImportSection__ImportDeclarationsAssignment
+            // InternalSignalDSL.g:2442:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalSignalDSL.g:2442:5: rule__XImportSection__ImportDeclarationsAssignment
             {
             pushFollow(FOLLOW_3);
             rule__XImportSection__ImportDeclarationsAssignment();
@@ -7679,13 +8200,13 @@
 
             }
 
-            // InternalSignalDSL.g:2295:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
-            // InternalSignalDSL.g:2296:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalSignalDSL.g:2445:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalSignalDSL.g:2446:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
             }
-            // InternalSignalDSL.g:2297:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            // InternalSignalDSL.g:2447:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
             loop1:
             do {
                 int alt1=2;
@@ -7698,7 +8219,7 @@
 
                 switch (alt1) {
             	case 1 :
-            	    // InternalSignalDSL.g:2297:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    // InternalSignalDSL.g:2447:5: rule__XImportSection__ImportDeclarationsAssignment
             	    {
             	    pushFollow(FOLLOW_3);
             	    rule__XImportSection__ImportDeclarationsAssignment();
@@ -7742,11 +8263,11 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:2307:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    // InternalSignalDSL.g:2457:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
     public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
         try {
-            // InternalSignalDSL.g:2308:1: ( ruleQualifiedNameInStaticImport EOF )
-            // InternalSignalDSL.g:2309:1: ruleQualifiedNameInStaticImport EOF
+            // InternalSignalDSL.g:2458:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalSignalDSL.g:2459:1: ruleQualifiedNameInStaticImport EOF
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportRule()); 
@@ -7776,26 +8297,26 @@
 
 
     // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:2316:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    // InternalSignalDSL.g:2466:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
     public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2320:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
-            // InternalSignalDSL.g:2321:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalSignalDSL.g:2470:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalSignalDSL.g:2471:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
             {
-            // InternalSignalDSL.g:2321:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
-            // InternalSignalDSL.g:2322:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalSignalDSL.g:2471:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalSignalDSL.g:2472:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
             {
-            // InternalSignalDSL.g:2322:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
-            // InternalSignalDSL.g:2323:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalSignalDSL.g:2472:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalSignalDSL.g:2473:4: ( rule__QualifiedNameInStaticImport__Group__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2324:4: ( rule__QualifiedNameInStaticImport__Group__0 )
-            // InternalSignalDSL.g:2324:5: rule__QualifiedNameInStaticImport__Group__0
+            // InternalSignalDSL.g:2474:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalSignalDSL.g:2474:5: rule__QualifiedNameInStaticImport__Group__0
             {
             pushFollow(FOLLOW_4);
             rule__QualifiedNameInStaticImport__Group__0();
@@ -7811,13 +8332,13 @@
 
             }
 
-            // InternalSignalDSL.g:2327:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
-            // InternalSignalDSL.g:2328:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalSignalDSL.g:2477:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalSignalDSL.g:2478:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
             }
-            // InternalSignalDSL.g:2329:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            // InternalSignalDSL.g:2479:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
             loop2:
             do {
                 int alt2=2;
@@ -7836,7 +8357,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // InternalSignalDSL.g:2329:5: rule__QualifiedNameInStaticImport__Group__0
+            	    // InternalSignalDSL.g:2479:5: rule__QualifiedNameInStaticImport__Group__0
             	    {
             	    pushFollow(FOLLOW_4);
             	    rule__QualifiedNameInStaticImport__Group__0();
@@ -7880,23 +8401,23 @@
 
 
     // $ANTLR start "ruleSignalActionEnum"
-    // InternalSignalDSL.g:2339:1: ruleSignalActionEnum : ( ( rule__SignalActionEnum__Alternatives ) ) ;
+    // InternalSignalDSL.g:2489:1: ruleSignalActionEnum : ( ( rule__SignalActionEnum__Alternatives ) ) ;
     public final void ruleSignalActionEnum() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2343:1: ( ( ( rule__SignalActionEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2344:2: ( ( rule__SignalActionEnum__Alternatives ) )
+            // InternalSignalDSL.g:2493:1: ( ( ( rule__SignalActionEnum__Alternatives ) ) )
+            // InternalSignalDSL.g:2494:2: ( ( rule__SignalActionEnum__Alternatives ) )
             {
-            // InternalSignalDSL.g:2344:2: ( ( rule__SignalActionEnum__Alternatives ) )
-            // InternalSignalDSL.g:2345:3: ( rule__SignalActionEnum__Alternatives )
+            // InternalSignalDSL.g:2494:2: ( ( rule__SignalActionEnum__Alternatives ) )
+            // InternalSignalDSL.g:2495:3: ( rule__SignalActionEnum__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalActionEnumAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2346:3: ( rule__SignalActionEnum__Alternatives )
-            // InternalSignalDSL.g:2346:4: rule__SignalActionEnum__Alternatives
+            // InternalSignalDSL.g:2496:3: ( rule__SignalActionEnum__Alternatives )
+            // InternalSignalDSL.g:2496:4: rule__SignalActionEnum__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__SignalActionEnum__Alternatives();
@@ -7930,126 +8451,24 @@
     // $ANTLR end "ruleSignalActionEnum"
 
 
-    // $ANTLR start "ruleSignalTypeEnum"
-    // InternalSignalDSL.g:2355:1: ruleSignalTypeEnum : ( ( rule__SignalTypeEnum__Alternatives ) ) ;
-    public final void ruleSignalTypeEnum() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:2359:1: ( ( ( rule__SignalTypeEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2360:2: ( ( rule__SignalTypeEnum__Alternatives ) )
-            {
-            // InternalSignalDSL.g:2360:2: ( ( rule__SignalTypeEnum__Alternatives ) )
-            // InternalSignalDSL.g:2361:3: ( rule__SignalTypeEnum__Alternatives )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalTypeEnumAccess().getAlternatives()); 
-            }
-            // InternalSignalDSL.g:2362:3: ( rule__SignalTypeEnum__Alternatives )
-            // InternalSignalDSL.g:2362:4: rule__SignalTypeEnum__Alternatives
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalTypeEnum__Alternatives();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalTypeEnumAccess().getAlternatives()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "ruleSignalTypeEnum"
-
-
-    // $ANTLR start "ruleSignalHandlerTypeEnum"
-    // InternalSignalDSL.g:2371:1: ruleSignalHandlerTypeEnum : ( ( rule__SignalHandlerTypeEnum__Alternatives ) ) ;
-    public final void ruleSignalHandlerTypeEnum() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:2375:1: ( ( ( rule__SignalHandlerTypeEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2376:2: ( ( rule__SignalHandlerTypeEnum__Alternatives ) )
-            {
-            // InternalSignalDSL.g:2376:2: ( ( rule__SignalHandlerTypeEnum__Alternatives ) )
-            // InternalSignalDSL.g:2377:3: ( rule__SignalHandlerTypeEnum__Alternatives )
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerTypeEnumAccess().getAlternatives()); 
-            }
-            // InternalSignalDSL.g:2378:3: ( rule__SignalHandlerTypeEnum__Alternatives )
-            // InternalSignalDSL.g:2378:4: rule__SignalHandlerTypeEnum__Alternatives
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalHandlerTypeEnum__Alternatives();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerTypeEnumAccess().getAlternatives()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "ruleSignalHandlerTypeEnum"
-
-
     // $ANTLR start "ruleSignalExecutionTypeEnum"
-    // InternalSignalDSL.g:2387:1: ruleSignalExecutionTypeEnum : ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) ;
+    // InternalSignalDSL.g:2505:1: ruleSignalExecutionTypeEnum : ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) ;
     public final void ruleSignalExecutionTypeEnum() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2391:1: ( ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) )
-            // InternalSignalDSL.g:2392:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
+            // InternalSignalDSL.g:2509:1: ( ( ( rule__SignalExecutionTypeEnum__Alternatives ) ) )
+            // InternalSignalDSL.g:2510:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
             {
-            // InternalSignalDSL.g:2392:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
-            // InternalSignalDSL.g:2393:3: ( rule__SignalExecutionTypeEnum__Alternatives )
+            // InternalSignalDSL.g:2510:2: ( ( rule__SignalExecutionTypeEnum__Alternatives ) )
+            // InternalSignalDSL.g:2511:3: ( rule__SignalExecutionTypeEnum__Alternatives )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalExecutionTypeEnumAccess().getAlternatives()); 
             }
-            // InternalSignalDSL.g:2394:3: ( rule__SignalExecutionTypeEnum__Alternatives )
-            // InternalSignalDSL.g:2394:4: rule__SignalExecutionTypeEnum__Alternatives
+            // InternalSignalDSL.g:2512:3: ( rule__SignalExecutionTypeEnum__Alternatives )
+            // InternalSignalDSL.g:2512:4: rule__SignalExecutionTypeEnum__Alternatives
             {
             pushFollow(FOLLOW_2);
             rule__SignalExecutionTypeEnum__Alternatives();
@@ -8083,21 +8502,72 @@
     // $ANTLR end "ruleSignalExecutionTypeEnum"
 
 
-    // $ANTLR start "rule__DataTransfer__Alternatives"
-    // InternalSignalDSL.g:2402:1: rule__DataTransfer__Alternatives : ( ( ruleSingleTransfer ) | ( ruleListTransfer ) );
-    public final void rule__DataTransfer__Alternatives() throws RecognitionException {
+    // $ANTLR start "ruleDayOfWeekEnum"
+    // InternalSignalDSL.g:2521:1: ruleDayOfWeekEnum : ( ( rule__DayOfWeekEnum__Alternatives ) ) ;
+    public final void ruleDayOfWeekEnum() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2406:1: ( ( ruleSingleTransfer ) | ( ruleListTransfer ) )
+            // InternalSignalDSL.g:2525:1: ( ( ( rule__DayOfWeekEnum__Alternatives ) ) )
+            // InternalSignalDSL.g:2526:2: ( ( rule__DayOfWeekEnum__Alternatives ) )
+            {
+            // InternalSignalDSL.g:2526:2: ( ( rule__DayOfWeekEnum__Alternatives ) )
+            // InternalSignalDSL.g:2527:3: ( rule__DayOfWeekEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDayOfWeekEnumAccess().getAlternatives()); 
+            }
+            // InternalSignalDSL.g:2528:3: ( rule__DayOfWeekEnum__Alternatives )
+            // InternalSignalDSL.g:2528:4: rule__DayOfWeekEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__DayOfWeekEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDayOfWeekEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleDayOfWeekEnum"
+
+
+    // $ANTLR start "rule__TriggerPolicy__Alternatives"
+    // InternalSignalDSL.g:2536:1: rule__TriggerPolicy__Alternatives : ( ( ruleTriggerFile ) | ( ruleSignalScheduler ) );
+    public final void rule__TriggerPolicy__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:2540:1: ( ( ruleTriggerFile ) | ( ruleSignalScheduler ) )
             int alt3=2;
             int LA3_0 = input.LA(1);
 
-            if ( ((LA3_0>=51 && LA3_0<=52)) ) {
+            if ( (LA3_0==68) ) {
                 alt3=1;
             }
-            else if ( (LA3_0==67) ) {
+            else if ( (LA3_0==69) ) {
                 alt3=2;
             }
             else {
@@ -8109,21 +8579,21 @@
             }
             switch (alt3) {
                 case 1 :
-                    // InternalSignalDSL.g:2407:2: ( ruleSingleTransfer )
+                    // InternalSignalDSL.g:2541:2: ( ruleTriggerFile )
                     {
-                    // InternalSignalDSL.g:2407:2: ( ruleSingleTransfer )
-                    // InternalSignalDSL.g:2408:3: ruleSingleTransfer
+                    // InternalSignalDSL.g:2541:2: ( ruleTriggerFile )
+                    // InternalSignalDSL.g:2542:3: ruleTriggerFile
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getDataTransferAccess().getSingleTransferParserRuleCall_0()); 
+                       before(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); 
                     }
                     pushFollow(FOLLOW_2);
-                    ruleSingleTransfer();
+                    ruleTriggerFile();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getDataTransferAccess().getSingleTransferParserRuleCall_0()); 
+                       after(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0()); 
                     }
 
                     }
@@ -8132,21 +8602,21 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2413:2: ( ruleListTransfer )
+                    // InternalSignalDSL.g:2547:2: ( ruleSignalScheduler )
                     {
-                    // InternalSignalDSL.g:2413:2: ( ruleListTransfer )
-                    // InternalSignalDSL.g:2414:3: ruleListTransfer
+                    // InternalSignalDSL.g:2547:2: ( ruleSignalScheduler )
+                    // InternalSignalDSL.g:2548:3: ruleSignalScheduler
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getDataTransferAccess().getListTransferParserRuleCall_1()); 
+                       before(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); 
                     }
                     pushFollow(FOLLOW_2);
-                    ruleListTransfer();
+                    ruleSignalScheduler();
 
                     state._fsp--;
                     if (state.failed) return ;
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getDataTransferAccess().getListTransferParserRuleCall_1()); 
+                       after(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1()); 
                     }
 
                     }
@@ -8168,31 +8638,207 @@
         }
         return ;
     }
-    // $ANTLR end "rule__DataTransfer__Alternatives"
+    // $ANTLR end "rule__TriggerPolicy__Alternatives"
+
+
+    // $ANTLR start "rule__Scheduler__Alternatives"
+    // InternalSignalDSL.g:2557:1: rule__Scheduler__Alternatives : ( ( ruleCronScheduler ) | ( ruleHourlyScheduler ) | ( ruleDailyScheduler ) | ( ruleWeeklyScheduler ) | ( ruleMonthlyScheduler ) );
+    public final void rule__Scheduler__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:2561:1: ( ( ruleCronScheduler ) | ( ruleHourlyScheduler ) | ( ruleDailyScheduler ) | ( ruleWeeklyScheduler ) | ( ruleMonthlyScheduler ) )
+            int alt4=5;
+            switch ( input.LA(1) ) {
+            case 70:
+                {
+                alt4=1;
+                }
+                break;
+            case 71:
+                {
+                alt4=2;
+                }
+                break;
+            case 72:
+                {
+                alt4=3;
+                }
+                break;
+            case 74:
+                {
+                alt4=4;
+                }
+                break;
+            case 76:
+                {
+                alt4=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // InternalSignalDSL.g:2562:2: ( ruleCronScheduler )
+                    {
+                    // InternalSignalDSL.g:2562:2: ( ruleCronScheduler )
+                    // InternalSignalDSL.g:2563:3: ruleCronScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleCronScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:2568:2: ( ruleHourlyScheduler )
+                    {
+                    // InternalSignalDSL.g:2568:2: ( ruleHourlyScheduler )
+                    // InternalSignalDSL.g:2569:3: ruleHourlyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleHourlyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalSignalDSL.g:2574:2: ( ruleDailyScheduler )
+                    {
+                    // InternalSignalDSL.g:2574:2: ( ruleDailyScheduler )
+                    // InternalSignalDSL.g:2575:3: ruleDailyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleDailyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalSignalDSL.g:2580:2: ( ruleWeeklyScheduler )
+                    {
+                    // InternalSignalDSL.g:2580:2: ( ruleWeeklyScheduler )
+                    // InternalSignalDSL.g:2581:3: ruleWeeklyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleWeeklyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalSignalDSL.g:2586:2: ( ruleMonthlyScheduler )
+                    {
+                    // InternalSignalDSL.g:2586:2: ( ruleMonthlyScheduler )
+                    // InternalSignalDSL.g:2587:3: ruleMonthlyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleMonthlyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Scheduler__Alternatives"
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
-    // InternalSignalDSL.g:2423:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
+    // InternalSignalDSL.g:2596:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2427:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
-            int alt4=4;
-            alt4 = dfa4.predict(input);
-            switch (alt4) {
+            // InternalSignalDSL.g:2600:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt5=4;
+            alt5 = dfa5.predict(input);
+            switch (alt5) {
                 case 1 :
-                    // InternalSignalDSL.g:2428:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:2601:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2428:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:2429:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:2601:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:2602:3: ( rule__XImportDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:2430:3: ( rule__XImportDeclaration__Group_2_0__0 )
-                    // InternalSignalDSL.g:2430:4: rule__XImportDeclaration__Group_2_0__0
+                    // InternalSignalDSL.g:2603:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:2603:4: rule__XImportDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_0__0();
@@ -8212,16 +8858,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2434:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalSignalDSL.g:2607:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
                     {
-                    // InternalSignalDSL.g:2434:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
-                    // InternalSignalDSL.g:2435:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalSignalDSL.g:2607:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalSignalDSL.g:2608:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
                     }
-                    // InternalSignalDSL.g:2436:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
-                    // InternalSignalDSL.g:2436:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
+                    // InternalSignalDSL.g:2609:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalSignalDSL.g:2609:4: rule__XImportDeclaration__ImportedTypeAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedTypeAssignment_2_1();
@@ -8241,16 +8887,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2440:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalSignalDSL.g:2613:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
                     {
-                    // InternalSignalDSL.g:2440:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
-                    // InternalSignalDSL.g:2441:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalSignalDSL.g:2613:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalSignalDSL.g:2614:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
                     }
-                    // InternalSignalDSL.g:2442:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
-                    // InternalSignalDSL.g:2442:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
+                    // InternalSignalDSL.g:2615:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalSignalDSL.g:2615:4: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ImportedNamespaceAssignment_2_2();
@@ -8270,16 +8916,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2446:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalSignalDSL.g:2619:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
                     {
-                    // InternalSignalDSL.g:2446:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
-                    // InternalSignalDSL.g:2447:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalSignalDSL.g:2619:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalSignalDSL.g:2620:3: ( rule__XImportDeclaration__Group_2_3__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
                     }
-                    // InternalSignalDSL.g:2448:3: ( rule__XImportDeclaration__Group_2_3__0 )
-                    // InternalSignalDSL.g:2448:4: rule__XImportDeclaration__Group_2_3__0
+                    // InternalSignalDSL.g:2621:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalSignalDSL.g:2621:4: rule__XImportDeclaration__Group_2_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__Group_2_3__0();
@@ -8316,41 +8962,41 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Alternatives_2_0_3"
-    // InternalSignalDSL.g:2456:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
+    // InternalSignalDSL.g:2629:1: rule__XImportDeclaration__Alternatives_2_0_3 : ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) );
     public final void rule__XImportDeclaration__Alternatives_2_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2460:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
-            int alt5=2;
-            int LA5_0 = input.LA(1);
+            // InternalSignalDSL.g:2633:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
 
-            if ( (LA5_0==36) ) {
-                alt5=1;
+            if ( (LA6_0==36) ) {
+                alt6=1;
             }
-            else if ( (LA5_0==RULE_ID) ) {
-                alt5=2;
+            else if ( (LA6_0==RULE_ID) ) {
+                alt6=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 5, 0, input);
+                    new NoViableAltException("", 6, 0, input);
 
                 throw nvae;
             }
-            switch (alt5) {
+            switch (alt6) {
                 case 1 :
-                    // InternalSignalDSL.g:2461:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalSignalDSL.g:2634:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
                     {
-                    // InternalSignalDSL.g:2461:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
-                    // InternalSignalDSL.g:2462:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalSignalDSL.g:2634:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalSignalDSL.g:2635:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
                     }
-                    // InternalSignalDSL.g:2463:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
-                    // InternalSignalDSL.g:2463:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
+                    // InternalSignalDSL.g:2636:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalSignalDSL.g:2636:4: rule__XImportDeclaration__WildcardAssignment_2_0_3_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__WildcardAssignment_2_0_3_0();
@@ -8370,16 +9016,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2467:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalSignalDSL.g:2640:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
                     {
-                    // InternalSignalDSL.g:2467:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
-                    // InternalSignalDSL.g:2468:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalSignalDSL.g:2640:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalSignalDSL.g:2641:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
                     }
-                    // InternalSignalDSL.g:2469:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
-                    // InternalSignalDSL.g:2469:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
+                    // InternalSignalDSL.g:2642:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalSignalDSL.g:2642:4: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__MemberNameAssignment_2_0_3_1();
@@ -8416,27 +9062,27 @@
 
 
     // $ANTLR start "rule__XAnnotation__Alternatives_3_1"
-    // InternalSignalDSL.g:2477:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
+    // InternalSignalDSL.g:2650:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );
     public final void rule__XAnnotation__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2481:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
-            int alt6=2;
-            alt6 = dfa6.predict(input);
-            switch (alt6) {
+            // InternalSignalDSL.g:2654:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt7=2;
+            alt7 = dfa7.predict(input);
+            switch (alt7) {
                 case 1 :
-                    // InternalSignalDSL.g:2482:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2482:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-                    // InternalSignalDSL.g:2483:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalSignalDSL.g:2656:3: ( rule__XAnnotation__Group_3_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
                     }
-                    // InternalSignalDSL.g:2484:3: ( rule__XAnnotation__Group_3_1_0__0 )
-                    // InternalSignalDSL.g:2484:4: rule__XAnnotation__Group_3_1_0__0
+                    // InternalSignalDSL.g:2657:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalSignalDSL.g:2657:4: rule__XAnnotation__Group_3_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3_1_0__0();
@@ -8456,16 +9102,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2488:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalSignalDSL.g:2661:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
                     {
-                    // InternalSignalDSL.g:2488:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
-                    // InternalSignalDSL.g:2489:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalSignalDSL.g:2661:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalSignalDSL.g:2662:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
                     }
-                    // InternalSignalDSL.g:2490:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
-                    // InternalSignalDSL.g:2490:4: rule__XAnnotation__ValueAssignment_3_1_1
+                    // InternalSignalDSL.g:2663:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalSignalDSL.g:2663:4: rule__XAnnotation__ValueAssignment_3_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__ValueAssignment_3_1_1();
@@ -8502,27 +9148,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Alternatives"
-    // InternalSignalDSL.g:2498:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
+    // InternalSignalDSL.g:2671:1: rule__XAnnotationElementValueOrCommaList__Alternatives : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) );
     public final void rule__XAnnotationElementValueOrCommaList__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2502:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
-            int alt7=2;
-            alt7 = dfa7.predict(input);
-            switch (alt7) {
+            // InternalSignalDSL.g:2675:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt8=2;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
                 case 1 :
-                    // InternalSignalDSL.g:2503:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2503:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-                    // InternalSignalDSL.g:2504:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalSignalDSL.g:2677:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2505:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-                    // InternalSignalDSL.g:2505:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+                    // InternalSignalDSL.g:2678:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalSignalDSL.g:2678:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -8542,16 +9188,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2509:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalSignalDSL.g:2682:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2509:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
-                    // InternalSignalDSL.g:2510:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalSignalDSL.g:2682:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalSignalDSL.g:2683:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:2511:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
-                    // InternalSignalDSL.g:2511:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
+                    // InternalSignalDSL.g:2684:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalSignalDSL.g:2684:4: rule__XAnnotationElementValueOrCommaList__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1__0();
@@ -8588,27 +9234,27 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Alternatives"
-    // InternalSignalDSL.g:2519:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    // InternalSignalDSL.g:2692:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
     public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2523:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
-            int alt8=2;
-            alt8 = dfa8.predict(input);
-            switch (alt8) {
+            // InternalSignalDSL.g:2696:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt9=2;
+            alt9 = dfa9.predict(input);
+            switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:2524:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2524:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-                    // InternalSignalDSL.g:2525:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalSignalDSL.g:2698:3: ( rule__XAnnotationElementValue__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2526:3: ( rule__XAnnotationElementValue__Group_0__0 )
-                    // InternalSignalDSL.g:2526:4: rule__XAnnotationElementValue__Group_0__0
+                    // InternalSignalDSL.g:2699:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalSignalDSL.g:2699:4: rule__XAnnotationElementValue__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0__0();
@@ -8628,10 +9274,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2530:2: ( ruleXAnnotationOrExpression )
+                    // InternalSignalDSL.g:2703:2: ( ruleXAnnotationOrExpression )
                     {
-                    // InternalSignalDSL.g:2530:2: ( ruleXAnnotationOrExpression )
-                    // InternalSignalDSL.g:2531:3: ruleXAnnotationOrExpression
+                    // InternalSignalDSL.g:2703:2: ( ruleXAnnotationOrExpression )
+                    // InternalSignalDSL.g:2704:3: ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
@@ -8668,35 +9314,35 @@
 
 
     // $ANTLR start "rule__XAnnotationOrExpression__Alternatives"
-    // InternalSignalDSL.g:2540:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    // InternalSignalDSL.g:2713:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
     public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2544:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
-            int alt9=2;
-            int LA9_0 = input.LA(1);
+            // InternalSignalDSL.g:2717:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
 
-            if ( (LA9_0==70) ) {
-                alt9=1;
+            if ( (LA10_0==79) ) {
+                alt10=1;
             }
-            else if ( ((LA9_0>=RULE_ID && LA9_0<=RULE_STRING)||LA9_0==27||(LA9_0>=34 && LA9_0<=35)||LA9_0==40||(LA9_0>=45 && LA9_0<=50)||LA9_0==60||LA9_0==64||LA9_0==71||(LA9_0>=75 && LA9_0<=76)||LA9_0==79||LA9_0==81||(LA9_0>=85 && LA9_0<=92)||LA9_0==94||LA9_0==103) ) {
-                alt9=2;
+            else if ( ((LA10_0>=RULE_ID && LA10_0<=RULE_STRING)||LA10_0==27||(LA10_0>=34 && LA10_0<=35)||LA10_0==40||(LA10_0>=45 && LA10_0<=50)||LA10_0==63||LA10_0==80||(LA10_0>=84 && LA10_0<=85)||LA10_0==88||LA10_0==90||(LA10_0>=93 && LA10_0<=101)||LA10_0==103||LA10_0==112) ) {
+                alt10=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 9, 0, input);
+                    new NoViableAltException("", 10, 0, input);
 
                 throw nvae;
             }
-            switch (alt9) {
+            switch (alt10) {
                 case 1 :
-                    // InternalSignalDSL.g:2545:2: ( ruleXAnnotation )
+                    // InternalSignalDSL.g:2718:2: ( ruleXAnnotation )
                     {
-                    // InternalSignalDSL.g:2545:2: ( ruleXAnnotation )
-                    // InternalSignalDSL.g:2546:3: ruleXAnnotation
+                    // InternalSignalDSL.g:2718:2: ( ruleXAnnotation )
+                    // InternalSignalDSL.g:2719:3: ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
@@ -8716,10 +9362,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2551:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:2724:2: ( ruleXExpression )
                     {
-                    // InternalSignalDSL.g:2551:2: ( ruleXExpression )
-                    // InternalSignalDSL.g:2552:3: ruleXExpression
+                    // InternalSignalDSL.g:2724:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:2725:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -8756,29 +9402,29 @@
 
 
     // $ANTLR start "rule__XAssignment__Alternatives"
-    // InternalSignalDSL.g:2561:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
+    // InternalSignalDSL.g:2734:1: rule__XAssignment__Alternatives : ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) );
     public final void rule__XAssignment__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2565:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
-            int alt10=2;
+            // InternalSignalDSL.g:2738:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt11=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA10_1 = input.LA(2);
+                int LA11_1 = input.LA(2);
 
-                if ( (LA10_1==EOF||(LA10_1>=RULE_ID && LA10_1<=RULE_STRING)||(LA10_1>=14 && LA10_1<=50)||(LA10_1>=60 && LA10_1<=61)||LA10_1==64||LA10_1==69||(LA10_1>=71 && LA10_1<=95)||(LA10_1>=99 && LA10_1<=100)||(LA10_1>=102 && LA10_1<=103)) ) {
-                    alt10=2;
+                if ( (LA11_1==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_1==13) ) {
-                    alt10=1;
+                else if ( (LA11_1==EOF||(LA11_1>=RULE_ID && LA11_1<=RULE_STRING)||(LA11_1>=14 && LA11_1<=50)||(LA11_1>=63 && LA11_1<=64)||LA11_1==73||LA11_1==78||(LA11_1>=80 && LA11_1<=104)||(LA11_1>=108 && LA11_1<=109)||(LA11_1>=111 && LA11_1<=112)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 1, input);
+                        new NoViableAltException("", 11, 1, input);
 
                     throw nvae;
                 }
@@ -8786,18 +9432,18 @@
                 break;
             case 45:
                 {
-                int LA10_2 = input.LA(2);
+                int LA11_2 = input.LA(2);
 
-                if ( (LA10_2==13) ) {
-                    alt10=1;
+                if ( (LA11_2==EOF||(LA11_2>=RULE_ID && LA11_2<=RULE_STRING)||(LA11_2>=14 && LA11_2<=50)||(LA11_2>=63 && LA11_2<=64)||LA11_2==73||LA11_2==78||(LA11_2>=80 && LA11_2<=104)||(LA11_2>=108 && LA11_2<=109)||(LA11_2>=111 && LA11_2<=112)) ) {
+                    alt11=2;
                 }
-                else if ( (LA10_2==EOF||(LA10_2>=RULE_ID && LA10_2<=RULE_STRING)||(LA10_2>=14 && LA10_2<=50)||(LA10_2>=60 && LA10_2<=61)||LA10_2==64||LA10_2==69||(LA10_2>=71 && LA10_2<=95)||(LA10_2>=99 && LA10_2<=100)||(LA10_2>=102 && LA10_2<=103)) ) {
-                    alt10=2;
+                else if ( (LA11_2==13) ) {
+                    alt11=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 2, input);
+                        new NoViableAltException("", 11, 2, input);
 
                     throw nvae;
                 }
@@ -8805,18 +9451,18 @@
                 break;
             case 46:
                 {
-                int LA10_3 = input.LA(2);
+                int LA11_3 = input.LA(2);
 
-                if ( (LA10_3==EOF||(LA10_3>=RULE_ID && LA10_3<=RULE_STRING)||(LA10_3>=14 && LA10_3<=50)||(LA10_3>=60 && LA10_3<=61)||LA10_3==64||LA10_3==69||(LA10_3>=71 && LA10_3<=95)||(LA10_3>=99 && LA10_3<=100)||(LA10_3>=102 && LA10_3<=103)) ) {
-                    alt10=2;
+                if ( (LA11_3==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_3==13) ) {
-                    alt10=1;
+                else if ( (LA11_3==EOF||(LA11_3>=RULE_ID && LA11_3<=RULE_STRING)||(LA11_3>=14 && LA11_3<=50)||(LA11_3>=63 && LA11_3<=64)||LA11_3==73||LA11_3==78||(LA11_3>=80 && LA11_3<=104)||(LA11_3>=108 && LA11_3<=109)||(LA11_3>=111 && LA11_3<=112)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 3, input);
+                        new NoViableAltException("", 11, 3, input);
 
                     throw nvae;
                 }
@@ -8824,18 +9470,18 @@
                 break;
             case 47:
                 {
-                int LA10_4 = input.LA(2);
+                int LA11_4 = input.LA(2);
 
-                if ( (LA10_4==13) ) {
-                    alt10=1;
+                if ( (LA11_4==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_4==EOF||(LA10_4>=RULE_ID && LA10_4<=RULE_STRING)||(LA10_4>=14 && LA10_4<=50)||(LA10_4>=60 && LA10_4<=61)||LA10_4==64||LA10_4==69||(LA10_4>=71 && LA10_4<=95)||(LA10_4>=99 && LA10_4<=100)||(LA10_4>=102 && LA10_4<=103)) ) {
-                    alt10=2;
+                else if ( (LA11_4==EOF||(LA11_4>=RULE_ID && LA11_4<=RULE_STRING)||(LA11_4>=14 && LA11_4<=50)||(LA11_4>=63 && LA11_4<=64)||LA11_4==73||LA11_4==78||(LA11_4>=80 && LA11_4<=104)||(LA11_4>=108 && LA11_4<=109)||(LA11_4>=111 && LA11_4<=112)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 4, input);
+                        new NoViableAltException("", 11, 4, input);
 
                     throw nvae;
                 }
@@ -8843,18 +9489,18 @@
                 break;
             case 48:
                 {
-                int LA10_5 = input.LA(2);
+                int LA11_5 = input.LA(2);
 
-                if ( (LA10_5==EOF||(LA10_5>=RULE_ID && LA10_5<=RULE_STRING)||(LA10_5>=14 && LA10_5<=50)||(LA10_5>=60 && LA10_5<=61)||LA10_5==64||LA10_5==69||(LA10_5>=71 && LA10_5<=95)||(LA10_5>=99 && LA10_5<=100)||(LA10_5>=102 && LA10_5<=103)) ) {
-                    alt10=2;
+                if ( (LA11_5==13) ) {
+                    alt11=1;
                 }
-                else if ( (LA10_5==13) ) {
-                    alt10=1;
+                else if ( (LA11_5==EOF||(LA11_5>=RULE_ID && LA11_5<=RULE_STRING)||(LA11_5>=14 && LA11_5<=50)||(LA11_5>=63 && LA11_5<=64)||LA11_5==73||LA11_5==78||(LA11_5>=80 && LA11_5<=104)||(LA11_5>=108 && LA11_5<=109)||(LA11_5>=111 && LA11_5<=112)) ) {
+                    alt11=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 10, 5, input);
+                        new NoViableAltException("", 11, 5, input);
 
                     throw nvae;
                 }
@@ -8870,47 +9516,47 @@
             case 40:
             case 49:
             case 50:
-            case 60:
-            case 64:
-            case 71:
-            case 75:
-            case 76:
-            case 79:
-            case 81:
+            case 63:
+            case 80:
+            case 84:
             case 85:
-            case 86:
-            case 87:
             case 88:
-            case 89:
             case 90:
-            case 91:
-            case 92:
+            case 93:
             case 94:
+            case 95:
+            case 96:
+            case 97:
+            case 98:
+            case 99:
+            case 100:
+            case 101:
             case 103:
+            case 112:
                 {
-                alt10=2;
+                alt11=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 10, 0, input);
+                    new NoViableAltException("", 11, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt10) {
+            switch (alt11) {
                 case 1 :
-                    // InternalSignalDSL.g:2566:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalSignalDSL.g:2739:2: ( ( rule__XAssignment__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2566:2: ( ( rule__XAssignment__Group_0__0 ) )
-                    // InternalSignalDSL.g:2567:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalSignalDSL.g:2739:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalSignalDSL.g:2740:3: ( rule__XAssignment__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2568:3: ( rule__XAssignment__Group_0__0 )
-                    // InternalSignalDSL.g:2568:4: rule__XAssignment__Group_0__0
+                    // InternalSignalDSL.g:2741:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalSignalDSL.g:2741:4: rule__XAssignment__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_0__0();
@@ -8930,16 +9576,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2572:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalSignalDSL.g:2745:2: ( ( rule__XAssignment__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2572:2: ( ( rule__XAssignment__Group_1__0 ) )
-                    // InternalSignalDSL.g:2573:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalSignalDSL.g:2745:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalSignalDSL.g:2746:3: ( rule__XAssignment__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:2574:3: ( rule__XAssignment__Group_1__0 )
-                    // InternalSignalDSL.g:2574:4: rule__XAssignment__Group_1__0
+                    // InternalSignalDSL.g:2747:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalSignalDSL.g:2747:4: rule__XAssignment__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1__0();
@@ -8976,64 +9622,64 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Alternatives"
-    // InternalSignalDSL.g:2582:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
+    // InternalSignalDSL.g:2755:1: rule__OpMultiAssign__Alternatives : ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) );
     public final void rule__OpMultiAssign__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2586:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
-            int alt11=7;
+            // InternalSignalDSL.g:2759:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt12=7;
             switch ( input.LA(1) ) {
             case 16:
                 {
-                alt11=1;
+                alt12=1;
                 }
                 break;
             case 17:
                 {
-                alt11=2;
+                alt12=2;
                 }
                 break;
             case 18:
                 {
-                alt11=3;
+                alt12=3;
                 }
                 break;
             case 19:
                 {
-                alt11=4;
+                alt12=4;
                 }
                 break;
             case 20:
                 {
-                alt11=5;
+                alt12=5;
                 }
                 break;
             case 27:
                 {
-                alt11=6;
+                alt12=6;
                 }
                 break;
             case 26:
                 {
-                alt11=7;
+                alt12=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 11, 0, input);
+                    new NoViableAltException("", 12, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt11) {
+            switch (alt12) {
                 case 1 :
-                    // InternalSignalDSL.g:2587:2: ( '+=' )
+                    // InternalSignalDSL.g:2760:2: ( '+=' )
                     {
-                    // InternalSignalDSL.g:2587:2: ( '+=' )
-                    // InternalSignalDSL.g:2588:3: '+='
+                    // InternalSignalDSL.g:2760:2: ( '+=' )
+                    // InternalSignalDSL.g:2761:3: '+='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
@@ -9049,10 +9695,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2593:2: ( '-=' )
+                    // InternalSignalDSL.g:2766:2: ( '-=' )
                     {
-                    // InternalSignalDSL.g:2593:2: ( '-=' )
-                    // InternalSignalDSL.g:2594:3: '-='
+                    // InternalSignalDSL.g:2766:2: ( '-=' )
+                    // InternalSignalDSL.g:2767:3: '-='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
@@ -9068,10 +9714,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2599:2: ( '*=' )
+                    // InternalSignalDSL.g:2772:2: ( '*=' )
                     {
-                    // InternalSignalDSL.g:2599:2: ( '*=' )
-                    // InternalSignalDSL.g:2600:3: '*='
+                    // InternalSignalDSL.g:2772:2: ( '*=' )
+                    // InternalSignalDSL.g:2773:3: '*='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
@@ -9087,10 +9733,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2605:2: ( '/=' )
+                    // InternalSignalDSL.g:2778:2: ( '/=' )
                     {
-                    // InternalSignalDSL.g:2605:2: ( '/=' )
-                    // InternalSignalDSL.g:2606:3: '/='
+                    // InternalSignalDSL.g:2778:2: ( '/=' )
+                    // InternalSignalDSL.g:2779:3: '/='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
@@ -9106,10 +9752,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2611:2: ( '%=' )
+                    // InternalSignalDSL.g:2784:2: ( '%=' )
                     {
-                    // InternalSignalDSL.g:2611:2: ( '%=' )
-                    // InternalSignalDSL.g:2612:3: '%='
+                    // InternalSignalDSL.g:2784:2: ( '%=' )
+                    // InternalSignalDSL.g:2785:3: '%='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
@@ -9125,16 +9771,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:2617:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalSignalDSL.g:2790:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
                     {
-                    // InternalSignalDSL.g:2617:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
-                    // InternalSignalDSL.g:2618:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalSignalDSL.g:2790:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalSignalDSL.g:2791:3: ( rule__OpMultiAssign__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
                     }
-                    // InternalSignalDSL.g:2619:3: ( rule__OpMultiAssign__Group_5__0 )
-                    // InternalSignalDSL.g:2619:4: rule__OpMultiAssign__Group_5__0
+                    // InternalSignalDSL.g:2792:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalSignalDSL.g:2792:4: rule__OpMultiAssign__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_5__0();
@@ -9154,16 +9800,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:2623:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalSignalDSL.g:2796:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
                     {
-                    // InternalSignalDSL.g:2623:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
-                    // InternalSignalDSL.g:2624:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalSignalDSL.g:2796:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalSignalDSL.g:2797:3: ( rule__OpMultiAssign__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
                     }
-                    // InternalSignalDSL.g:2625:3: ( rule__OpMultiAssign__Group_6__0 )
-                    // InternalSignalDSL.g:2625:4: rule__OpMultiAssign__Group_6__0
+                    // InternalSignalDSL.g:2798:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalSignalDSL.g:2798:4: rule__OpMultiAssign__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpMultiAssign__Group_6__0();
@@ -9200,49 +9846,49 @@
 
 
     // $ANTLR start "rule__OpEquality__Alternatives"
-    // InternalSignalDSL.g:2633:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    // InternalSignalDSL.g:2806:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
     public final void rule__OpEquality__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2637:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
-            int alt12=4;
+            // InternalSignalDSL.g:2810:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt13=4;
             switch ( input.LA(1) ) {
             case 21:
                 {
-                alt12=1;
+                alt13=1;
                 }
                 break;
             case 22:
                 {
-                alt12=2;
+                alt13=2;
                 }
                 break;
             case 23:
                 {
-                alt12=3;
+                alt13=3;
                 }
                 break;
             case 24:
                 {
-                alt12=4;
+                alt13=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 12, 0, input);
+                    new NoViableAltException("", 13, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt12) {
+            switch (alt13) {
                 case 1 :
-                    // InternalSignalDSL.g:2638:2: ( '==' )
+                    // InternalSignalDSL.g:2811:2: ( '==' )
                     {
-                    // InternalSignalDSL.g:2638:2: ( '==' )
-                    // InternalSignalDSL.g:2639:3: '=='
+                    // InternalSignalDSL.g:2811:2: ( '==' )
+                    // InternalSignalDSL.g:2812:3: '=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
@@ -9258,10 +9904,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2644:2: ( '!=' )
+                    // InternalSignalDSL.g:2817:2: ( '!=' )
                     {
-                    // InternalSignalDSL.g:2644:2: ( '!=' )
-                    // InternalSignalDSL.g:2645:3: '!='
+                    // InternalSignalDSL.g:2817:2: ( '!=' )
+                    // InternalSignalDSL.g:2818:3: '!='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
@@ -9277,10 +9923,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2650:2: ( '===' )
+                    // InternalSignalDSL.g:2823:2: ( '===' )
                     {
-                    // InternalSignalDSL.g:2650:2: ( '===' )
-                    // InternalSignalDSL.g:2651:3: '==='
+                    // InternalSignalDSL.g:2823:2: ( '===' )
+                    // InternalSignalDSL.g:2824:3: '==='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
@@ -9296,10 +9942,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2656:2: ( '!==' )
+                    // InternalSignalDSL.g:2829:2: ( '!==' )
                     {
-                    // InternalSignalDSL.g:2656:2: ( '!==' )
-                    // InternalSignalDSL.g:2657:3: '!=='
+                    // InternalSignalDSL.g:2829:2: ( '!==' )
+                    // InternalSignalDSL.g:2830:3: '!=='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
@@ -9332,41 +9978,41 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Alternatives_1"
-    // InternalSignalDSL.g:2666:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
+    // InternalSignalDSL.g:2839:1: rule__XRelationalExpression__Alternatives_1 : ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) );
     public final void rule__XRelationalExpression__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2670:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
-            int alt13=2;
-            int LA13_0 = input.LA(1);
+            // InternalSignalDSL.g:2843:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt14=2;
+            int LA14_0 = input.LA(1);
 
-            if ( (LA13_0==77) ) {
-                alt13=1;
+            if ( (LA14_0==86) ) {
+                alt14=1;
             }
-            else if ( ((LA13_0>=25 && LA13_0<=27)) ) {
-                alt13=2;
+            else if ( ((LA14_0>=25 && LA14_0<=27)) ) {
+                alt14=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 13, 0, input);
+                    new NoViableAltException("", 14, 0, input);
 
                 throw nvae;
             }
-            switch (alt13) {
+            switch (alt14) {
                 case 1 :
-                    // InternalSignalDSL.g:2671:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:2844:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2671:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
-                    // InternalSignalDSL.g:2672:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalSignalDSL.g:2844:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:2845:3: ( rule__XRelationalExpression__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
                     }
-                    // InternalSignalDSL.g:2673:3: ( rule__XRelationalExpression__Group_1_0__0 )
-                    // InternalSignalDSL.g:2673:4: rule__XRelationalExpression__Group_1_0__0
+                    // InternalSignalDSL.g:2846:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalSignalDSL.g:2846:4: rule__XRelationalExpression__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_0__0();
@@ -9386,16 +10032,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2677:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:2850:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2677:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
-                    // InternalSignalDSL.g:2678:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalSignalDSL.g:2850:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:2851:3: ( rule__XRelationalExpression__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
                     }
-                    // InternalSignalDSL.g:2679:3: ( rule__XRelationalExpression__Group_1_1__0 )
-                    // InternalSignalDSL.g:2679:4: rule__XRelationalExpression__Group_1_1__0
+                    // InternalSignalDSL.g:2852:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalSignalDSL.g:2852:4: rule__XRelationalExpression__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XRelationalExpression__Group_1_1__0();
@@ -9432,34 +10078,34 @@
 
 
     // $ANTLR start "rule__OpCompare__Alternatives"
-    // InternalSignalDSL.g:2687:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    // InternalSignalDSL.g:2860:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
     public final void rule__OpCompare__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2691:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
-            int alt14=4;
+            // InternalSignalDSL.g:2864:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt15=4;
             switch ( input.LA(1) ) {
             case 25:
                 {
-                alt14=1;
+                alt15=1;
                 }
                 break;
             case 27:
                 {
-                int LA14_2 = input.LA(2);
+                int LA15_2 = input.LA(2);
 
-                if ( (LA14_2==13) ) {
-                    alt14=2;
+                if ( (LA15_2==EOF||(LA15_2>=RULE_ID && LA15_2<=RULE_STRING)||LA15_2==27||(LA15_2>=34 && LA15_2<=35)||LA15_2==40||(LA15_2>=45 && LA15_2<=50)||LA15_2==63||LA15_2==80||(LA15_2>=84 && LA15_2<=85)||LA15_2==88||LA15_2==90||(LA15_2>=93 && LA15_2<=101)||LA15_2==103||LA15_2==112) ) {
+                    alt15=4;
                 }
-                else if ( (LA14_2==EOF||(LA14_2>=RULE_ID && LA14_2<=RULE_STRING)||LA14_2==27||(LA14_2>=34 && LA14_2<=35)||LA14_2==40||(LA14_2>=45 && LA14_2<=50)||LA14_2==60||LA14_2==64||LA14_2==71||(LA14_2>=75 && LA14_2<=76)||LA14_2==79||LA14_2==81||(LA14_2>=85 && LA14_2<=92)||LA14_2==94||LA14_2==103) ) {
-                    alt14=4;
+                else if ( (LA15_2==13) ) {
+                    alt15=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 14, 2, input);
+                        new NoViableAltException("", 15, 2, input);
 
                     throw nvae;
                 }
@@ -9467,23 +10113,23 @@
                 break;
             case 26:
                 {
-                alt14=3;
+                alt15=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 14, 0, input);
+                    new NoViableAltException("", 15, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt14) {
+            switch (alt15) {
                 case 1 :
-                    // InternalSignalDSL.g:2692:2: ( '>=' )
+                    // InternalSignalDSL.g:2865:2: ( '>=' )
                     {
-                    // InternalSignalDSL.g:2692:2: ( '>=' )
-                    // InternalSignalDSL.g:2693:3: '>='
+                    // InternalSignalDSL.g:2865:2: ( '>=' )
+                    // InternalSignalDSL.g:2866:3: '>='
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
@@ -9499,16 +10145,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2698:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalSignalDSL.g:2871:2: ( ( rule__OpCompare__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2698:2: ( ( rule__OpCompare__Group_1__0 ) )
-                    // InternalSignalDSL.g:2699:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalSignalDSL.g:2871:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalSignalDSL.g:2872:3: ( rule__OpCompare__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:2700:3: ( rule__OpCompare__Group_1__0 )
-                    // InternalSignalDSL.g:2700:4: rule__OpCompare__Group_1__0
+                    // InternalSignalDSL.g:2873:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalSignalDSL.g:2873:4: rule__OpCompare__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpCompare__Group_1__0();
@@ -9528,10 +10174,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2704:2: ( '>' )
+                    // InternalSignalDSL.g:2877:2: ( '>' )
                     {
-                    // InternalSignalDSL.g:2704:2: ( '>' )
-                    // InternalSignalDSL.g:2705:3: '>'
+                    // InternalSignalDSL.g:2877:2: ( '>' )
+                    // InternalSignalDSL.g:2878:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
@@ -9547,10 +10193,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2710:2: ( '<' )
+                    // InternalSignalDSL.g:2883:2: ( '<' )
                     {
-                    // InternalSignalDSL.g:2710:2: ( '<' )
-                    // InternalSignalDSL.g:2711:3: '<'
+                    // InternalSignalDSL.g:2883:2: ( '<' )
+                    // InternalSignalDSL.g:2884:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
@@ -9583,21 +10229,21 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives"
-    // InternalSignalDSL.g:2720:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
+    // InternalSignalDSL.g:2893:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );
     public final void rule__OpOther__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2724:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
-            int alt15=9;
-            alt15 = dfa15.predict(input);
-            switch (alt15) {
+            // InternalSignalDSL.g:2897:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt16=9;
+            alt16 = dfa16.predict(input);
+            switch (alt16) {
                 case 1 :
-                    // InternalSignalDSL.g:2725:2: ( '->' )
+                    // InternalSignalDSL.g:2898:2: ( '->' )
                     {
-                    // InternalSignalDSL.g:2725:2: ( '->' )
-                    // InternalSignalDSL.g:2726:3: '->'
+                    // InternalSignalDSL.g:2898:2: ( '->' )
+                    // InternalSignalDSL.g:2899:3: '->'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
@@ -9613,10 +10259,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2731:2: ( '..<' )
+                    // InternalSignalDSL.g:2904:2: ( '..<' )
                     {
-                    // InternalSignalDSL.g:2731:2: ( '..<' )
-                    // InternalSignalDSL.g:2732:3: '..<'
+                    // InternalSignalDSL.g:2904:2: ( '..<' )
+                    // InternalSignalDSL.g:2905:3: '..<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
@@ -9632,16 +10278,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2737:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalSignalDSL.g:2910:2: ( ( rule__OpOther__Group_2__0 ) )
                     {
-                    // InternalSignalDSL.g:2737:2: ( ( rule__OpOther__Group_2__0 ) )
-                    // InternalSignalDSL.g:2738:3: ( rule__OpOther__Group_2__0 )
+                    // InternalSignalDSL.g:2910:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalSignalDSL.g:2911:3: ( rule__OpOther__Group_2__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_2()); 
                     }
-                    // InternalSignalDSL.g:2739:3: ( rule__OpOther__Group_2__0 )
-                    // InternalSignalDSL.g:2739:4: rule__OpOther__Group_2__0
+                    // InternalSignalDSL.g:2912:3: ( rule__OpOther__Group_2__0 )
+                    // InternalSignalDSL.g:2912:4: rule__OpOther__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_2__0();
@@ -9661,10 +10307,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2743:2: ( '..' )
+                    // InternalSignalDSL.g:2916:2: ( '..' )
                     {
-                    // InternalSignalDSL.g:2743:2: ( '..' )
-                    // InternalSignalDSL.g:2744:3: '..'
+                    // InternalSignalDSL.g:2916:2: ( '..' )
+                    // InternalSignalDSL.g:2917:3: '..'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
@@ -9680,10 +10326,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2749:2: ( '=>' )
+                    // InternalSignalDSL.g:2922:2: ( '=>' )
                     {
-                    // InternalSignalDSL.g:2749:2: ( '=>' )
-                    // InternalSignalDSL.g:2750:3: '=>'
+                    // InternalSignalDSL.g:2922:2: ( '=>' )
+                    // InternalSignalDSL.g:2923:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
@@ -9699,16 +10345,16 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:2755:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalSignalDSL.g:2928:2: ( ( rule__OpOther__Group_5__0 ) )
                     {
-                    // InternalSignalDSL.g:2755:2: ( ( rule__OpOther__Group_5__0 ) )
-                    // InternalSignalDSL.g:2756:3: ( rule__OpOther__Group_5__0 )
+                    // InternalSignalDSL.g:2928:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalSignalDSL.g:2929:3: ( rule__OpOther__Group_5__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5()); 
                     }
-                    // InternalSignalDSL.g:2757:3: ( rule__OpOther__Group_5__0 )
-                    // InternalSignalDSL.g:2757:4: rule__OpOther__Group_5__0
+                    // InternalSignalDSL.g:2930:3: ( rule__OpOther__Group_5__0 )
+                    // InternalSignalDSL.g:2930:4: rule__OpOther__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5__0();
@@ -9728,16 +10374,16 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:2761:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalSignalDSL.g:2934:2: ( ( rule__OpOther__Group_6__0 ) )
                     {
-                    // InternalSignalDSL.g:2761:2: ( ( rule__OpOther__Group_6__0 ) )
-                    // InternalSignalDSL.g:2762:3: ( rule__OpOther__Group_6__0 )
+                    // InternalSignalDSL.g:2934:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalSignalDSL.g:2935:3: ( rule__OpOther__Group_6__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6()); 
                     }
-                    // InternalSignalDSL.g:2763:3: ( rule__OpOther__Group_6__0 )
-                    // InternalSignalDSL.g:2763:4: rule__OpOther__Group_6__0
+                    // InternalSignalDSL.g:2936:3: ( rule__OpOther__Group_6__0 )
+                    // InternalSignalDSL.g:2936:4: rule__OpOther__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6__0();
@@ -9757,10 +10403,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:2767:2: ( '<>' )
+                    // InternalSignalDSL.g:2940:2: ( '<>' )
                     {
-                    // InternalSignalDSL.g:2767:2: ( '<>' )
-                    // InternalSignalDSL.g:2768:3: '<>'
+                    // InternalSignalDSL.g:2940:2: ( '<>' )
+                    // InternalSignalDSL.g:2941:3: '<>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
@@ -9776,10 +10422,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:2773:2: ( '?:' )
+                    // InternalSignalDSL.g:2946:2: ( '?:' )
                     {
-                    // InternalSignalDSL.g:2773:2: ( '?:' )
-                    // InternalSignalDSL.g:2774:3: '?:'
+                    // InternalSignalDSL.g:2946:2: ( '?:' )
+                    // InternalSignalDSL.g:2947:3: '?:'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
@@ -9812,29 +10458,29 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_5_1"
-    // InternalSignalDSL.g:2783:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
+    // InternalSignalDSL.g:2956:1: rule__OpOther__Alternatives_5_1 : ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) );
     public final void rule__OpOther__Alternatives_5_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2787:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
-            int alt16=2;
-            int LA16_0 = input.LA(1);
+            // InternalSignalDSL.g:2960:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
 
-            if ( (LA16_0==26) ) {
-                int LA16_1 = input.LA(2);
+            if ( (LA17_0==26) ) {
+                int LA17_1 = input.LA(2);
 
-                if ( (LA16_1==EOF||(LA16_1>=RULE_ID && LA16_1<=RULE_STRING)||LA16_1==27||(LA16_1>=34 && LA16_1<=35)||LA16_1==40||(LA16_1>=45 && LA16_1<=50)||LA16_1==60||LA16_1==64||LA16_1==71||(LA16_1>=75 && LA16_1<=76)||LA16_1==79||LA16_1==81||(LA16_1>=85 && LA16_1<=92)||LA16_1==94||LA16_1==103) ) {
-                    alt16=2;
+                if ( (LA17_1==EOF||(LA17_1>=RULE_ID && LA17_1<=RULE_STRING)||LA17_1==27||(LA17_1>=34 && LA17_1<=35)||LA17_1==40||(LA17_1>=45 && LA17_1<=50)||LA17_1==63||LA17_1==80||(LA17_1>=84 && LA17_1<=85)||LA17_1==88||LA17_1==90||(LA17_1>=93 && LA17_1<=101)||LA17_1==103||LA17_1==112) ) {
+                    alt17=2;
                 }
-                else if ( (LA16_1==26) ) {
-                    alt16=1;
+                else if ( (LA17_1==26) ) {
+                    alt17=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 16, 1, input);
+                        new NoViableAltException("", 17, 1, input);
 
                     throw nvae;
                 }
@@ -9842,22 +10488,22 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 16, 0, input);
+                    new NoViableAltException("", 17, 0, input);
 
                 throw nvae;
             }
-            switch (alt16) {
+            switch (alt17) {
                 case 1 :
-                    // InternalSignalDSL.g:2788:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalSignalDSL.g:2961:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2788:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
-                    // InternalSignalDSL.g:2789:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalSignalDSL.g:2961:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalSignalDSL.g:2962:3: ( rule__OpOther__Group_5_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
                     }
-                    // InternalSignalDSL.g:2790:3: ( rule__OpOther__Group_5_1_0__0 )
-                    // InternalSignalDSL.g:2790:4: rule__OpOther__Group_5_1_0__0
+                    // InternalSignalDSL.g:2963:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalSignalDSL.g:2963:4: rule__OpOther__Group_5_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_5_1_0__0();
@@ -9877,10 +10523,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2794:2: ( '>' )
+                    // InternalSignalDSL.g:2967:2: ( '>' )
                     {
-                    // InternalSignalDSL.g:2794:2: ( '>' )
-                    // InternalSignalDSL.g:2795:3: '>'
+                    // InternalSignalDSL.g:2967:2: ( '>' )
+                    // InternalSignalDSL.g:2968:3: '>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
@@ -9913,55 +10559,55 @@
 
 
     // $ANTLR start "rule__OpOther__Alternatives_6_1"
-    // InternalSignalDSL.g:2804:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
+    // InternalSignalDSL.g:2977:1: rule__OpOther__Alternatives_6_1 : ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) );
     public final void rule__OpOther__Alternatives_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2808:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
-            int alt17=3;
-            int LA17_0 = input.LA(1);
+            // InternalSignalDSL.g:2981:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt18=3;
+            int LA18_0 = input.LA(1);
 
-            if ( (LA17_0==27) ) {
-                int LA17_1 = input.LA(2);
+            if ( (LA18_0==27) ) {
+                int LA18_1 = input.LA(2);
 
-                if ( (synpred35_InternalSignalDSL()) ) {
-                    alt17=1;
+                if ( (synpred39_InternalSignalDSL()) ) {
+                    alt18=1;
                 }
-                else if ( (synpred36_InternalSignalDSL()) ) {
-                    alt17=2;
+                else if ( (synpred40_InternalSignalDSL()) ) {
+                    alt18=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 17, 1, input);
+                        new NoViableAltException("", 18, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA17_0==31) ) {
-                alt17=3;
+            else if ( (LA18_0==31) ) {
+                alt18=3;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 17, 0, input);
+                    new NoViableAltException("", 18, 0, input);
 
                 throw nvae;
             }
-            switch (alt17) {
+            switch (alt18) {
                 case 1 :
-                    // InternalSignalDSL.g:2809:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2809:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-                    // InternalSignalDSL.g:2810:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalSignalDSL.g:2983:3: ( rule__OpOther__Group_6_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
                     }
-                    // InternalSignalDSL.g:2811:3: ( rule__OpOther__Group_6_1_0__0 )
-                    // InternalSignalDSL.g:2811:4: rule__OpOther__Group_6_1_0__0
+                    // InternalSignalDSL.g:2984:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalSignalDSL.g:2984:4: rule__OpOther__Group_6_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__OpOther__Group_6_1_0__0();
@@ -9981,10 +10627,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2815:2: ( '<' )
+                    // InternalSignalDSL.g:2988:2: ( '<' )
                     {
-                    // InternalSignalDSL.g:2815:2: ( '<' )
-                    // InternalSignalDSL.g:2816:3: '<'
+                    // InternalSignalDSL.g:2988:2: ( '<' )
+                    // InternalSignalDSL.g:2989:3: '<'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -10000,10 +10646,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2821:2: ( '=>' )
+                    // InternalSignalDSL.g:2994:2: ( '=>' )
                     {
-                    // InternalSignalDSL.g:2821:2: ( '=>' )
-                    // InternalSignalDSL.g:2822:3: '=>'
+                    // InternalSignalDSL.g:2994:2: ( '=>' )
+                    // InternalSignalDSL.g:2995:3: '=>'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
@@ -10036,35 +10682,35 @@
 
 
     // $ANTLR start "rule__OpAdd__Alternatives"
-    // InternalSignalDSL.g:2831:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    // InternalSignalDSL.g:3004:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
     public final void rule__OpAdd__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2835:1: ( ( '+' ) | ( '-' ) )
-            int alt18=2;
-            int LA18_0 = input.LA(1);
+            // InternalSignalDSL.g:3008:1: ( ( '+' ) | ( '-' ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
 
-            if ( (LA18_0==34) ) {
-                alt18=1;
+            if ( (LA19_0==34) ) {
+                alt19=1;
             }
-            else if ( (LA18_0==35) ) {
-                alt18=2;
+            else if ( (LA19_0==35) ) {
+                alt19=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 18, 0, input);
+                    new NoViableAltException("", 19, 0, input);
 
                 throw nvae;
             }
-            switch (alt18) {
+            switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:2836:2: ( '+' )
+                    // InternalSignalDSL.g:3009:2: ( '+' )
                     {
-                    // InternalSignalDSL.g:2836:2: ( '+' )
-                    // InternalSignalDSL.g:2837:3: '+'
+                    // InternalSignalDSL.g:3009:2: ( '+' )
+                    // InternalSignalDSL.g:3010:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
@@ -10080,10 +10726,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2842:2: ( '-' )
+                    // InternalSignalDSL.g:3015:2: ( '-' )
                     {
-                    // InternalSignalDSL.g:2842:2: ( '-' )
-                    // InternalSignalDSL.g:2843:3: '-'
+                    // InternalSignalDSL.g:3015:2: ( '-' )
+                    // InternalSignalDSL.g:3016:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
@@ -10116,49 +10762,49 @@
 
 
     // $ANTLR start "rule__OpMulti__Alternatives"
-    // InternalSignalDSL.g:2852:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    // InternalSignalDSL.g:3025:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
     public final void rule__OpMulti__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2856:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
-            int alt19=4;
+            // InternalSignalDSL.g:3029:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt20=4;
             switch ( input.LA(1) ) {
             case 36:
                 {
-                alt19=1;
+                alt20=1;
                 }
                 break;
             case 37:
                 {
-                alt19=2;
+                alt20=2;
                 }
                 break;
             case 38:
                 {
-                alt19=3;
+                alt20=3;
                 }
                 break;
             case 39:
                 {
-                alt19=4;
+                alt20=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 19, 0, input);
+                    new NoViableAltException("", 20, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt19) {
+            switch (alt20) {
                 case 1 :
-                    // InternalSignalDSL.g:2857:2: ( '*' )
+                    // InternalSignalDSL.g:3030:2: ( '*' )
                     {
-                    // InternalSignalDSL.g:2857:2: ( '*' )
-                    // InternalSignalDSL.g:2858:3: '*'
+                    // InternalSignalDSL.g:3030:2: ( '*' )
+                    // InternalSignalDSL.g:3031:3: '*'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
@@ -10174,10 +10820,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2863:2: ( '**' )
+                    // InternalSignalDSL.g:3036:2: ( '**' )
                     {
-                    // InternalSignalDSL.g:2863:2: ( '**' )
-                    // InternalSignalDSL.g:2864:3: '**'
+                    // InternalSignalDSL.g:3036:2: ( '**' )
+                    // InternalSignalDSL.g:3037:3: '**'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
@@ -10193,10 +10839,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2869:2: ( '/' )
+                    // InternalSignalDSL.g:3042:2: ( '/' )
                     {
-                    // InternalSignalDSL.g:2869:2: ( '/' )
-                    // InternalSignalDSL.g:2870:3: '/'
+                    // InternalSignalDSL.g:3042:2: ( '/' )
+                    // InternalSignalDSL.g:3043:3: '/'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
@@ -10212,10 +10858,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2875:2: ( '%' )
+                    // InternalSignalDSL.g:3048:2: ( '%' )
                     {
-                    // InternalSignalDSL.g:2875:2: ( '%' )
-                    // InternalSignalDSL.g:2876:3: '%'
+                    // InternalSignalDSL.g:3048:2: ( '%' )
+                    // InternalSignalDSL.g:3049:3: '%'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
@@ -10248,41 +10894,41 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Alternatives"
-    // InternalSignalDSL.g:2885:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    // InternalSignalDSL.g:3058:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
     public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2889:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
-            int alt20=2;
-            int LA20_0 = input.LA(1);
+            // InternalSignalDSL.g:3062:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
 
-            if ( ((LA20_0>=34 && LA20_0<=35)||LA20_0==40) ) {
-                alt20=1;
+            if ( ((LA21_0>=34 && LA21_0<=35)||LA21_0==40) ) {
+                alt21=1;
             }
-            else if ( ((LA20_0>=RULE_ID && LA20_0<=RULE_STRING)||LA20_0==27||(LA20_0>=45 && LA20_0<=50)||LA20_0==60||LA20_0==64||LA20_0==71||(LA20_0>=75 && LA20_0<=76)||LA20_0==79||LA20_0==81||(LA20_0>=85 && LA20_0<=92)||LA20_0==94||LA20_0==103) ) {
-                alt20=2;
+            else if ( ((LA21_0>=RULE_ID && LA21_0<=RULE_STRING)||LA21_0==27||(LA21_0>=45 && LA21_0<=50)||LA21_0==63||LA21_0==80||(LA21_0>=84 && LA21_0<=85)||LA21_0==88||LA21_0==90||(LA21_0>=93 && LA21_0<=101)||LA21_0==103||LA21_0==112) ) {
+                alt21=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 20, 0, input);
+                    new NoViableAltException("", 21, 0, input);
 
                 throw nvae;
             }
-            switch (alt20) {
+            switch (alt21) {
                 case 1 :
-                    // InternalSignalDSL.g:2890:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalSignalDSL.g:3063:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2890:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
-                    // InternalSignalDSL.g:2891:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalSignalDSL.g:3063:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalSignalDSL.g:3064:3: ( rule__XUnaryOperation__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:2892:3: ( rule__XUnaryOperation__Group_0__0 )
-                    // InternalSignalDSL.g:2892:4: rule__XUnaryOperation__Group_0__0
+                    // InternalSignalDSL.g:3065:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalSignalDSL.g:3065:4: rule__XUnaryOperation__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XUnaryOperation__Group_0__0();
@@ -10302,10 +10948,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2896:2: ( ruleXCastedExpression )
+                    // InternalSignalDSL.g:3069:2: ( ruleXCastedExpression )
                     {
-                    // InternalSignalDSL.g:2896:2: ( ruleXCastedExpression )
-                    // InternalSignalDSL.g:2897:3: ruleXCastedExpression
+                    // InternalSignalDSL.g:3069:2: ( ruleXCastedExpression )
+                    // InternalSignalDSL.g:3070:3: ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
@@ -10342,44 +10988,44 @@
 
 
     // $ANTLR start "rule__OpUnary__Alternatives"
-    // InternalSignalDSL.g:2906:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    // InternalSignalDSL.g:3079:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
     public final void rule__OpUnary__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2910:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
-            int alt21=3;
+            // InternalSignalDSL.g:3083:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt22=3;
             switch ( input.LA(1) ) {
             case 40:
                 {
-                alt21=1;
+                alt22=1;
                 }
                 break;
             case 35:
                 {
-                alt21=2;
+                alt22=2;
                 }
                 break;
             case 34:
                 {
-                alt21=3;
+                alt22=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 21, 0, input);
+                    new NoViableAltException("", 22, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt21) {
+            switch (alt22) {
                 case 1 :
-                    // InternalSignalDSL.g:2911:2: ( '!' )
+                    // InternalSignalDSL.g:3084:2: ( '!' )
                     {
-                    // InternalSignalDSL.g:2911:2: ( '!' )
-                    // InternalSignalDSL.g:2912:3: '!'
+                    // InternalSignalDSL.g:3084:2: ( '!' )
+                    // InternalSignalDSL.g:3085:3: '!'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
@@ -10395,10 +11041,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2917:2: ( '-' )
+                    // InternalSignalDSL.g:3090:2: ( '-' )
                     {
-                    // InternalSignalDSL.g:2917:2: ( '-' )
-                    // InternalSignalDSL.g:2918:3: '-'
+                    // InternalSignalDSL.g:3090:2: ( '-' )
+                    // InternalSignalDSL.g:3091:3: '-'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
@@ -10414,10 +11060,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2923:2: ( '+' )
+                    // InternalSignalDSL.g:3096:2: ( '+' )
                     {
-                    // InternalSignalDSL.g:2923:2: ( '+' )
-                    // InternalSignalDSL.g:2924:3: '+'
+                    // InternalSignalDSL.g:3096:2: ( '+' )
+                    // InternalSignalDSL.g:3097:3: '+'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
@@ -10450,35 +11096,35 @@
 
 
     // $ANTLR start "rule__OpPostfix__Alternatives"
-    // InternalSignalDSL.g:2933:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    // InternalSignalDSL.g:3106:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
     public final void rule__OpPostfix__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2937:1: ( ( '++' ) | ( '--' ) )
-            int alt22=2;
-            int LA22_0 = input.LA(1);
+            // InternalSignalDSL.g:3110:1: ( ( '++' ) | ( '--' ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA22_0==41) ) {
-                alt22=1;
+            if ( (LA23_0==41) ) {
+                alt23=1;
             }
-            else if ( (LA22_0==42) ) {
-                alt22=2;
+            else if ( (LA23_0==42) ) {
+                alt23=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt22) {
+            switch (alt23) {
                 case 1 :
-                    // InternalSignalDSL.g:2938:2: ( '++' )
+                    // InternalSignalDSL.g:3111:2: ( '++' )
                     {
-                    // InternalSignalDSL.g:2938:2: ( '++' )
-                    // InternalSignalDSL.g:2939:3: '++'
+                    // InternalSignalDSL.g:3111:2: ( '++' )
+                    // InternalSignalDSL.g:3112:3: '++'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
@@ -10494,10 +11140,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2944:2: ( '--' )
+                    // InternalSignalDSL.g:3117:2: ( '--' )
                     {
-                    // InternalSignalDSL.g:2944:2: ( '--' )
-                    // InternalSignalDSL.g:2945:3: '--'
+                    // InternalSignalDSL.g:3117:2: ( '--' )
+                    // InternalSignalDSL.g:3118:3: '--'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
@@ -10530,27 +11176,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1"
-    // InternalSignalDSL.g:2954:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
+    // InternalSignalDSL.g:3127:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2958:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
-            int alt23=2;
-            alt23 = dfa23.predict(input);
-            switch (alt23) {
+            // InternalSignalDSL.g:3131:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt24=2;
+            alt24 = dfa24.predict(input);
+            switch (alt24) {
                 case 1 :
-                    // InternalSignalDSL.g:2959:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:3132:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
                     {
-                    // InternalSignalDSL.g:2959:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
-                    // InternalSignalDSL.g:2960:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalSignalDSL.g:3132:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalSignalDSL.g:3133:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
                     }
-                    // InternalSignalDSL.g:2961:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
-                    // InternalSignalDSL.g:2961:4: rule__XMemberFeatureCall__Group_1_0__0
+                    // InternalSignalDSL.g:3134:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalSignalDSL.g:3134:4: rule__XMemberFeatureCall__Group_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_0__0();
@@ -10570,16 +11216,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2965:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:3138:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:2965:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
-                    // InternalSignalDSL.g:2966:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalSignalDSL.g:3138:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalSignalDSL.g:3139:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
                     }
-                    // InternalSignalDSL.g:2967:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
-                    // InternalSignalDSL.g:2967:4: rule__XMemberFeatureCall__Group_1_1__0
+                    // InternalSignalDSL.g:3140:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalSignalDSL.g:3140:4: rule__XMemberFeatureCall__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1__0();
@@ -10616,35 +11262,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_0_0_0_1"
-    // InternalSignalDSL.g:2975:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
+    // InternalSignalDSL.g:3148:1: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:2979:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalSignalDSL.g:3152:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt25=2;
+            int LA25_0 = input.LA(1);
 
-            if ( (LA24_0==43) ) {
-                alt24=1;
+            if ( (LA25_0==43) ) {
+                alt25=1;
             }
-            else if ( (LA24_0==99) ) {
-                alt24=2;
+            else if ( (LA25_0==108) ) {
+                alt25=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt25) {
                 case 1 :
-                    // InternalSignalDSL.g:2980:2: ( '.' )
+                    // InternalSignalDSL.g:3153:2: ( '.' )
                     {
-                    // InternalSignalDSL.g:2980:2: ( '.' )
-                    // InternalSignalDSL.g:2981:3: '.'
+                    // InternalSignalDSL.g:3153:2: ( '.' )
+                    // InternalSignalDSL.g:3154:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
@@ -10660,16 +11306,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2986:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3159:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
                     {
-                    // InternalSignalDSL.g:2986:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
-                    // InternalSignalDSL.g:2987:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalSignalDSL.g:3159:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3160:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
                     }
-                    // InternalSignalDSL.g:2988:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
-                    // InternalSignalDSL.g:2988:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
+                    // InternalSignalDSL.g:3161:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalSignalDSL.g:3161:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1();
@@ -10706,44 +11352,44 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_0_0_1"
-    // InternalSignalDSL.g:2996:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
+    // InternalSignalDSL.g:3169:1: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 : ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3000:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
-            int alt25=3;
+            // InternalSignalDSL.g:3173:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt26=3;
             switch ( input.LA(1) ) {
             case 43:
                 {
-                alt25=1;
+                alt26=1;
                 }
                 break;
-            case 100:
+            case 109:
                 {
-                alt25=2;
+                alt26=2;
                 }
                 break;
-            case 99:
+            case 108:
                 {
-                alt25=3;
+                alt26=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 25, 0, input);
+                    new NoViableAltException("", 26, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt25) {
+            switch (alt26) {
                 case 1 :
-                    // InternalSignalDSL.g:3001:2: ( '.' )
+                    // InternalSignalDSL.g:3174:2: ( '.' )
                     {
-                    // InternalSignalDSL.g:3001:2: ( '.' )
-                    // InternalSignalDSL.g:3002:3: '.'
+                    // InternalSignalDSL.g:3174:2: ( '.' )
+                    // InternalSignalDSL.g:3175:3: '.'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
@@ -10759,16 +11405,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3007:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3180:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
                     {
-                    // InternalSignalDSL.g:3007:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
-                    // InternalSignalDSL.g:3008:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalSignalDSL.g:3180:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalSignalDSL.g:3181:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
                     }
-                    // InternalSignalDSL.g:3009:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
-                    // InternalSignalDSL.g:3009:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
+                    // InternalSignalDSL.g:3182:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalSignalDSL.g:3182:4: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1();
@@ -10788,16 +11434,16 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3013:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalSignalDSL.g:3186:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
                     {
-                    // InternalSignalDSL.g:3013:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
-                    // InternalSignalDSL.g:3014:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalSignalDSL.g:3186:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalSignalDSL.g:3187:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
                     }
-                    // InternalSignalDSL.g:3015:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
-                    // InternalSignalDSL.g:3015:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
+                    // InternalSignalDSL.g:3188:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalSignalDSL.g:3188:4: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2();
@@ -10834,27 +11480,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Alternatives_1_1_3_1"
-    // InternalSignalDSL.g:3023: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 ) ) );
+    // InternalSignalDSL.g:3196:1: rule__XMemberFeatureCall__Alternatives_1_1_3_1 : ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) );
     public final void rule__XMemberFeatureCall__Alternatives_1_1_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3027:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
-            int alt26=2;
-            alt26 = dfa26.predict(input);
-            switch (alt26) {
+            // InternalSignalDSL.g:3200:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt27=2;
+            alt27 = dfa27.predict(input);
+            switch (alt27) {
                 case 1 :
-                    // InternalSignalDSL.g:3028:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3028:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-                    // InternalSignalDSL.g:3029:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalSignalDSL.g:3202:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
                     }
-                    // InternalSignalDSL.g:3030:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-                    // InternalSignalDSL.g:3030:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+                    // InternalSignalDSL.g:3203:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalSignalDSL.g:3203:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -10874,16 +11520,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3034:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3207:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3034:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
-                    // InternalSignalDSL.g:3035:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalSignalDSL.g:3207:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3208:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
                     }
-                    // InternalSignalDSL.g:3036:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
-                    // InternalSignalDSL.g:3036:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
+                    // InternalSignalDSL.g:3209:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalSignalDSL.g:3209:4: rule__XMemberFeatureCall__Group_1_1_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3_1_1__0();
@@ -10920,21 +11566,21 @@
 
 
     // $ANTLR start "rule__XPrimaryExpression__Alternatives"
-    // InternalSignalDSL.g:3044:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
+    // InternalSignalDSL.g:3217:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );
     public final void rule__XPrimaryExpression__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3048:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
-            int alt27=15;
-            alt27 = dfa27.predict(input);
-            switch (alt27) {
+            // InternalSignalDSL.g:3221:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt28=15;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
                 case 1 :
-                    // InternalSignalDSL.g:3049:2: ( ruleXConstructorCall )
+                    // InternalSignalDSL.g:3222:2: ( ruleXConstructorCall )
                     {
-                    // InternalSignalDSL.g:3049:2: ( ruleXConstructorCall )
-                    // InternalSignalDSL.g:3050:3: ruleXConstructorCall
+                    // InternalSignalDSL.g:3222:2: ( ruleXConstructorCall )
+                    // InternalSignalDSL.g:3223:3: ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXConstructorCallParserRuleCall_0()); 
@@ -10954,10 +11600,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3055:2: ( ruleXBlockExpression )
+                    // InternalSignalDSL.g:3228:2: ( ruleXBlockExpression )
                     {
-                    // InternalSignalDSL.g:3055:2: ( ruleXBlockExpression )
-                    // InternalSignalDSL.g:3056:3: ruleXBlockExpression
+                    // InternalSignalDSL.g:3228:2: ( ruleXBlockExpression )
+                    // InternalSignalDSL.g:3229:3: ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBlockExpressionParserRuleCall_1()); 
@@ -10977,10 +11623,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3061:2: ( ruleXSwitchExpression )
+                    // InternalSignalDSL.g:3234:2: ( ruleXSwitchExpression )
                     {
-                    // InternalSignalDSL.g:3061:2: ( ruleXSwitchExpression )
-                    // InternalSignalDSL.g:3062:3: ruleXSwitchExpression
+                    // InternalSignalDSL.g:3234:2: ( ruleXSwitchExpression )
+                    // InternalSignalDSL.g:3235:3: ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSwitchExpressionParserRuleCall_2()); 
@@ -11000,16 +11646,16 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3067:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalSignalDSL.g:3240:2: ( ( ruleXSynchronizedExpression ) )
                     {
-                    // InternalSignalDSL.g:3067:2: ( ( ruleXSynchronizedExpression ) )
-                    // InternalSignalDSL.g:3068:3: ( ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3240:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalSignalDSL.g:3241:3: ( ruleXSynchronizedExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
                     }
-                    // InternalSignalDSL.g:3069:3: ( ruleXSynchronizedExpression )
-                    // InternalSignalDSL.g:3069:4: ruleXSynchronizedExpression
+                    // InternalSignalDSL.g:3242:3: ( ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3242:4: ruleXSynchronizedExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXSynchronizedExpression();
@@ -11029,10 +11675,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3073:2: ( ruleXFeatureCall )
+                    // InternalSignalDSL.g:3246:2: ( ruleXFeatureCall )
                     {
-                    // InternalSignalDSL.g:3073:2: ( ruleXFeatureCall )
-                    // InternalSignalDSL.g:3074:3: ruleXFeatureCall
+                    // InternalSignalDSL.g:3246:2: ( ruleXFeatureCall )
+                    // InternalSignalDSL.g:3247:3: ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXFeatureCallParserRuleCall_4()); 
@@ -11052,10 +11698,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3079:2: ( ruleXLiteral )
+                    // InternalSignalDSL.g:3252:2: ( ruleXLiteral )
                     {
-                    // InternalSignalDSL.g:3079:2: ( ruleXLiteral )
-                    // InternalSignalDSL.g:3080:3: ruleXLiteral
+                    // InternalSignalDSL.g:3252:2: ( ruleXLiteral )
+                    // InternalSignalDSL.g:3253:3: ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXLiteralParserRuleCall_5()); 
@@ -11075,10 +11721,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3085:2: ( ruleXIfExpression )
+                    // InternalSignalDSL.g:3258:2: ( ruleXIfExpression )
                     {
-                    // InternalSignalDSL.g:3085:2: ( ruleXIfExpression )
-                    // InternalSignalDSL.g:3086:3: ruleXIfExpression
+                    // InternalSignalDSL.g:3258:2: ( ruleXIfExpression )
+                    // InternalSignalDSL.g:3259:3: ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXIfExpressionParserRuleCall_6()); 
@@ -11098,16 +11744,16 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:3091:2: ( ( ruleXForLoopExpression ) )
+                    // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
                     {
-                    // InternalSignalDSL.g:3091:2: ( ( ruleXForLoopExpression ) )
-                    // InternalSignalDSL.g:3092:3: ( ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
+                    // InternalSignalDSL.g:3265:3: ( ruleXForLoopExpression )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
                     }
-                    // InternalSignalDSL.g:3093:3: ( ruleXForLoopExpression )
-                    // InternalSignalDSL.g:3093:4: ruleXForLoopExpression
+                    // InternalSignalDSL.g:3266:3: ( ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3266:4: ruleXForLoopExpression
                     {
                     pushFollow(FOLLOW_2);
                     ruleXForLoopExpression();
@@ -11127,10 +11773,10 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:3097:2: ( ruleXBasicForLoopExpression )
+                    // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
                     {
-                    // InternalSignalDSL.g:3097:2: ( ruleXBasicForLoopExpression )
-                    // InternalSignalDSL.g:3098:3: ruleXBasicForLoopExpression
+                    // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
+                    // InternalSignalDSL.g:3271:3: ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -11150,10 +11796,10 @@
                     }
                     break;
                 case 10 :
-                    // InternalSignalDSL.g:3103:2: ( ruleXWhileExpression )
+                    // InternalSignalDSL.g:3276:2: ( ruleXWhileExpression )
                     {
-                    // InternalSignalDSL.g:3103:2: ( ruleXWhileExpression )
-                    // InternalSignalDSL.g:3104:3: ruleXWhileExpression
+                    // InternalSignalDSL.g:3276:2: ( ruleXWhileExpression )
+                    // InternalSignalDSL.g:3277:3: ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXWhileExpressionParserRuleCall_9()); 
@@ -11173,10 +11819,10 @@
                     }
                     break;
                 case 11 :
-                    // InternalSignalDSL.g:3109:2: ( ruleXDoWhileExpression )
+                    // InternalSignalDSL.g:3282:2: ( ruleXDoWhileExpression )
                     {
-                    // InternalSignalDSL.g:3109:2: ( ruleXDoWhileExpression )
-                    // InternalSignalDSL.g:3110:3: ruleXDoWhileExpression
+                    // InternalSignalDSL.g:3282:2: ( ruleXDoWhileExpression )
+                    // InternalSignalDSL.g:3283:3: ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXDoWhileExpressionParserRuleCall_10()); 
@@ -11196,10 +11842,10 @@
                     }
                     break;
                 case 12 :
-                    // InternalSignalDSL.g:3115:2: ( ruleXThrowExpression )
+                    // InternalSignalDSL.g:3288:2: ( ruleXThrowExpression )
                     {
-                    // InternalSignalDSL.g:3115:2: ( ruleXThrowExpression )
-                    // InternalSignalDSL.g:3116:3: ruleXThrowExpression
+                    // InternalSignalDSL.g:3288:2: ( ruleXThrowExpression )
+                    // InternalSignalDSL.g:3289:3: ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXThrowExpressionParserRuleCall_11()); 
@@ -11219,10 +11865,10 @@
                     }
                     break;
                 case 13 :
-                    // InternalSignalDSL.g:3121:2: ( ruleXReturnExpression )
+                    // InternalSignalDSL.g:3294:2: ( ruleXReturnExpression )
                     {
-                    // InternalSignalDSL.g:3121:2: ( ruleXReturnExpression )
-                    // InternalSignalDSL.g:3122:3: ruleXReturnExpression
+                    // InternalSignalDSL.g:3294:2: ( ruleXReturnExpression )
+                    // InternalSignalDSL.g:3295:3: ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXReturnExpressionParserRuleCall_12()); 
@@ -11242,10 +11888,10 @@
                     }
                     break;
                 case 14 :
-                    // InternalSignalDSL.g:3127:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalSignalDSL.g:3300:2: ( ruleXTryCatchFinallyExpression )
                     {
-                    // InternalSignalDSL.g:3127:2: ( ruleXTryCatchFinallyExpression )
-                    // InternalSignalDSL.g:3128:3: ruleXTryCatchFinallyExpression
+                    // InternalSignalDSL.g:3300:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalSignalDSL.g:3301:3: ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXTryCatchFinallyExpressionParserRuleCall_13()); 
@@ -11265,10 +11911,10 @@
                     }
                     break;
                 case 15 :
-                    // InternalSignalDSL.g:3133:2: ( ruleXParenthesizedExpression )
+                    // InternalSignalDSL.g:3306:2: ( ruleXParenthesizedExpression )
                     {
-                    // InternalSignalDSL.g:3133:2: ( ruleXParenthesizedExpression )
-                    // InternalSignalDSL.g:3134:3: ruleXParenthesizedExpression
+                    // InternalSignalDSL.g:3306:2: ( ruleXParenthesizedExpression )
+                    // InternalSignalDSL.g:3307:3: ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXPrimaryExpressionAccess().getXParenthesizedExpressionParserRuleCall_14()); 
@@ -11305,67 +11951,67 @@
 
 
     // $ANTLR start "rule__XLiteral__Alternatives"
-    // InternalSignalDSL.g:3143:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    // InternalSignalDSL.g:3316:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
     public final void rule__XLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3147:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
-            int alt28=7;
+            // InternalSignalDSL.g:3320:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt29=7;
             switch ( input.LA(1) ) {
-            case 75:
+            case 84:
                 {
-                alt28=1;
+                alt29=1;
                 }
                 break;
-            case 76:
+            case 85:
                 {
-                alt28=2;
+                alt29=2;
                 }
                 break;
             case 50:
-            case 103:
+            case 112:
                 {
-                alt28=3;
+                alt29=3;
                 }
                 break;
             case RULE_HEX:
             case RULE_INT:
             case RULE_DECIMAL:
                 {
-                alt28=4;
+                alt29=4;
                 }
                 break;
-            case 88:
+            case 97:
                 {
-                alt28=5;
+                alt29=5;
                 }
                 break;
             case RULE_STRING:
                 {
-                alt28=6;
+                alt29=6;
                 }
                 break;
-            case 89:
+            case 98:
                 {
-                alt28=7;
+                alt29=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 28, 0, input);
+                    new NoViableAltException("", 29, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt28) {
+            switch (alt29) {
                 case 1 :
-                    // InternalSignalDSL.g:3148:2: ( ruleXCollectionLiteral )
+                    // InternalSignalDSL.g:3321:2: ( ruleXCollectionLiteral )
                     {
-                    // InternalSignalDSL.g:3148:2: ( ruleXCollectionLiteral )
-                    // InternalSignalDSL.g:3149:3: ruleXCollectionLiteral
+                    // InternalSignalDSL.g:3321:2: ( ruleXCollectionLiteral )
+                    // InternalSignalDSL.g:3322:3: ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXCollectionLiteralParserRuleCall_0()); 
@@ -11385,16 +12031,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3154:2: ( ( ruleXClosure ) )
+                    // InternalSignalDSL.g:3327:2: ( ( ruleXClosure ) )
                     {
-                    // InternalSignalDSL.g:3154:2: ( ( ruleXClosure ) )
-                    // InternalSignalDSL.g:3155:3: ( ruleXClosure )
+                    // InternalSignalDSL.g:3327:2: ( ( ruleXClosure ) )
+                    // InternalSignalDSL.g:3328:3: ( ruleXClosure )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
                     }
-                    // InternalSignalDSL.g:3156:3: ( ruleXClosure )
-                    // InternalSignalDSL.g:3156:4: ruleXClosure
+                    // InternalSignalDSL.g:3329:3: ( ruleXClosure )
+                    // InternalSignalDSL.g:3329:4: ruleXClosure
                     {
                     pushFollow(FOLLOW_2);
                     ruleXClosure();
@@ -11414,10 +12060,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3160:2: ( ruleXBooleanLiteral )
+                    // InternalSignalDSL.g:3333:2: ( ruleXBooleanLiteral )
                     {
-                    // InternalSignalDSL.g:3160:2: ( ruleXBooleanLiteral )
-                    // InternalSignalDSL.g:3161:3: ruleXBooleanLiteral
+                    // InternalSignalDSL.g:3333:2: ( ruleXBooleanLiteral )
+                    // InternalSignalDSL.g:3334:3: ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXBooleanLiteralParserRuleCall_2()); 
@@ -11437,10 +12083,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3166:2: ( ruleXNumberLiteral )
+                    // InternalSignalDSL.g:3339:2: ( ruleXNumberLiteral )
                     {
-                    // InternalSignalDSL.g:3166:2: ( ruleXNumberLiteral )
-                    // InternalSignalDSL.g:3167:3: ruleXNumberLiteral
+                    // InternalSignalDSL.g:3339:2: ( ruleXNumberLiteral )
+                    // InternalSignalDSL.g:3340:3: ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNumberLiteralParserRuleCall_3()); 
@@ -11460,10 +12106,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3172:2: ( ruleXNullLiteral )
+                    // InternalSignalDSL.g:3345:2: ( ruleXNullLiteral )
                     {
-                    // InternalSignalDSL.g:3172:2: ( ruleXNullLiteral )
-                    // InternalSignalDSL.g:3173:3: ruleXNullLiteral
+                    // InternalSignalDSL.g:3345:2: ( ruleXNullLiteral )
+                    // InternalSignalDSL.g:3346:3: ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXNullLiteralParserRuleCall_4()); 
@@ -11483,10 +12129,10 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3178:2: ( ruleXStringLiteral )
+                    // InternalSignalDSL.g:3351:2: ( ruleXStringLiteral )
                     {
-                    // InternalSignalDSL.g:3178:2: ( ruleXStringLiteral )
-                    // InternalSignalDSL.g:3179:3: ruleXStringLiteral
+                    // InternalSignalDSL.g:3351:2: ( ruleXStringLiteral )
+                    // InternalSignalDSL.g:3352:3: ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXStringLiteralParserRuleCall_5()); 
@@ -11506,10 +12152,10 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3184:2: ( ruleXTypeLiteral )
+                    // InternalSignalDSL.g:3357:2: ( ruleXTypeLiteral )
                     {
-                    // InternalSignalDSL.g:3184:2: ( ruleXTypeLiteral )
-                    // InternalSignalDSL.g:3185:3: ruleXTypeLiteral
+                    // InternalSignalDSL.g:3357:2: ( ruleXTypeLiteral )
+                    // InternalSignalDSL.g:3358:3: ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXLiteralAccess().getXTypeLiteralParserRuleCall_6()); 
@@ -11546,29 +12192,29 @@
 
 
     // $ANTLR start "rule__XCollectionLiteral__Alternatives"
-    // InternalSignalDSL.g:3194:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    // InternalSignalDSL.g:3367:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
     public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3198:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
-            int alt29=2;
-            int LA29_0 = input.LA(1);
+            // InternalSignalDSL.g:3371:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
 
-            if ( (LA29_0==75) ) {
-                int LA29_1 = input.LA(2);
+            if ( (LA30_0==84) ) {
+                int LA30_1 = input.LA(2);
 
-                if ( (LA29_1==60) ) {
-                    alt29=1;
+                if ( (LA30_1==63) ) {
+                    alt30=1;
                 }
-                else if ( (LA29_1==76) ) {
-                    alt29=2;
+                else if ( (LA30_1==85) ) {
+                    alt30=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 29, 1, input);
+                        new NoViableAltException("", 30, 1, input);
 
                     throw nvae;
                 }
@@ -11576,16 +12222,16 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 29, 0, input);
+                    new NoViableAltException("", 30, 0, input);
 
                 throw nvae;
             }
-            switch (alt29) {
+            switch (alt30) {
                 case 1 :
-                    // InternalSignalDSL.g:3199:2: ( ruleXSetLiteral )
+                    // InternalSignalDSL.g:3372:2: ( ruleXSetLiteral )
                     {
-                    // InternalSignalDSL.g:3199:2: ( ruleXSetLiteral )
-                    // InternalSignalDSL.g:3200:3: ruleXSetLiteral
+                    // InternalSignalDSL.g:3372:2: ( ruleXSetLiteral )
+                    // InternalSignalDSL.g:3373:3: ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXSetLiteralParserRuleCall_0()); 
@@ -11605,10 +12251,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3205:2: ( ruleXListLiteral )
+                    // InternalSignalDSL.g:3378:2: ( ruleXListLiteral )
                     {
-                    // InternalSignalDSL.g:3205:2: ( ruleXListLiteral )
-                    // InternalSignalDSL.g:3206:3: ruleXListLiteral
+                    // InternalSignalDSL.g:3378:2: ( ruleXListLiteral )
+                    // InternalSignalDSL.g:3379:3: ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCollectionLiteralAccess().getXListLiteralParserRuleCall_1()); 
@@ -11645,27 +12291,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Alternatives_2"
-    // InternalSignalDSL.g:3215:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
+    // InternalSignalDSL.g:3388:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );
     public final void rule__XSwitchExpression__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3219:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
-            int alt30=2;
-            alt30 = dfa30.predict(input);
-            switch (alt30) {
+            // InternalSignalDSL.g:3392:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt31=2;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
                 case 1 :
-                    // InternalSignalDSL.g:3220:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3220:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:3221:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3394:3: ( rule__XSwitchExpression__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:3222:3: ( rule__XSwitchExpression__Group_2_0__0 )
-                    // InternalSignalDSL.g:3222:4: rule__XSwitchExpression__Group_2_0__0
+                    // InternalSignalDSL.g:3395:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalSignalDSL.g:3395:4: rule__XSwitchExpression__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_0__0();
@@ -11685,16 +12331,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3226:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3399:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3226:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
-                    // InternalSignalDSL.g:3227:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalSignalDSL.g:3399:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3400:3: ( rule__XSwitchExpression__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
                     }
-                    // InternalSignalDSL.g:3228:3: ( rule__XSwitchExpression__Group_2_1__0 )
-                    // InternalSignalDSL.g:3228:4: rule__XSwitchExpression__Group_2_1__0
+                    // InternalSignalDSL.g:3401:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalSignalDSL.g:3401:4: rule__XSwitchExpression__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1__0();
@@ -11731,41 +12377,41 @@
 
 
     // $ANTLR start "rule__XCasePart__Alternatives_3"
-    // InternalSignalDSL.g:3236:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
+    // InternalSignalDSL.g:3409:1: rule__XCasePart__Alternatives_3 : ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) );
     public final void rule__XCasePart__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3240:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
-            int alt31=2;
-            int LA31_0 = input.LA(1);
+            // InternalSignalDSL.g:3413:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
 
-            if ( (LA31_0==82) ) {
-                alt31=1;
+            if ( (LA32_0==73) ) {
+                alt32=1;
             }
-            else if ( (LA31_0==73) ) {
-                alt31=2;
+            else if ( (LA32_0==82) ) {
+                alt32=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 31, 0, input);
+                    new NoViableAltException("", 32, 0, input);
 
                 throw nvae;
             }
-            switch (alt31) {
+            switch (alt32) {
                 case 1 :
-                    // InternalSignalDSL.g:3241:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3414:2: ( ( rule__XCasePart__Group_3_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3241:2: ( ( rule__XCasePart__Group_3_0__0 ) )
-                    // InternalSignalDSL.g:3242:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalSignalDSL.g:3414:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3415:3: ( rule__XCasePart__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
                     }
-                    // InternalSignalDSL.g:3243:3: ( rule__XCasePart__Group_3_0__0 )
-                    // InternalSignalDSL.g:3243:4: rule__XCasePart__Group_3_0__0
+                    // InternalSignalDSL.g:3416:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalSignalDSL.g:3416:4: rule__XCasePart__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_3_0__0();
@@ -11785,16 +12431,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3247:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalSignalDSL.g:3420:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
                     {
-                    // InternalSignalDSL.g:3247:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
-                    // InternalSignalDSL.g:3248:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalSignalDSL.g:3420:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalSignalDSL.g:3421:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
                     }
-                    // InternalSignalDSL.g:3249:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
-                    // InternalSignalDSL.g:3249:4: rule__XCasePart__FallThroughAssignment_3_1
+                    // InternalSignalDSL.g:3422:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalSignalDSL.g:3422:4: rule__XCasePart__FallThroughAssignment_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__FallThroughAssignment_3_1();
@@ -11831,35 +12477,35 @@
 
 
     // $ANTLR start "rule__XExpressionOrVarDeclaration__Alternatives"
-    // InternalSignalDSL.g:3257:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    // InternalSignalDSL.g:3430:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
     public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3261:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
-            int alt32=2;
-            int LA32_0 = input.LA(1);
+            // InternalSignalDSL.g:3434:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
 
-            if ( (LA32_0==44||LA32_0==102) ) {
-                alt32=1;
+            if ( (LA33_0==44||LA33_0==111) ) {
+                alt33=1;
             }
-            else if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_STRING)||LA32_0==27||(LA32_0>=34 && LA32_0<=35)||LA32_0==40||(LA32_0>=45 && LA32_0<=50)||LA32_0==60||LA32_0==64||LA32_0==71||(LA32_0>=75 && LA32_0<=76)||LA32_0==79||LA32_0==81||(LA32_0>=85 && LA32_0<=92)||LA32_0==94||LA32_0==103) ) {
-                alt32=2;
+            else if ( ((LA33_0>=RULE_ID && LA33_0<=RULE_STRING)||LA33_0==27||(LA33_0>=34 && LA33_0<=35)||LA33_0==40||(LA33_0>=45 && LA33_0<=50)||LA33_0==63||LA33_0==80||(LA33_0>=84 && LA33_0<=85)||LA33_0==88||LA33_0==90||(LA33_0>=93 && LA33_0<=101)||LA33_0==103||LA33_0==112) ) {
+                alt33=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
-            switch (alt32) {
+            switch (alt33) {
                 case 1 :
-                    // InternalSignalDSL.g:3262:2: ( ruleXVariableDeclaration )
+                    // InternalSignalDSL.g:3435:2: ( ruleXVariableDeclaration )
                     {
-                    // InternalSignalDSL.g:3262:2: ( ruleXVariableDeclaration )
-                    // InternalSignalDSL.g:3263:3: ruleXVariableDeclaration
+                    // InternalSignalDSL.g:3435:2: ( ruleXVariableDeclaration )
+                    // InternalSignalDSL.g:3436:3: ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXVariableDeclarationParserRuleCall_0()); 
@@ -11879,10 +12525,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3268:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:3441:2: ( ruleXExpression )
                     {
-                    // InternalSignalDSL.g:3268:2: ( ruleXExpression )
-                    // InternalSignalDSL.g:3269:3: ruleXExpression
+                    // InternalSignalDSL.g:3441:2: ( ruleXExpression )
+                    // InternalSignalDSL.g:3442:3: ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXExpressionOrVarDeclarationAccess().getXExpressionParserRuleCall_1()); 
@@ -11919,41 +12565,41 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_1"
-    // InternalSignalDSL.g:3278:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    // InternalSignalDSL.g:3451:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
     public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3282:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
-            int alt33=2;
-            int LA33_0 = input.LA(1);
+            // InternalSignalDSL.g:3455:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt34=2;
+            int LA34_0 = input.LA(1);
 
-            if ( (LA33_0==102) ) {
-                alt33=1;
+            if ( (LA34_0==111) ) {
+                alt34=1;
             }
-            else if ( (LA33_0==44) ) {
-                alt33=2;
+            else if ( (LA34_0==44) ) {
+                alt34=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 33, 0, input);
+                    new NoViableAltException("", 34, 0, input);
 
                 throw nvae;
             }
-            switch (alt33) {
+            switch (alt34) {
                 case 1 :
-                    // InternalSignalDSL.g:3283:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalSignalDSL.g:3456:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3283:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
-                    // InternalSignalDSL.g:3284:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalSignalDSL.g:3456:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalSignalDSL.g:3457:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
                     }
-                    // InternalSignalDSL.g:3285:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
-                    // InternalSignalDSL.g:3285:4: rule__XVariableDeclaration__WriteableAssignment_1_0
+                    // InternalSignalDSL.g:3458:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalSignalDSL.g:3458:4: rule__XVariableDeclaration__WriteableAssignment_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__WriteableAssignment_1_0();
@@ -11973,10 +12619,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3289:2: ( 'val' )
+                    // InternalSignalDSL.g:3462:2: ( 'val' )
                     {
-                    // InternalSignalDSL.g:3289:2: ( 'val' )
-                    // InternalSignalDSL.g:3290:3: 'val'
+                    // InternalSignalDSL.g:3462:2: ( 'val' )
+                    // InternalSignalDSL.g:3463:3: 'val'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
@@ -12009,55 +12655,55 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Alternatives_2"
-    // InternalSignalDSL.g:3299:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
+    // InternalSignalDSL.g:3472:1: rule__XVariableDeclaration__Alternatives_2 : ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) );
     public final void rule__XVariableDeclaration__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3303:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
-            int alt34=2;
-            int LA34_0 = input.LA(1);
+            // InternalSignalDSL.g:3476:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( (LA34_0==RULE_ID) ) {
-                int LA34_1 = input.LA(2);
+            if ( (LA35_0==RULE_ID) ) {
+                int LA35_1 = input.LA(2);
 
-                if ( (synpred75_InternalSignalDSL()) ) {
-                    alt34=1;
+                if ( (synpred79_InternalSignalDSL()) ) {
+                    alt35=1;
                 }
                 else if ( (true) ) {
-                    alt34=2;
+                    alt35=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return ;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 34, 1, input);
+                        new NoViableAltException("", 35, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA34_0==31||LA34_0==71) ) {
-                alt34=1;
+            else if ( (LA35_0==31||LA35_0==80) ) {
+                alt35=1;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 34, 0, input);
+                    new NoViableAltException("", 35, 0, input);
 
                 throw nvae;
             }
-            switch (alt34) {
+            switch (alt35) {
                 case 1 :
-                    // InternalSignalDSL.g:3304:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3304:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:3305:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3478:3: ( rule__XVariableDeclaration__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:3306:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-                    // InternalSignalDSL.g:3306:4: rule__XVariableDeclaration__Group_2_0__0
+                    // InternalSignalDSL.g:3479:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalSignalDSL.g:3479:4: rule__XVariableDeclaration__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_2_0__0();
@@ -12077,16 +12723,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3310:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalSignalDSL.g:3483:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
                     {
-                    // InternalSignalDSL.g:3310:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
-                    // InternalSignalDSL.g:3311:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalSignalDSL.g:3483:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalSignalDSL.g:3484:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
                     }
-                    // InternalSignalDSL.g:3312:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
-                    // InternalSignalDSL.g:3312:4: rule__XVariableDeclaration__NameAssignment_2_1
+                    // InternalSignalDSL.g:3485:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalSignalDSL.g:3485:4: rule__XVariableDeclaration__NameAssignment_2_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__NameAssignment_2_1();
@@ -12123,27 +12769,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Alternatives_3_1"
-    // InternalSignalDSL.g:3320:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
+    // InternalSignalDSL.g:3493:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );
     public final void rule__XFeatureCall__Alternatives_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3324:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
-            int alt35=2;
-            alt35 = dfa35.predict(input);
-            switch (alt35) {
+            // InternalSignalDSL.g:3497:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt36=2;
+            alt36 = dfa36.predict(input);
+            switch (alt36) {
                 case 1 :
-                    // InternalSignalDSL.g:3325:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3325:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-                    // InternalSignalDSL.g:3326:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalSignalDSL.g:3499:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
                     }
-                    // InternalSignalDSL.g:3327:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-                    // InternalSignalDSL.g:3327:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+                    // InternalSignalDSL.g:3500:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalSignalDSL.g:3500:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -12163,16 +12809,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3331:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3504:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3331:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
-                    // InternalSignalDSL.g:3332:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalSignalDSL.g:3504:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalSignalDSL.g:3505:3: ( rule__XFeatureCall__Group_3_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
                     }
-                    // InternalSignalDSL.g:3333:3: ( rule__XFeatureCall__Group_3_1_1__0 )
-                    // InternalSignalDSL.g:3333:4: rule__XFeatureCall__Group_3_1_1__0
+                    // InternalSignalDSL.g:3506:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalSignalDSL.g:3506:4: rule__XFeatureCall__Group_3_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3_1_1__0();
@@ -12209,54 +12855,54 @@
 
 
     // $ANTLR start "rule__FeatureCallID__Alternatives"
-    // InternalSignalDSL.g:3341:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    // InternalSignalDSL.g:3514:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
     public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3345:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
-            int alt36=5;
+            // InternalSignalDSL.g:3518:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt37=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                alt36=1;
+                alt37=1;
                 }
                 break;
             case 45:
                 {
-                alt36=2;
+                alt37=2;
                 }
                 break;
             case 46:
                 {
-                alt36=3;
+                alt37=3;
                 }
                 break;
             case 47:
                 {
-                alt36=4;
+                alt37=4;
                 }
                 break;
             case 48:
                 {
-                alt36=5;
+                alt37=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 36, 0, input);
+                    new NoViableAltException("", 37, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt36) {
+            switch (alt37) {
                 case 1 :
-                    // InternalSignalDSL.g:3346:2: ( ruleValidID )
+                    // InternalSignalDSL.g:3519:2: ( ruleValidID )
                     {
-                    // InternalSignalDSL.g:3346:2: ( ruleValidID )
-                    // InternalSignalDSL.g:3347:3: ruleValidID
+                    // InternalSignalDSL.g:3519:2: ( ruleValidID )
+                    // InternalSignalDSL.g:3520:3: ruleValidID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall_0()); 
@@ -12276,10 +12922,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3352:2: ( 'extends' )
+                    // InternalSignalDSL.g:3525:2: ( 'extends' )
                     {
-                    // InternalSignalDSL.g:3352:2: ( 'extends' )
-                    // InternalSignalDSL.g:3353:3: 'extends'
+                    // InternalSignalDSL.g:3525:2: ( 'extends' )
+                    // InternalSignalDSL.g:3526:3: 'extends'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
@@ -12295,10 +12941,10 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3358:2: ( 'static' )
+                    // InternalSignalDSL.g:3531:2: ( 'static' )
                     {
-                    // InternalSignalDSL.g:3358:2: ( 'static' )
-                    // InternalSignalDSL.g:3359:3: 'static'
+                    // InternalSignalDSL.g:3531:2: ( 'static' )
+                    // InternalSignalDSL.g:3532:3: 'static'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
@@ -12314,10 +12960,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3364:2: ( 'import' )
+                    // InternalSignalDSL.g:3537:2: ( 'import' )
                     {
-                    // InternalSignalDSL.g:3364:2: ( 'import' )
-                    // InternalSignalDSL.g:3365:3: 'import'
+                    // InternalSignalDSL.g:3537:2: ( 'import' )
+                    // InternalSignalDSL.g:3538:3: 'import'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
@@ -12333,10 +12979,10 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3370:2: ( 'extension' )
+                    // InternalSignalDSL.g:3543:2: ( 'extension' )
                     {
-                    // InternalSignalDSL.g:3370:2: ( 'extension' )
-                    // InternalSignalDSL.g:3371:3: 'extension'
+                    // InternalSignalDSL.g:3543:2: ( 'extension' )
+                    // InternalSignalDSL.g:3544:3: 'extension'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
@@ -12369,35 +13015,35 @@
 
 
     // $ANTLR start "rule__IdOrSuper__Alternatives"
-    // InternalSignalDSL.g:3380:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    // InternalSignalDSL.g:3553:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
     public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3384:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
-            int alt37=2;
-            int LA37_0 = input.LA(1);
+            // InternalSignalDSL.g:3557:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt38=2;
+            int LA38_0 = input.LA(1);
 
-            if ( (LA37_0==RULE_ID||(LA37_0>=45 && LA37_0<=48)) ) {
-                alt37=1;
+            if ( (LA38_0==RULE_ID||(LA38_0>=45 && LA38_0<=48)) ) {
+                alt38=1;
             }
-            else if ( (LA37_0==49) ) {
-                alt37=2;
+            else if ( (LA38_0==49) ) {
+                alt38=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 37, 0, input);
+                    new NoViableAltException("", 38, 0, input);
 
                 throw nvae;
             }
-            switch (alt37) {
+            switch (alt38) {
                 case 1 :
-                    // InternalSignalDSL.g:3385:2: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:3558:2: ( ruleFeatureCallID )
                     {
-                    // InternalSignalDSL.g:3385:2: ( ruleFeatureCallID )
-                    // InternalSignalDSL.g:3386:3: ruleFeatureCallID
+                    // InternalSignalDSL.g:3558:2: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:3559:3: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getFeatureCallIDParserRuleCall_0()); 
@@ -12417,10 +13063,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3391:2: ( 'super' )
+                    // InternalSignalDSL.g:3564:2: ( 'super' )
                     {
-                    // InternalSignalDSL.g:3391:2: ( 'super' )
-                    // InternalSignalDSL.g:3392:3: 'super'
+                    // InternalSignalDSL.g:3564:2: ( 'super' )
+                    // InternalSignalDSL.g:3565:3: 'super'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
@@ -12453,27 +13099,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Alternatives_4_1"
-    // InternalSignalDSL.g:3401:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
+    // InternalSignalDSL.g:3574:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );
     public final void rule__XConstructorCall__Alternatives_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3405:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
-            int alt38=2;
-            alt38 = dfa38.predict(input);
-            switch (alt38) {
+            // InternalSignalDSL.g:3578:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt39=2;
+            alt39 = dfa39.predict(input);
+            switch (alt39) {
                 case 1 :
-                    // InternalSignalDSL.g:3406:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
                     {
-                    // InternalSignalDSL.g:3406:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-                    // InternalSignalDSL.g:3407:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalSignalDSL.g:3580:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
                     }
-                    // InternalSignalDSL.g:3408:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-                    // InternalSignalDSL.g:3408:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+                    // InternalSignalDSL.g:3581:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalSignalDSL.g:3581:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -12493,16 +13139,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3412:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalSignalDSL.g:3585:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3412:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
-                    // InternalSignalDSL.g:3413:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalSignalDSL.g:3585:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalSignalDSL.g:3586:3: ( rule__XConstructorCall__Group_4_1_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
                     }
-                    // InternalSignalDSL.g:3414:3: ( rule__XConstructorCall__Group_4_1_1__0 )
-                    // InternalSignalDSL.g:3414:4: rule__XConstructorCall__Group_4_1_1__0
+                    // InternalSignalDSL.g:3587:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalSignalDSL.g:3587:4: rule__XConstructorCall__Group_4_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4_1_1__0();
@@ -12539,35 +13185,35 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Alternatives_1"
-    // InternalSignalDSL.g:3422:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    // InternalSignalDSL.g:3595:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
     public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3426:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
+            // InternalSignalDSL.g:3599:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt40=2;
+            int LA40_0 = input.LA(1);
 
-            if ( (LA39_0==50) ) {
-                alt39=1;
+            if ( (LA40_0==50) ) {
+                alt40=1;
             }
-            else if ( (LA39_0==103) ) {
-                alt39=2;
+            else if ( (LA40_0==112) ) {
+                alt40=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 40, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt40) {
                 case 1 :
-                    // InternalSignalDSL.g:3427:2: ( 'false' )
+                    // InternalSignalDSL.g:3600:2: ( 'false' )
                     {
-                    // InternalSignalDSL.g:3427:2: ( 'false' )
-                    // InternalSignalDSL.g:3428:3: 'false'
+                    // InternalSignalDSL.g:3600:2: ( 'false' )
+                    // InternalSignalDSL.g:3601:3: 'false'
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
@@ -12583,16 +13229,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3433:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalSignalDSL.g:3606:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
                     {
-                    // InternalSignalDSL.g:3433:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
-                    // InternalSignalDSL.g:3434:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalSignalDSL.g:3606:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalSignalDSL.g:3607:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
                     }
-                    // InternalSignalDSL.g:3435:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
-                    // InternalSignalDSL.g:3435:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
+                    // InternalSignalDSL.g:3608:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalSignalDSL.g:3608:4: rule__XBooleanLiteral__IsTrueAssignment_1_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBooleanLiteral__IsTrueAssignment_1_1();
@@ -12629,41 +13275,41 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Alternatives_3"
-    // InternalSignalDSL.g:3443:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
+    // InternalSignalDSL.g:3616:1: rule__XTryCatchFinallyExpression__Alternatives_3 : ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) );
     public final void rule__XTryCatchFinallyExpression__Alternatives_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3447:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
-            int alt40=2;
-            int LA40_0 = input.LA(1);
+            // InternalSignalDSL.g:3620:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
 
-            if ( (LA40_0==95) ) {
-                alt40=1;
+            if ( (LA41_0==104) ) {
+                alt41=1;
             }
-            else if ( (LA40_0==93) ) {
-                alt40=2;
+            else if ( (LA41_0==102) ) {
+                alt41=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt40) {
+            switch (alt41) {
                 case 1 :
-                    // InternalSignalDSL.g:3448:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3621:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3448:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
-                    // InternalSignalDSL.g:3449:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalSignalDSL.g:3621:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalSignalDSL.g:3622:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
                     }
-                    // InternalSignalDSL.g:3450:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
-                    // InternalSignalDSL.g:3450:4: rule__XTryCatchFinallyExpression__Group_3_0__0
+                    // InternalSignalDSL.g:3623:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalSignalDSL.g:3623:4: rule__XTryCatchFinallyExpression__Group_3_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0__0();
@@ -12683,16 +13329,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3454:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalSignalDSL.g:3627:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3454:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
-                    // InternalSignalDSL.g:3455:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalSignalDSL.g:3627:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalSignalDSL.g:3628:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
                     }
-                    // InternalSignalDSL.g:3456:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
-                    // InternalSignalDSL.g:3456:4: rule__XTryCatchFinallyExpression__Group_3_1__0
+                    // InternalSignalDSL.g:3629:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalSignalDSL.g:3629:4: rule__XTryCatchFinallyExpression__Group_3_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_1__0();
@@ -12729,35 +13375,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives"
-    // InternalSignalDSL.g:3464:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    // InternalSignalDSL.g:3637:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
     public final void rule__Number__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3468:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
+            // InternalSignalDSL.g:3641:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
 
-            if ( (LA41_0==RULE_HEX) ) {
-                alt41=1;
+            if ( (LA42_0==RULE_HEX) ) {
+                alt42=1;
             }
-            else if ( ((LA41_0>=RULE_INT && LA41_0<=RULE_DECIMAL)) ) {
-                alt41=2;
+            else if ( ((LA42_0>=RULE_INT && LA42_0<=RULE_DECIMAL)) ) {
+                alt42=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt42) {
                 case 1 :
-                    // InternalSignalDSL.g:3469:2: ( RULE_HEX )
+                    // InternalSignalDSL.g:3642:2: ( RULE_HEX )
                     {
-                    // InternalSignalDSL.g:3469:2: ( RULE_HEX )
-                    // InternalSignalDSL.g:3470:3: RULE_HEX
+                    // InternalSignalDSL.g:3642:2: ( RULE_HEX )
+                    // InternalSignalDSL.g:3643:3: RULE_HEX
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
@@ -12773,16 +13419,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3475:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalSignalDSL.g:3648:2: ( ( rule__Number__Group_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3475:2: ( ( rule__Number__Group_1__0 ) )
-                    // InternalSignalDSL.g:3476:3: ( rule__Number__Group_1__0 )
+                    // InternalSignalDSL.g:3648:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalSignalDSL.g:3649:3: ( rule__Number__Group_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getGroup_1()); 
                     }
-                    // InternalSignalDSL.g:3477:3: ( rule__Number__Group_1__0 )
-                    // InternalSignalDSL.g:3477:4: rule__Number__Group_1__0
+                    // InternalSignalDSL.g:3650:3: ( rule__Number__Group_1__0 )
+                    // InternalSignalDSL.g:3650:4: rule__Number__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1__0();
@@ -12819,35 +13465,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_0"
-    // InternalSignalDSL.g:3485:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalSignalDSL.g:3658:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3489:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
-            int alt42=2;
-            int LA42_0 = input.LA(1);
+            // InternalSignalDSL.g:3662:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
 
-            if ( (LA42_0==RULE_INT) ) {
-                alt42=1;
+            if ( (LA43_0==RULE_INT) ) {
+                alt43=1;
             }
-            else if ( (LA42_0==RULE_DECIMAL) ) {
-                alt42=2;
+            else if ( (LA43_0==RULE_DECIMAL) ) {
+                alt43=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
-            switch (alt42) {
+            switch (alt43) {
                 case 1 :
-                    // InternalSignalDSL.g:3490:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3663:2: ( RULE_INT )
                     {
-                    // InternalSignalDSL.g:3490:2: ( RULE_INT )
-                    // InternalSignalDSL.g:3491:3: RULE_INT
+                    // InternalSignalDSL.g:3663:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3664:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
@@ -12863,10 +13509,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3496:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3669:2: ( RULE_DECIMAL )
                     {
-                    // InternalSignalDSL.g:3496:2: ( RULE_DECIMAL )
-                    // InternalSignalDSL.g:3497:3: RULE_DECIMAL
+                    // InternalSignalDSL.g:3669:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3670:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
@@ -12899,35 +13545,35 @@
 
 
     // $ANTLR start "rule__Number__Alternatives_1_1_1"
-    // InternalSignalDSL.g:3506:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    // InternalSignalDSL.g:3679:1: rule__Number__Alternatives_1_1_1 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
     public final void rule__Number__Alternatives_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3510:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
-            int alt43=2;
-            int LA43_0 = input.LA(1);
+            // InternalSignalDSL.g:3683:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
 
-            if ( (LA43_0==RULE_INT) ) {
-                alt43=1;
+            if ( (LA44_0==RULE_INT) ) {
+                alt44=1;
             }
-            else if ( (LA43_0==RULE_DECIMAL) ) {
-                alt43=2;
+            else if ( (LA44_0==RULE_DECIMAL) ) {
+                alt44=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
-            switch (alt43) {
+            switch (alt44) {
                 case 1 :
-                    // InternalSignalDSL.g:3511:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3684:2: ( RULE_INT )
                     {
-                    // InternalSignalDSL.g:3511:2: ( RULE_INT )
-                    // InternalSignalDSL.g:3512:3: RULE_INT
+                    // InternalSignalDSL.g:3684:2: ( RULE_INT )
+                    // InternalSignalDSL.g:3685:3: RULE_INT
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
@@ -12943,10 +13589,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3517:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3690:2: ( RULE_DECIMAL )
                     {
-                    // InternalSignalDSL.g:3517:2: ( RULE_DECIMAL )
-                    // InternalSignalDSL.g:3518:3: RULE_DECIMAL
+                    // InternalSignalDSL.g:3690:2: ( RULE_DECIMAL )
+                    // InternalSignalDSL.g:3691:3: RULE_DECIMAL
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
@@ -12979,41 +13625,41 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Alternatives"
-    // InternalSignalDSL.g:3527:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    // InternalSignalDSL.g:3700:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
     public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3531:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
-            int alt44=2;
-            int LA44_0 = input.LA(1);
+            // InternalSignalDSL.g:3704:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            if ( (LA44_0==RULE_ID) ) {
-                alt44=1;
+            if ( (LA45_0==RULE_ID) ) {
+                alt45=1;
             }
-            else if ( (LA44_0==31||LA44_0==71) ) {
-                alt44=2;
+            else if ( (LA45_0==31||LA45_0==80) ) {
+                alt45=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 44, 0, input);
+                    new NoViableAltException("", 45, 0, input);
 
                 throw nvae;
             }
-            switch (alt44) {
+            switch (alt45) {
                 case 1 :
-                    // InternalSignalDSL.g:3532:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalSignalDSL.g:3705:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3532:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
-                    // InternalSignalDSL.g:3533:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalSignalDSL.g:3705:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalSignalDSL.g:3706:3: ( rule__JvmTypeReference__Group_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
                     }
-                    // InternalSignalDSL.g:3534:3: ( rule__JvmTypeReference__Group_0__0 )
-                    // InternalSignalDSL.g:3534:4: rule__JvmTypeReference__Group_0__0
+                    // InternalSignalDSL.g:3707:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalSignalDSL.g:3707:4: rule__JvmTypeReference__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmTypeReference__Group_0__0();
@@ -13033,10 +13679,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3538:2: ( ruleXFunctionTypeRef )
+                    // InternalSignalDSL.g:3711:2: ( ruleXFunctionTypeRef )
                     {
-                    // InternalSignalDSL.g:3538:2: ( ruleXFunctionTypeRef )
-                    // InternalSignalDSL.g:3539:3: ruleXFunctionTypeRef
+                    // InternalSignalDSL.g:3711:2: ( ruleXFunctionTypeRef )
+                    // InternalSignalDSL.g:3712:3: ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
@@ -13073,35 +13719,35 @@
 
 
     // $ANTLR start "rule__JvmArgumentTypeReference__Alternatives"
-    // InternalSignalDSL.g:3548:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    // InternalSignalDSL.g:3721:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
     public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3552:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
-            int alt45=2;
-            int LA45_0 = input.LA(1);
+            // InternalSignalDSL.g:3725:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
 
-            if ( (LA45_0==RULE_ID||LA45_0==31||LA45_0==71) ) {
-                alt45=1;
+            if ( (LA46_0==RULE_ID||LA46_0==31||LA46_0==80) ) {
+                alt46=1;
             }
-            else if ( (LA45_0==96) ) {
-                alt45=2;
+            else if ( (LA46_0==105) ) {
+                alt46=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
-            switch (alt45) {
+            switch (alt46) {
                 case 1 :
-                    // InternalSignalDSL.g:3553:2: ( ruleJvmTypeReference )
+                    // InternalSignalDSL.g:3726:2: ( ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:3553:2: ( ruleJvmTypeReference )
-                    // InternalSignalDSL.g:3554:3: ruleJvmTypeReference
+                    // InternalSignalDSL.g:3726:2: ( ruleJvmTypeReference )
+                    // InternalSignalDSL.g:3727:3: ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
@@ -13121,10 +13767,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3559:2: ( ruleJvmWildcardTypeReference )
+                    // InternalSignalDSL.g:3732:2: ( ruleJvmWildcardTypeReference )
                     {
-                    // InternalSignalDSL.g:3559:2: ( ruleJvmWildcardTypeReference )
-                    // InternalSignalDSL.g:3560:3: ruleJvmWildcardTypeReference
+                    // InternalSignalDSL.g:3732:2: ( ruleJvmWildcardTypeReference )
+                    // InternalSignalDSL.g:3733:3: ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
@@ -13161,41 +13807,41 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Alternatives_2"
-    // InternalSignalDSL.g:3569:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
+    // InternalSignalDSL.g:3742:1: rule__JvmWildcardTypeReference__Alternatives_2 : ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) );
     public final void rule__JvmWildcardTypeReference__Alternatives_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3573:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
-            int alt46=2;
-            int LA46_0 = input.LA(1);
+            // InternalSignalDSL.g:3746:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
 
-            if ( (LA46_0==45) ) {
-                alt46=1;
+            if ( (LA47_0==45) ) {
+                alt47=1;
             }
-            else if ( (LA46_0==49) ) {
-                alt46=2;
+            else if ( (LA47_0==49) ) {
+                alt47=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 46, 0, input);
+                    new NoViableAltException("", 47, 0, input);
 
                 throw nvae;
             }
-            switch (alt46) {
+            switch (alt47) {
                 case 1 :
-                    // InternalSignalDSL.g:3574:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3747:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
                     {
-                    // InternalSignalDSL.g:3574:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
-                    // InternalSignalDSL.g:3575:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalSignalDSL.g:3747:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalSignalDSL.g:3748:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
                     }
-                    // InternalSignalDSL.g:3576:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
-                    // InternalSignalDSL.g:3576:4: rule__JvmWildcardTypeReference__Group_2_0__0
+                    // InternalSignalDSL.g:3749:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalSignalDSL.g:3749:4: rule__JvmWildcardTypeReference__Group_2_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_0__0();
@@ -13215,16 +13861,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3580:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3753:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
                     {
-                    // InternalSignalDSL.g:3580:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
-                    // InternalSignalDSL.g:3581:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalSignalDSL.g:3753:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalSignalDSL.g:3754:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
                     }
-                    // InternalSignalDSL.g:3582:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
-                    // InternalSignalDSL.g:3582:4: rule__JvmWildcardTypeReference__Group_2_1__0
+                    // InternalSignalDSL.g:3755:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalSignalDSL.g:3755:4: rule__JvmWildcardTypeReference__Group_2_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Group_2_1__0();
@@ -13261,41 +13907,41 @@
 
 
     // $ANTLR start "rule__SignalActionEnum__Alternatives"
-    // InternalSignalDSL.g:3590:1: rule__SignalActionEnum__Alternatives : ( ( ( 'Import' ) ) | ( ( 'Export' ) ) );
+    // InternalSignalDSL.g:3763:1: rule__SignalActionEnum__Alternatives : ( ( ( 'Import' ) ) | ( ( 'Export' ) ) );
     public final void rule__SignalActionEnum__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3594:1: ( ( ( 'Import' ) ) | ( ( 'Export' ) ) )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
+            // InternalSignalDSL.g:3767:1: ( ( ( 'Import' ) ) | ( ( 'Export' ) ) )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
 
-            if ( (LA47_0==51) ) {
-                alt47=1;
+            if ( (LA48_0==51) ) {
+                alt48=1;
             }
-            else if ( (LA47_0==52) ) {
-                alt47=2;
+            else if ( (LA48_0==52) ) {
+                alt48=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return ;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+                    new NoViableAltException("", 48, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt48) {
                 case 1 :
-                    // InternalSignalDSL.g:3595:2: ( ( 'Import' ) )
+                    // InternalSignalDSL.g:3768:2: ( ( 'Import' ) )
                     {
-                    // InternalSignalDSL.g:3595:2: ( ( 'Import' ) )
-                    // InternalSignalDSL.g:3596:3: ( 'Import' )
+                    // InternalSignalDSL.g:3768:2: ( ( 'Import' ) )
+                    // InternalSignalDSL.g:3769:3: ( 'Import' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0()); 
                     }
-                    // InternalSignalDSL.g:3597:3: ( 'Import' )
-                    // InternalSignalDSL.g:3597:4: 'Import'
+                    // InternalSignalDSL.g:3770:3: ( 'Import' )
+                    // InternalSignalDSL.g:3770:4: 'Import'
                     {
                     match(input,51,FOLLOW_2); if (state.failed) return ;
 
@@ -13311,16 +13957,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3601:2: ( ( 'Export' ) )
+                    // InternalSignalDSL.g:3774:2: ( ( 'Export' ) )
                     {
-                    // InternalSignalDSL.g:3601:2: ( ( 'Export' ) )
-                    // InternalSignalDSL.g:3602:3: ( 'Export' )
+                    // InternalSignalDSL.g:3774:2: ( ( 'Export' ) )
+                    // InternalSignalDSL.g:3775:3: ( 'Export' )
                     {
                     if ( state.backtracking==0 ) {
                        before(grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1()); 
                     }
-                    // InternalSignalDSL.g:3603:3: ( 'Export' )
-                    // InternalSignalDSL.g:3603:4: 'Export'
+                    // InternalSignalDSL.g:3776:3: ( 'Export' )
+                    // InternalSignalDSL.g:3776:4: 'Export'
                     {
                     match(input,52,FOLLOW_2); if (state.failed) return ;
 
@@ -13352,113 +13998,21 @@
     // $ANTLR end "rule__SignalActionEnum__Alternatives"
 
 
-    // $ANTLR start "rule__SignalTypeEnum__Alternatives"
-    // InternalSignalDSL.g:3611:1: rule__SignalTypeEnum__Alternatives : ( ( ( 'createSignals' ) ) | ( ( 'modifySignals' ) ) );
-    public final void rule__SignalTypeEnum__Alternatives() throws RecognitionException {
+    // $ANTLR start "rule__SignalExecutionTypeEnum__Alternatives"
+    // InternalSignalDSL.g:3784:1: rule__SignalExecutionTypeEnum__Alternatives : ( ( ( 'sequential' ) ) | ( ( 'parallel' ) ) );
+    public final void rule__SignalExecutionTypeEnum__Alternatives() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3615:1: ( ( ( 'createSignals' ) ) | ( ( 'modifySignals' ) ) )
-            int alt48=2;
-            int LA48_0 = input.LA(1);
-
-            if ( (LA48_0==53) ) {
-                alt48=1;
-            }
-            else if ( (LA48_0==54) ) {
-                alt48=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 48, 0, input);
-
-                throw nvae;
-            }
-            switch (alt48) {
-                case 1 :
-                    // InternalSignalDSL.g:3616:2: ( ( 'createSignals' ) )
-                    {
-                    // InternalSignalDSL.g:3616:2: ( ( 'createSignals' ) )
-                    // InternalSignalDSL.g:3617:3: ( 'createSignals' )
-                    {
-                    if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0()); 
-                    }
-                    // InternalSignalDSL.g:3618:3: ( 'createSignals' )
-                    // InternalSignalDSL.g:3618:4: 'createSignals'
-                    {
-                    match(input,53,FOLLOW_2); if (state.failed) return ;
-
-                    }
-
-                    if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0()); 
-                    }
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // InternalSignalDSL.g:3622:2: ( ( 'modifySignals' ) )
-                    {
-                    // InternalSignalDSL.g:3622:2: ( ( 'modifySignals' ) )
-                    // InternalSignalDSL.g:3623:3: ( 'modifySignals' )
-                    {
-                    if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1()); 
-                    }
-                    // InternalSignalDSL.g:3624:3: ( 'modifySignals' )
-                    // InternalSignalDSL.g:3624:4: 'modifySignals'
-                    {
-                    match(input,54,FOLLOW_2); if (state.failed) return ;
-
-                    }
-
-                    if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1()); 
-                    }
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalTypeEnum__Alternatives"
-
-
-    // $ANTLR start "rule__SignalHandlerTypeEnum__Alternatives"
-    // InternalSignalDSL.g:3632:1: rule__SignalHandlerTypeEnum__Alternatives : ( ( ( 'doAfterModify' ) ) | ( ( 'doAfterCreate' ) ) );
-    public final void rule__SignalHandlerTypeEnum__Alternatives() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:3636:1: ( ( ( 'doAfterModify' ) ) | ( ( 'doAfterCreate' ) ) )
+            // InternalSignalDSL.g:3788:1: ( ( ( 'sequential' ) ) | ( ( 'parallel' ) ) )
             int alt49=2;
             int LA49_0 = input.LA(1);
 
-            if ( (LA49_0==55) ) {
+            if ( (LA49_0==53) ) {
                 alt49=1;
             }
-            else if ( (LA49_0==56) ) {
+            else if ( (LA49_0==54) ) {
                 alt49=2;
             }
             else {
@@ -13470,23 +14024,23 @@
             }
             switch (alt49) {
                 case 1 :
-                    // InternalSignalDSL.g:3637:2: ( ( 'doAfterModify' ) )
+                    // InternalSignalDSL.g:3789:2: ( ( 'sequential' ) )
                     {
-                    // InternalSignalDSL.g:3637:2: ( ( 'doAfterModify' ) )
-                    // InternalSignalDSL.g:3638:3: ( 'doAfterModify' )
+                    // InternalSignalDSL.g:3789:2: ( ( 'sequential' ) )
+                    // InternalSignalDSL.g:3790:3: ( 'sequential' )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0()); 
+                       before(grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0()); 
                     }
-                    // InternalSignalDSL.g:3639:3: ( 'doAfterModify' )
-                    // InternalSignalDSL.g:3639:4: 'doAfterModify'
+                    // InternalSignalDSL.g:3791:3: ( 'sequential' )
+                    // InternalSignalDSL.g:3791:4: 'sequential'
                     {
-                    match(input,55,FOLLOW_2); if (state.failed) return ;
+                    match(input,53,FOLLOW_2); if (state.failed) return ;
 
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0()); 
+                       after(grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0()); 
                     }
 
                     }
@@ -13495,115 +14049,23 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3643:2: ( ( 'doAfterCreate' ) )
+                    // InternalSignalDSL.g:3795:2: ( ( 'parallel' ) )
                     {
-                    // InternalSignalDSL.g:3643:2: ( ( 'doAfterCreate' ) )
-                    // InternalSignalDSL.g:3644:3: ( 'doAfterCreate' )
+                    // InternalSignalDSL.g:3795:2: ( ( 'parallel' ) )
+                    // InternalSignalDSL.g:3796:3: ( 'parallel' )
                     {
                     if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1()); 
+                       before(grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1()); 
                     }
-                    // InternalSignalDSL.g:3645:3: ( 'doAfterCreate' )
-                    // InternalSignalDSL.g:3645:4: 'doAfterCreate'
+                    // InternalSignalDSL.g:3797:3: ( 'parallel' )
+                    // InternalSignalDSL.g:3797:4: 'parallel'
                     {
-                    match(input,56,FOLLOW_2); if (state.failed) return ;
+                    match(input,54,FOLLOW_2); if (state.failed) return ;
 
                     }
 
                     if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1()); 
-                    }
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandlerTypeEnum__Alternatives"
-
-
-    // $ANTLR start "rule__SignalExecutionTypeEnum__Alternatives"
-    // InternalSignalDSL.g:3653:1: rule__SignalExecutionTypeEnum__Alternatives : ( ( ( 'synch' ) ) | ( ( 'asynch' ) ) );
-    public final void rule__SignalExecutionTypeEnum__Alternatives() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:3657:1: ( ( ( 'synch' ) ) | ( ( 'asynch' ) ) )
-            int alt50=2;
-            int LA50_0 = input.LA(1);
-
-            if ( (LA50_0==57) ) {
-                alt50=1;
-            }
-            else if ( (LA50_0==58) ) {
-                alt50=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return ;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 50, 0, input);
-
-                throw nvae;
-            }
-            switch (alt50) {
-                case 1 :
-                    // InternalSignalDSL.g:3658:2: ( ( 'synch' ) )
-                    {
-                    // InternalSignalDSL.g:3658:2: ( ( 'synch' ) )
-                    // InternalSignalDSL.g:3659:3: ( 'synch' )
-                    {
-                    if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0()); 
-                    }
-                    // InternalSignalDSL.g:3660:3: ( 'synch' )
-                    // InternalSignalDSL.g:3660:4: 'synch'
-                    {
-                    match(input,57,FOLLOW_2); if (state.failed) return ;
-
-                    }
-
-                    if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0()); 
-                    }
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // InternalSignalDSL.g:3664:2: ( ( 'asynch' ) )
-                    {
-                    // InternalSignalDSL.g:3664:2: ( ( 'asynch' ) )
-                    // InternalSignalDSL.g:3665:3: ( 'asynch' )
-                    {
-                    if ( state.backtracking==0 ) {
-                       before(grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1()); 
-                    }
-                    // InternalSignalDSL.g:3666:3: ( 'asynch' )
-                    // InternalSignalDSL.g:3666:4: 'asynch'
-                    {
-                    match(input,58,FOLLOW_2); if (state.failed) return ;
-
-                    }
-
-                    if ( state.backtracking==0 ) {
-                       after(grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1()); 
+                       after(grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1()); 
                     }
 
                     }
@@ -13628,15 +14090,261 @@
     // $ANTLR end "rule__SignalExecutionTypeEnum__Alternatives"
 
 
+    // $ANTLR start "rule__DayOfWeekEnum__Alternatives"
+    // InternalSignalDSL.g:3805:1: rule__DayOfWeekEnum__Alternatives : ( ( ( 'sunday' ) ) | ( ( 'monday' ) ) | ( ( 'tuesday' ) ) | ( ( 'wednesday' ) ) | ( ( 'thursday' ) ) | ( ( 'friday' ) ) | ( ( 'saturday' ) ) );
+    public final void rule__DayOfWeekEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:3809:1: ( ( ( 'sunday' ) ) | ( ( 'monday' ) ) | ( ( 'tuesday' ) ) | ( ( 'wednesday' ) ) | ( ( 'thursday' ) ) | ( ( 'friday' ) ) | ( ( 'saturday' ) ) )
+            int alt50=7;
+            switch ( input.LA(1) ) {
+            case 55:
+                {
+                alt50=1;
+                }
+                break;
+            case 56:
+                {
+                alt50=2;
+                }
+                break;
+            case 57:
+                {
+                alt50=3;
+                }
+                break;
+            case 58:
+                {
+                alt50=4;
+                }
+                break;
+            case 59:
+                {
+                alt50=5;
+                }
+                break;
+            case 60:
+                {
+                alt50=6;
+                }
+                break;
+            case 61:
+                {
+                alt50=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 50, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt50) {
+                case 1 :
+                    // InternalSignalDSL.g:3810:2: ( ( 'sunday' ) )
+                    {
+                    // InternalSignalDSL.g:3810:2: ( ( 'sunday' ) )
+                    // InternalSignalDSL.g:3811:3: ( 'sunday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalSignalDSL.g:3812:3: ( 'sunday' )
+                    // InternalSignalDSL.g:3812:4: 'sunday'
+                    {
+                    match(input,55,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:3816:2: ( ( 'monday' ) )
+                    {
+                    // InternalSignalDSL.g:3816:2: ( ( 'monday' ) )
+                    // InternalSignalDSL.g:3817:3: ( 'monday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalSignalDSL.g:3818:3: ( 'monday' )
+                    // InternalSignalDSL.g:3818:4: 'monday'
+                    {
+                    match(input,56,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalSignalDSL.g:3822:2: ( ( 'tuesday' ) )
+                    {
+                    // InternalSignalDSL.g:3822:2: ( ( 'tuesday' ) )
+                    // InternalSignalDSL.g:3823:3: ( 'tuesday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalSignalDSL.g:3824:3: ( 'tuesday' )
+                    // InternalSignalDSL.g:3824:4: 'tuesday'
+                    {
+                    match(input,57,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalSignalDSL.g:3828:2: ( ( 'wednesday' ) )
+                    {
+                    // InternalSignalDSL.g:3828:2: ( ( 'wednesday' ) )
+                    // InternalSignalDSL.g:3829:3: ( 'wednesday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalSignalDSL.g:3830:3: ( 'wednesday' )
+                    // InternalSignalDSL.g:3830:4: 'wednesday'
+                    {
+                    match(input,58,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalSignalDSL.g:3834:2: ( ( 'thursday' ) )
+                    {
+                    // InternalSignalDSL.g:3834:2: ( ( 'thursday' ) )
+                    // InternalSignalDSL.g:3835:3: ( 'thursday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalSignalDSL.g:3836:3: ( 'thursday' )
+                    // InternalSignalDSL.g:3836:4: 'thursday'
+                    {
+                    match(input,59,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalSignalDSL.g:3840:2: ( ( 'friday' ) )
+                    {
+                    // InternalSignalDSL.g:3840:2: ( ( 'friday' ) )
+                    // InternalSignalDSL.g:3841:3: ( 'friday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5()); 
+                    }
+                    // InternalSignalDSL.g:3842:3: ( 'friday' )
+                    // InternalSignalDSL.g:3842:4: 'friday'
+                    {
+                    match(input,60,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalSignalDSL.g:3846:2: ( ( 'saturday' ) )
+                    {
+                    // InternalSignalDSL.g:3846:2: ( ( 'saturday' ) )
+                    // InternalSignalDSL.g:3847:3: ( 'saturday' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6()); 
+                    }
+                    // InternalSignalDSL.g:3848:3: ( 'saturday' )
+                    // InternalSignalDSL.g:3848:4: 'saturday'
+                    {
+                    match(input,61,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DayOfWeekEnum__Alternatives"
+
+
     // $ANTLR start "rule__SignalModel__Group__0"
-    // InternalSignalDSL.g:3674:1: rule__SignalModel__Group__0 : rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 ;
+    // InternalSignalDSL.g:3856:1: rule__SignalModel__Group__0 : rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 ;
     public final void rule__SignalModel__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3678:1: ( rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 )
-            // InternalSignalDSL.g:3679:2: rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1
+            // InternalSignalDSL.g:3860:1: ( rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1 )
+            // InternalSignalDSL.g:3861:2: rule__SignalModel__Group__0__Impl rule__SignalModel__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__SignalModel__Group__0__Impl();
@@ -13667,22 +14375,22 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__0__Impl"
-    // InternalSignalDSL.g:3686:1: rule__SignalModel__Group__0__Impl : ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) ;
+    // InternalSignalDSL.g:3868:1: rule__SignalModel__Group__0__Impl : ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) ;
     public final void rule__SignalModel__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3690:1: ( ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) )
-            // InternalSignalDSL.g:3691:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
+            // InternalSignalDSL.g:3872:1: ( ( ( rule__SignalModel__ImportSectionAssignment_0 )? ) )
+            // InternalSignalDSL.g:3873:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
             {
-            // InternalSignalDSL.g:3691:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
-            // InternalSignalDSL.g:3692:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
+            // InternalSignalDSL.g:3873:1: ( ( rule__SignalModel__ImportSectionAssignment_0 )? )
+            // InternalSignalDSL.g:3874:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getImportSectionAssignment_0()); 
             }
-            // InternalSignalDSL.g:3693:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
+            // InternalSignalDSL.g:3875:2: ( rule__SignalModel__ImportSectionAssignment_0 )?
             int alt51=2;
             int LA51_0 = input.LA(1);
 
@@ -13691,7 +14399,7 @@
             }
             switch (alt51) {
                 case 1 :
-                    // InternalSignalDSL.g:3693:3: rule__SignalModel__ImportSectionAssignment_0
+                    // InternalSignalDSL.g:3875:3: rule__SignalModel__ImportSectionAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__SignalModel__ImportSectionAssignment_0();
@@ -13729,14 +14437,14 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__1"
-    // InternalSignalDSL.g:3701:1: rule__SignalModel__Group__1 : rule__SignalModel__Group__1__Impl ;
+    // InternalSignalDSL.g:3883:1: rule__SignalModel__Group__1 : rule__SignalModel__Group__1__Impl ;
     public final void rule__SignalModel__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3705:1: ( rule__SignalModel__Group__1__Impl )
-            // InternalSignalDSL.g:3706:2: rule__SignalModel__Group__1__Impl
+            // InternalSignalDSL.g:3887:1: ( rule__SignalModel__Group__1__Impl )
+            // InternalSignalDSL.g:3888:2: rule__SignalModel__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalModel__Group__1__Impl();
@@ -13762,49 +14470,31 @@
 
 
     // $ANTLR start "rule__SignalModel__Group__1__Impl"
-    // InternalSignalDSL.g:3712:1: rule__SignalModel__Group__1__Impl : ( ( rule__SignalModel__PackagesAssignment_1 )* ) ;
+    // InternalSignalDSL.g:3894:1: rule__SignalModel__Group__1__Impl : ( ( rule__SignalModel__PackagesAssignment_1 ) ) ;
     public final void rule__SignalModel__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3716:1: ( ( ( rule__SignalModel__PackagesAssignment_1 )* ) )
-            // InternalSignalDSL.g:3717:1: ( ( rule__SignalModel__PackagesAssignment_1 )* )
+            // InternalSignalDSL.g:3898:1: ( ( ( rule__SignalModel__PackagesAssignment_1 ) ) )
+            // InternalSignalDSL.g:3899:1: ( ( rule__SignalModel__PackagesAssignment_1 ) )
             {
-            // InternalSignalDSL.g:3717:1: ( ( rule__SignalModel__PackagesAssignment_1 )* )
-            // InternalSignalDSL.g:3718:2: ( rule__SignalModel__PackagesAssignment_1 )*
+            // InternalSignalDSL.g:3899:1: ( ( rule__SignalModel__PackagesAssignment_1 ) )
+            // InternalSignalDSL.g:3900:2: ( rule__SignalModel__PackagesAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getPackagesAssignment_1()); 
             }
-            // InternalSignalDSL.g:3719:2: ( rule__SignalModel__PackagesAssignment_1 )*
-            loop52:
-            do {
-                int alt52=2;
-                int LA52_0 = input.LA(1);
+            // InternalSignalDSL.g:3901:2: ( rule__SignalModel__PackagesAssignment_1 )
+            // InternalSignalDSL.g:3901:3: rule__SignalModel__PackagesAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalModel__PackagesAssignment_1();
 
-                if ( (LA52_0==59) ) {
-                    alt52=1;
-                }
+            state._fsp--;
+            if (state.failed) return ;
 
-
-                switch (alt52) {
-            	case 1 :
-            	    // InternalSignalDSL.g:3719:3: rule__SignalModel__PackagesAssignment_1
-            	    {
-            	    pushFollow(FOLLOW_6);
-            	    rule__SignalModel__PackagesAssignment_1();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop52;
-                }
-            } while (true);
+            }
 
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalModelAccess().getPackagesAssignment_1()); 
@@ -13831,14 +14521,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__0"
-    // InternalSignalDSL.g:3728:1: rule__SignalPackage__Group__0 : rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 ;
+    // InternalSignalDSL.g:3910:1: rule__SignalPackage__Group__0 : rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 ;
     public final void rule__SignalPackage__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3732:1: ( rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 )
-            // InternalSignalDSL.g:3733:2: rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1
+            // InternalSignalDSL.g:3914:1: ( rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1 )
+            // InternalSignalDSL.g:3915:2: rule__SignalPackage__Group__0__Impl rule__SignalPackage__Group__1
             {
             pushFollow(FOLLOW_5);
             rule__SignalPackage__Group__0__Impl();
@@ -13869,23 +14559,23 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__0__Impl"
-    // InternalSignalDSL.g:3740:1: rule__SignalPackage__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:3922:1: rule__SignalPackage__Group__0__Impl : ( () ) ;
     public final void rule__SignalPackage__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3744:1: ( ( () ) )
-            // InternalSignalDSL.g:3745:1: ( () )
+            // InternalSignalDSL.g:3926:1: ( ( () ) )
+            // InternalSignalDSL.g:3927:1: ( () )
             {
-            // InternalSignalDSL.g:3745:1: ( () )
-            // InternalSignalDSL.g:3746:2: ()
+            // InternalSignalDSL.g:3927:1: ( () )
+            // InternalSignalDSL.g:3928:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getSignalPackageAction_0()); 
             }
-            // InternalSignalDSL.g:3747:2: ()
-            // InternalSignalDSL.g:3747:3: 
+            // InternalSignalDSL.g:3929:2: ()
+            // InternalSignalDSL.g:3929:3: 
             {
             }
 
@@ -13910,16 +14600,16 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__1"
-    // InternalSignalDSL.g:3755:1: rule__SignalPackage__Group__1 : rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 ;
+    // InternalSignalDSL.g:3937:1: rule__SignalPackage__Group__1 : rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 ;
     public final void rule__SignalPackage__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3759:1: ( rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 )
-            // InternalSignalDSL.g:3760:2: rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2
+            // InternalSignalDSL.g:3941:1: ( rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2 )
+            // InternalSignalDSL.g:3942:2: rule__SignalPackage__Group__1__Impl rule__SignalPackage__Group__2
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__SignalPackage__Group__1__Impl();
 
             state._fsp--;
@@ -13948,22 +14638,22 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__1__Impl"
-    // InternalSignalDSL.g:3767:1: rule__SignalPackage__Group__1__Impl : ( 'package' ) ;
+    // InternalSignalDSL.g:3949:1: rule__SignalPackage__Group__1__Impl : ( 'package' ) ;
     public final void rule__SignalPackage__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3771:1: ( ( 'package' ) )
-            // InternalSignalDSL.g:3772:1: ( 'package' )
+            // InternalSignalDSL.g:3953:1: ( ( 'package' ) )
+            // InternalSignalDSL.g:3954:1: ( 'package' )
             {
-            // InternalSignalDSL.g:3772:1: ( 'package' )
-            // InternalSignalDSL.g:3773:2: 'package'
+            // InternalSignalDSL.g:3954:1: ( 'package' )
+            // InternalSignalDSL.g:3955:2: 'package'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getPackageKeyword_1()); 
             }
-            match(input,59,FOLLOW_2); if (state.failed) return ;
+            match(input,62,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalPackageAccess().getPackageKeyword_1()); 
             }
@@ -13989,16 +14679,16 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__2"
-    // InternalSignalDSL.g:3782:1: rule__SignalPackage__Group__2 : rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 ;
+    // InternalSignalDSL.g:3964:1: rule__SignalPackage__Group__2 : rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 ;
     public final void rule__SignalPackage__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3786:1: ( rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 )
-            // InternalSignalDSL.g:3787:2: rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3
+            // InternalSignalDSL.g:3968:1: ( rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3 )
+            // InternalSignalDSL.g:3969:2: rule__SignalPackage__Group__2__Impl rule__SignalPackage__Group__3
             {
-            pushFollow(FOLLOW_8);
+            pushFollow(FOLLOW_7);
             rule__SignalPackage__Group__2__Impl();
 
             state._fsp--;
@@ -14027,23 +14717,23 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__2__Impl"
-    // InternalSignalDSL.g:3794:1: rule__SignalPackage__Group__2__Impl : ( ( rule__SignalPackage__NameAssignment_2 ) ) ;
+    // InternalSignalDSL.g:3976:1: rule__SignalPackage__Group__2__Impl : ( ( rule__SignalPackage__NameAssignment_2 ) ) ;
     public final void rule__SignalPackage__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3798:1: ( ( ( rule__SignalPackage__NameAssignment_2 ) ) )
-            // InternalSignalDSL.g:3799:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
+            // InternalSignalDSL.g:3980:1: ( ( ( rule__SignalPackage__NameAssignment_2 ) ) )
+            // InternalSignalDSL.g:3981:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
             {
-            // InternalSignalDSL.g:3799:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
-            // InternalSignalDSL.g:3800:2: ( rule__SignalPackage__NameAssignment_2 )
+            // InternalSignalDSL.g:3981:1: ( ( rule__SignalPackage__NameAssignment_2 ) )
+            // InternalSignalDSL.g:3982:2: ( rule__SignalPackage__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getNameAssignment_2()); 
             }
-            // InternalSignalDSL.g:3801:2: ( rule__SignalPackage__NameAssignment_2 )
-            // InternalSignalDSL.g:3801:3: rule__SignalPackage__NameAssignment_2
+            // InternalSignalDSL.g:3983:2: ( rule__SignalPackage__NameAssignment_2 )
+            // InternalSignalDSL.g:3983:3: rule__SignalPackage__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__NameAssignment_2();
@@ -14078,14 +14768,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__3"
-    // InternalSignalDSL.g:3809:1: rule__SignalPackage__Group__3 : rule__SignalPackage__Group__3__Impl ;
+    // InternalSignalDSL.g:3991:1: rule__SignalPackage__Group__3 : rule__SignalPackage__Group__3__Impl ;
     public final void rule__SignalPackage__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3813:1: ( rule__SignalPackage__Group__3__Impl )
-            // InternalSignalDSL.g:3814:2: rule__SignalPackage__Group__3__Impl
+            // InternalSignalDSL.g:3995:1: ( rule__SignalPackage__Group__3__Impl )
+            // InternalSignalDSL.g:3996:2: rule__SignalPackage__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__Group__3__Impl();
@@ -14111,31 +14801,31 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group__3__Impl"
-    // InternalSignalDSL.g:3820:1: rule__SignalPackage__Group__3__Impl : ( ( rule__SignalPackage__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:4002:1: rule__SignalPackage__Group__3__Impl : ( ( rule__SignalPackage__Group_3__0 )? ) ;
     public final void rule__SignalPackage__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3824:1: ( ( ( rule__SignalPackage__Group_3__0 )? ) )
-            // InternalSignalDSL.g:3825:1: ( ( rule__SignalPackage__Group_3__0 )? )
+            // InternalSignalDSL.g:4006:1: ( ( ( rule__SignalPackage__Group_3__0 )? ) )
+            // InternalSignalDSL.g:4007:1: ( ( rule__SignalPackage__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:3825:1: ( ( rule__SignalPackage__Group_3__0 )? )
-            // InternalSignalDSL.g:3826:2: ( rule__SignalPackage__Group_3__0 )?
+            // InternalSignalDSL.g:4007:1: ( ( rule__SignalPackage__Group_3__0 )? )
+            // InternalSignalDSL.g:4008:2: ( rule__SignalPackage__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:3827:2: ( rule__SignalPackage__Group_3__0 )?
-            int alt53=2;
-            int LA53_0 = input.LA(1);
+            // InternalSignalDSL.g:4009:2: ( rule__SignalPackage__Group_3__0 )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
 
-            if ( (LA53_0==60) ) {
-                alt53=1;
+            if ( (LA52_0==63) ) {
+                alt52=1;
             }
-            switch (alt53) {
+            switch (alt52) {
                 case 1 :
-                    // InternalSignalDSL.g:3827:3: rule__SignalPackage__Group_3__0
+                    // InternalSignalDSL.g:4009:3: rule__SignalPackage__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__SignalPackage__Group_3__0();
@@ -14173,16 +14863,16 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__0"
-    // InternalSignalDSL.g:3836:1: rule__SignalPackage__Group_3__0 : rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 ;
+    // InternalSignalDSL.g:4018:1: rule__SignalPackage__Group_3__0 : rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 ;
     public final void rule__SignalPackage__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3840:1: ( rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 )
-            // InternalSignalDSL.g:3841:2: rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1
+            // InternalSignalDSL.g:4022:1: ( rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1 )
+            // InternalSignalDSL.g:4023:2: rule__SignalPackage__Group_3__0__Impl rule__SignalPackage__Group_3__1
             {
-            pushFollow(FOLLOW_9);
+            pushFollow(FOLLOW_8);
             rule__SignalPackage__Group_3__0__Impl();
 
             state._fsp--;
@@ -14211,22 +14901,22 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__0__Impl"
-    // InternalSignalDSL.g:3848:1: rule__SignalPackage__Group_3__0__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:4030:1: rule__SignalPackage__Group_3__0__Impl : ( '{' ) ;
     public final void rule__SignalPackage__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3852:1: ( ( '{' ) )
-            // InternalSignalDSL.g:3853:1: ( '{' )
+            // InternalSignalDSL.g:4034:1: ( ( '{' ) )
+            // InternalSignalDSL.g:4035:1: ( '{' )
             {
-            // InternalSignalDSL.g:3853:1: ( '{' )
-            // InternalSignalDSL.g:3854:2: '{'
+            // InternalSignalDSL.g:4035:1: ( '{' )
+            // InternalSignalDSL.g:4036:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
             }
@@ -14252,16 +14942,16 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__1"
-    // InternalSignalDSL.g:3863:1: rule__SignalPackage__Group_3__1 : rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 ;
+    // InternalSignalDSL.g:4045:1: rule__SignalPackage__Group_3__1 : rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 ;
     public final void rule__SignalPackage__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3867:1: ( rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 )
-            // InternalSignalDSL.g:3868:2: rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2
+            // InternalSignalDSL.g:4049:1: ( rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2 )
+            // InternalSignalDSL.g:4050:2: rule__SignalPackage__Group_3__1__Impl rule__SignalPackage__Group_3__2
             {
-            pushFollow(FOLLOW_9);
+            pushFollow(FOLLOW_8);
             rule__SignalPackage__Group_3__1__Impl();
 
             state._fsp--;
@@ -14290,37 +14980,37 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__1__Impl"
-    // InternalSignalDSL.g:3875:1: rule__SignalPackage__Group_3__1__Impl : ( ( rule__SignalPackage__WatchersAssignment_3_1 )* ) ;
+    // InternalSignalDSL.g:4057:1: rule__SignalPackage__Group_3__1__Impl : ( ( rule__SignalPackage__WatchersAssignment_3_1 )* ) ;
     public final void rule__SignalPackage__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3879:1: ( ( ( rule__SignalPackage__WatchersAssignment_3_1 )* ) )
-            // InternalSignalDSL.g:3880:1: ( ( rule__SignalPackage__WatchersAssignment_3_1 )* )
+            // InternalSignalDSL.g:4061:1: ( ( ( rule__SignalPackage__WatchersAssignment_3_1 )* ) )
+            // InternalSignalDSL.g:4062:1: ( ( rule__SignalPackage__WatchersAssignment_3_1 )* )
             {
-            // InternalSignalDSL.g:3880:1: ( ( rule__SignalPackage__WatchersAssignment_3_1 )* )
-            // InternalSignalDSL.g:3881:2: ( rule__SignalPackage__WatchersAssignment_3_1 )*
+            // InternalSignalDSL.g:4062:1: ( ( rule__SignalPackage__WatchersAssignment_3_1 )* )
+            // InternalSignalDSL.g:4063:2: ( rule__SignalPackage__WatchersAssignment_3_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getWatchersAssignment_3_1()); 
             }
-            // InternalSignalDSL.g:3882:2: ( rule__SignalPackage__WatchersAssignment_3_1 )*
-            loop54:
+            // InternalSignalDSL.g:4064:2: ( rule__SignalPackage__WatchersAssignment_3_1 )*
+            loop53:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt53=2;
+                int LA53_0 = input.LA(1);
 
-                if ( (LA54_0==62) ) {
-                    alt54=1;
+                if ( (LA53_0==65) ) {
+                    alt53=1;
                 }
 
 
-                switch (alt54) {
+                switch (alt53) {
             	case 1 :
-            	    // InternalSignalDSL.g:3882:3: rule__SignalPackage__WatchersAssignment_3_1
+            	    // InternalSignalDSL.g:4064:3: rule__SignalPackage__WatchersAssignment_3_1
             	    {
-            	    pushFollow(FOLLOW_10);
+            	    pushFollow(FOLLOW_9);
             	    rule__SignalPackage__WatchersAssignment_3_1();
 
             	    state._fsp--;
@@ -14330,7 +15020,7 @@
             	    break;
 
             	default :
-            	    break loop54;
+            	    break loop53;
                 }
             } while (true);
 
@@ -14359,14 +15049,14 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__2"
-    // InternalSignalDSL.g:3890:1: rule__SignalPackage__Group_3__2 : rule__SignalPackage__Group_3__2__Impl ;
+    // InternalSignalDSL.g:4072:1: rule__SignalPackage__Group_3__2 : rule__SignalPackage__Group_3__2__Impl ;
     public final void rule__SignalPackage__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3894:1: ( rule__SignalPackage__Group_3__2__Impl )
-            // InternalSignalDSL.g:3895:2: rule__SignalPackage__Group_3__2__Impl
+            // InternalSignalDSL.g:4076:1: ( rule__SignalPackage__Group_3__2__Impl )
+            // InternalSignalDSL.g:4077:2: rule__SignalPackage__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalPackage__Group_3__2__Impl();
@@ -14392,22 +15082,22 @@
 
 
     // $ANTLR start "rule__SignalPackage__Group_3__2__Impl"
-    // InternalSignalDSL.g:3901:1: rule__SignalPackage__Group_3__2__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:4083:1: rule__SignalPackage__Group_3__2__Impl : ( '}' ) ;
     public final void rule__SignalPackage__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3905:1: ( ( '}' ) )
-            // InternalSignalDSL.g:3906:1: ( '}' )
+            // InternalSignalDSL.g:4087:1: ( ( '}' ) )
+            // InternalSignalDSL.g:4088:1: ( '}' )
             {
-            // InternalSignalDSL.g:3906:1: ( '}' )
-            // InternalSignalDSL.g:3907:2: '}'
+            // InternalSignalDSL.g:4088:1: ( '}' )
+            // InternalSignalDSL.g:4089:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getRightCurlyBracketKeyword_3_2()); 
             }
-            match(input,61,FOLLOW_2); if (state.failed) return ;
+            match(input,64,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalPackageAccess().getRightCurlyBracketKeyword_3_2()); 
             }
@@ -14433,16 +15123,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__0"
-    // InternalSignalDSL.g:3917:1: rule__SignalWatcher__Group__0 : rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 ;
+    // InternalSignalDSL.g:4099:1: rule__SignalWatcher__Group__0 : rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 ;
     public final void rule__SignalWatcher__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3921:1: ( rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 )
-            // InternalSignalDSL.g:3922:2: rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1
+            // InternalSignalDSL.g:4103:1: ( rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1 )
+            // InternalSignalDSL.g:4104:2: rule__SignalWatcher__Group__0__Impl rule__SignalWatcher__Group__1
             {
-            pushFollow(FOLLOW_11);
+            pushFollow(FOLLOW_10);
             rule__SignalWatcher__Group__0__Impl();
 
             state._fsp--;
@@ -14471,23 +15161,23 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__0__Impl"
-    // InternalSignalDSL.g:3929:1: rule__SignalWatcher__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:4111:1: rule__SignalWatcher__Group__0__Impl : ( () ) ;
     public final void rule__SignalWatcher__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3933:1: ( ( () ) )
-            // InternalSignalDSL.g:3934:1: ( () )
+            // InternalSignalDSL.g:4115:1: ( ( () ) )
+            // InternalSignalDSL.g:4116:1: ( () )
             {
-            // InternalSignalDSL.g:3934:1: ( () )
-            // InternalSignalDSL.g:3935:2: ()
+            // InternalSignalDSL.g:4116:1: ( () )
+            // InternalSignalDSL.g:4117:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getSignalWatcherAction_0()); 
             }
-            // InternalSignalDSL.g:3936:2: ()
-            // InternalSignalDSL.g:3936:3: 
+            // InternalSignalDSL.g:4118:2: ()
+            // InternalSignalDSL.g:4118:3: 
             {
             }
 
@@ -14512,16 +15202,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__1"
-    // InternalSignalDSL.g:3944:1: rule__SignalWatcher__Group__1 : rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 ;
+    // InternalSignalDSL.g:4126:1: rule__SignalWatcher__Group__1 : rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 ;
     public final void rule__SignalWatcher__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3948:1: ( rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 )
-            // InternalSignalDSL.g:3949:2: rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2
+            // InternalSignalDSL.g:4130:1: ( rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2 )
+            // InternalSignalDSL.g:4131:2: rule__SignalWatcher__Group__1__Impl rule__SignalWatcher__Group__2
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__SignalWatcher__Group__1__Impl();
 
             state._fsp--;
@@ -14550,22 +15240,22 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__1__Impl"
-    // InternalSignalDSL.g:3956:1: rule__SignalWatcher__Group__1__Impl : ( 'watcher' ) ;
+    // InternalSignalDSL.g:4138:1: rule__SignalWatcher__Group__1__Impl : ( 'watcher' ) ;
     public final void rule__SignalWatcher__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3960:1: ( ( 'watcher' ) )
-            // InternalSignalDSL.g:3961:1: ( 'watcher' )
+            // InternalSignalDSL.g:4142:1: ( ( 'watcher' ) )
+            // InternalSignalDSL.g:4143:1: ( 'watcher' )
             {
-            // InternalSignalDSL.g:3961:1: ( 'watcher' )
-            // InternalSignalDSL.g:3962:2: 'watcher'
+            // InternalSignalDSL.g:4143:1: ( 'watcher' )
+            // InternalSignalDSL.g:4144:2: 'watcher'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getWatcherKeyword_1()); 
             }
-            match(input,62,FOLLOW_2); if (state.failed) return ;
+            match(input,65,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalWatcherAccess().getWatcherKeyword_1()); 
             }
@@ -14591,16 +15281,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__2"
-    // InternalSignalDSL.g:3971:1: rule__SignalWatcher__Group__2 : rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 ;
+    // InternalSignalDSL.g:4153:1: rule__SignalWatcher__Group__2 : rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 ;
     public final void rule__SignalWatcher__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3975:1: ( rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 )
-            // InternalSignalDSL.g:3976:2: rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3
+            // InternalSignalDSL.g:4157:1: ( rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3 )
+            // InternalSignalDSL.g:4158:2: rule__SignalWatcher__Group__2__Impl rule__SignalWatcher__Group__3
             {
-            pushFollow(FOLLOW_12);
+            pushFollow(FOLLOW_11);
             rule__SignalWatcher__Group__2__Impl();
 
             state._fsp--;
@@ -14629,23 +15319,23 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__2__Impl"
-    // InternalSignalDSL.g:3983:1: rule__SignalWatcher__Group__2__Impl : ( ( rule__SignalWatcher__NameAssignment_2 ) ) ;
+    // InternalSignalDSL.g:4165:1: rule__SignalWatcher__Group__2__Impl : ( ( rule__SignalWatcher__NameAssignment_2 ) ) ;
     public final void rule__SignalWatcher__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:3987:1: ( ( ( rule__SignalWatcher__NameAssignment_2 ) ) )
-            // InternalSignalDSL.g:3988:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4169:1: ( ( ( rule__SignalWatcher__NameAssignment_2 ) ) )
+            // InternalSignalDSL.g:4170:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
             {
-            // InternalSignalDSL.g:3988:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
-            // InternalSignalDSL.g:3989:2: ( rule__SignalWatcher__NameAssignment_2 )
+            // InternalSignalDSL.g:4170:1: ( ( rule__SignalWatcher__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4171:2: ( rule__SignalWatcher__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getNameAssignment_2()); 
             }
-            // InternalSignalDSL.g:3990:2: ( rule__SignalWatcher__NameAssignment_2 )
-            // InternalSignalDSL.g:3990:3: rule__SignalWatcher__NameAssignment_2
+            // InternalSignalDSL.g:4172:2: ( rule__SignalWatcher__NameAssignment_2 )
+            // InternalSignalDSL.g:4172:3: rule__SignalWatcher__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__SignalWatcher__NameAssignment_2();
@@ -14680,16 +15370,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__3"
-    // InternalSignalDSL.g:3998:1: rule__SignalWatcher__Group__3 : rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4 ;
+    // InternalSignalDSL.g:4180:1: rule__SignalWatcher__Group__3 : rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4 ;
     public final void rule__SignalWatcher__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4002:1: ( rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4 )
-            // InternalSignalDSL.g:4003:2: rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4
+            // InternalSignalDSL.g:4184:1: ( rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4 )
+            // InternalSignalDSL.g:4185:2: rule__SignalWatcher__Group__3__Impl rule__SignalWatcher__Group__4
             {
-            pushFollow(FOLLOW_13);
+            pushFollow(FOLLOW_12);
             rule__SignalWatcher__Group__3__Impl();
 
             state._fsp--;
@@ -14718,22 +15408,22 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__3__Impl"
-    // InternalSignalDSL.g:4010:1: rule__SignalWatcher__Group__3__Impl : ( 'directory' ) ;
+    // InternalSignalDSL.g:4192:1: rule__SignalWatcher__Group__3__Impl : ( 'directory' ) ;
     public final void rule__SignalWatcher__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4014:1: ( ( 'directory' ) )
-            // InternalSignalDSL.g:4015:1: ( 'directory' )
+            // InternalSignalDSL.g:4196:1: ( ( 'directory' ) )
+            // InternalSignalDSL.g:4197:1: ( 'directory' )
             {
-            // InternalSignalDSL.g:4015:1: ( 'directory' )
-            // InternalSignalDSL.g:4016:2: 'directory'
+            // InternalSignalDSL.g:4197:1: ( 'directory' )
+            // InternalSignalDSL.g:4198:2: 'directory'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3()); 
             }
-            match(input,63,FOLLOW_2); if (state.failed) return ;
+            match(input,66,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalWatcherAccess().getDirectoryKeyword_3()); 
             }
@@ -14759,16 +15449,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__4"
-    // InternalSignalDSL.g:4025:1: rule__SignalWatcher__Group__4 : rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5 ;
+    // InternalSignalDSL.g:4207:1: rule__SignalWatcher__Group__4 : rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5 ;
     public final void rule__SignalWatcher__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4029:1: ( rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5 )
-            // InternalSignalDSL.g:4030:2: rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5
+            // InternalSignalDSL.g:4211:1: ( rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5 )
+            // InternalSignalDSL.g:4212:2: rule__SignalWatcher__Group__4__Impl rule__SignalWatcher__Group__5
             {
-            pushFollow(FOLLOW_14);
+            pushFollow(FOLLOW_7);
             rule__SignalWatcher__Group__4__Impl();
 
             state._fsp--;
@@ -14797,23 +15487,23 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__4__Impl"
-    // InternalSignalDSL.g:4037:1: rule__SignalWatcher__Group__4__Impl : ( ( rule__SignalWatcher__DirectoryAssignment_4 ) ) ;
+    // InternalSignalDSL.g:4219:1: rule__SignalWatcher__Group__4__Impl : ( ( rule__SignalWatcher__DirectoryAssignment_4 ) ) ;
     public final void rule__SignalWatcher__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4041:1: ( ( ( rule__SignalWatcher__DirectoryAssignment_4 ) ) )
-            // InternalSignalDSL.g:4042:1: ( ( rule__SignalWatcher__DirectoryAssignment_4 ) )
+            // InternalSignalDSL.g:4223:1: ( ( ( rule__SignalWatcher__DirectoryAssignment_4 ) ) )
+            // InternalSignalDSL.g:4224:1: ( ( rule__SignalWatcher__DirectoryAssignment_4 ) )
             {
-            // InternalSignalDSL.g:4042:1: ( ( rule__SignalWatcher__DirectoryAssignment_4 ) )
-            // InternalSignalDSL.g:4043:2: ( rule__SignalWatcher__DirectoryAssignment_4 )
+            // InternalSignalDSL.g:4224:1: ( ( rule__SignalWatcher__DirectoryAssignment_4 ) )
+            // InternalSignalDSL.g:4225:2: ( rule__SignalWatcher__DirectoryAssignment_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getDirectoryAssignment_4()); 
             }
-            // InternalSignalDSL.g:4044:2: ( rule__SignalWatcher__DirectoryAssignment_4 )
-            // InternalSignalDSL.g:4044:3: rule__SignalWatcher__DirectoryAssignment_4
+            // InternalSignalDSL.g:4226:2: ( rule__SignalWatcher__DirectoryAssignment_4 )
+            // InternalSignalDSL.g:4226:3: rule__SignalWatcher__DirectoryAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__SignalWatcher__DirectoryAssignment_4();
@@ -14848,16 +15538,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__5"
-    // InternalSignalDSL.g:4052:1: rule__SignalWatcher__Group__5 : rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6 ;
+    // InternalSignalDSL.g:4234:1: rule__SignalWatcher__Group__5 : rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6 ;
     public final void rule__SignalWatcher__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4056:1: ( rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6 )
-            // InternalSignalDSL.g:4057:2: rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6
+            // InternalSignalDSL.g:4238:1: ( rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6 )
+            // InternalSignalDSL.g:4239:2: rule__SignalWatcher__Group__5__Impl rule__SignalWatcher__Group__6
             {
-            pushFollow(FOLLOW_15);
+            pushFollow(FOLLOW_13);
             rule__SignalWatcher__Group__5__Impl();
 
             state._fsp--;
@@ -14886,24 +15576,24 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__5__Impl"
-    // InternalSignalDSL.g:4064:1: rule__SignalWatcher__Group__5__Impl : ( 'for' ) ;
+    // InternalSignalDSL.g:4246:1: rule__SignalWatcher__Group__5__Impl : ( '{' ) ;
     public final void rule__SignalWatcher__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4068:1: ( ( 'for' ) )
-            // InternalSignalDSL.g:4069:1: ( 'for' )
+            // InternalSignalDSL.g:4250:1: ( ( '{' ) )
+            // InternalSignalDSL.g:4251:1: ( '{' )
             {
-            // InternalSignalDSL.g:4069:1: ( 'for' )
-            // InternalSignalDSL.g:4070:2: 'for'
+            // InternalSignalDSL.g:4251:1: ( '{' )
+            // InternalSignalDSL.g:4252:2: '{'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getForKeyword_5()); 
+               before(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getForKeyword_5()); 
+               after(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5()); 
             }
 
             }
@@ -14927,16 +15617,16 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__6"
-    // InternalSignalDSL.g:4079:1: rule__SignalWatcher__Group__6 : rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7 ;
+    // InternalSignalDSL.g:4261:1: rule__SignalWatcher__Group__6 : rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7 ;
     public final void rule__SignalWatcher__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4083:1: ( rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7 )
-            // InternalSignalDSL.g:4084:2: rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7
+            // InternalSignalDSL.g:4265:1: ( rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7 )
+            // InternalSignalDSL.g:4266:2: rule__SignalWatcher__Group__6__Impl rule__SignalWatcher__Group__7
             {
-            pushFollow(FOLLOW_8);
+            pushFollow(FOLLOW_13);
             rule__SignalWatcher__Group__6__Impl();
 
             state._fsp--;
@@ -14965,34 +15655,52 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__6__Impl"
-    // InternalSignalDSL.g:4091:1: rule__SignalWatcher__Group__6__Impl : ( ( rule__SignalWatcher__SignalAssignment_6 ) ) ;
+    // InternalSignalDSL.g:4273:1: rule__SignalWatcher__Group__6__Impl : ( ( rule__SignalWatcher__HandlersAssignment_6 )* ) ;
     public final void rule__SignalWatcher__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4095:1: ( ( ( rule__SignalWatcher__SignalAssignment_6 ) ) )
-            // InternalSignalDSL.g:4096:1: ( ( rule__SignalWatcher__SignalAssignment_6 ) )
+            // InternalSignalDSL.g:4277:1: ( ( ( rule__SignalWatcher__HandlersAssignment_6 )* ) )
+            // InternalSignalDSL.g:4278:1: ( ( rule__SignalWatcher__HandlersAssignment_6 )* )
             {
-            // InternalSignalDSL.g:4096:1: ( ( rule__SignalWatcher__SignalAssignment_6 ) )
-            // InternalSignalDSL.g:4097:2: ( rule__SignalWatcher__SignalAssignment_6 )
+            // InternalSignalDSL.g:4278:1: ( ( rule__SignalWatcher__HandlersAssignment_6 )* )
+            // InternalSignalDSL.g:4279:2: ( rule__SignalWatcher__HandlersAssignment_6 )*
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getSignalAssignment_6()); 
+               before(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); 
             }
-            // InternalSignalDSL.g:4098:2: ( rule__SignalWatcher__SignalAssignment_6 )
-            // InternalSignalDSL.g:4098:3: rule__SignalWatcher__SignalAssignment_6
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalWatcher__SignalAssignment_6();
+            // InternalSignalDSL.g:4280:2: ( rule__SignalWatcher__HandlersAssignment_6 )*
+            loop54:
+            do {
+                int alt54=2;
+                int LA54_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+                if ( (LA54_0==67) ) {
+                    alt54=1;
+                }
 
-            }
+
+                switch (alt54) {
+            	case 1 :
+            	    // InternalSignalDSL.g:4280:3: rule__SignalWatcher__HandlersAssignment_6
+            	    {
+            	    pushFollow(FOLLOW_14);
+            	    rule__SignalWatcher__HandlersAssignment_6();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop54;
+                }
+            } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getSignalAssignment_6()); 
+               after(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_6()); 
             }
 
             }
@@ -15016,22 +15724,17 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__7"
-    // InternalSignalDSL.g:4106:1: rule__SignalWatcher__Group__7 : rule__SignalWatcher__Group__7__Impl rule__SignalWatcher__Group__8 ;
+    // InternalSignalDSL.g:4288:1: rule__SignalWatcher__Group__7 : rule__SignalWatcher__Group__7__Impl ;
     public final void rule__SignalWatcher__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4110:1: ( rule__SignalWatcher__Group__7__Impl rule__SignalWatcher__Group__8 )
-            // InternalSignalDSL.g:4111:2: rule__SignalWatcher__Group__7__Impl rule__SignalWatcher__Group__8
+            // InternalSignalDSL.g:4292:1: ( rule__SignalWatcher__Group__7__Impl )
+            // InternalSignalDSL.g:4293:2: rule__SignalWatcher__Group__7__Impl
             {
-            pushFollow(FOLLOW_16);
-            rule__SignalWatcher__Group__7__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__8();
+            rule__SignalWatcher__Group__7__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15054,24 +15757,24 @@
 
 
     // $ANTLR start "rule__SignalWatcher__Group__7__Impl"
-    // InternalSignalDSL.g:4118:1: rule__SignalWatcher__Group__7__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:4299:1: rule__SignalWatcher__Group__7__Impl : ( '}' ) ;
     public final void rule__SignalWatcher__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4122:1: ( ( '{' ) )
-            // InternalSignalDSL.g:4123:1: ( '{' )
+            // InternalSignalDSL.g:4303:1: ( ( '}' ) )
+            // InternalSignalDSL.g:4304:1: ( '}' )
             {
-            // InternalSignalDSL.g:4123:1: ( '{' )
-            // InternalSignalDSL.g:4124:2: '{'
+            // InternalSignalDSL.g:4304:1: ( '}' )
+            // InternalSignalDSL.g:4305:2: '}'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_7()); 
+               before(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,64,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_7()); 
+               after(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7()); 
             }
 
             }
@@ -15094,198 +15797,17 @@
     // $ANTLR end "rule__SignalWatcher__Group__7__Impl"
 
 
-    // $ANTLR start "rule__SignalWatcher__Group__8"
-    // InternalSignalDSL.g:4133:1: rule__SignalWatcher__Group__8 : rule__SignalWatcher__Group__8__Impl rule__SignalWatcher__Group__9 ;
-    public final void rule__SignalWatcher__Group__8() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4137:1: ( rule__SignalWatcher__Group__8__Impl rule__SignalWatcher__Group__9 )
-            // InternalSignalDSL.g:4138:2: rule__SignalWatcher__Group__8__Impl rule__SignalWatcher__Group__9
-            {
-            pushFollow(FOLLOW_16);
-            rule__SignalWatcher__Group__8__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-            pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__9();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__8"
-
-
-    // $ANTLR start "rule__SignalWatcher__Group__8__Impl"
-    // InternalSignalDSL.g:4145:1: rule__SignalWatcher__Group__8__Impl : ( ( rule__SignalWatcher__HandlersAssignment_8 )* ) ;
-    public final void rule__SignalWatcher__Group__8__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4149:1: ( ( ( rule__SignalWatcher__HandlersAssignment_8 )* ) )
-            // InternalSignalDSL.g:4150:1: ( ( rule__SignalWatcher__HandlersAssignment_8 )* )
-            {
-            // InternalSignalDSL.g:4150:1: ( ( rule__SignalWatcher__HandlersAssignment_8 )* )
-            // InternalSignalDSL.g:4151:2: ( rule__SignalWatcher__HandlersAssignment_8 )*
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_8()); 
-            }
-            // InternalSignalDSL.g:4152:2: ( rule__SignalWatcher__HandlersAssignment_8 )*
-            loop55:
-            do {
-                int alt55=2;
-                int LA55_0 = input.LA(1);
-
-                if ( (LA55_0==65) ) {
-                    alt55=1;
-                }
-
-
-                switch (alt55) {
-            	case 1 :
-            	    // InternalSignalDSL.g:4152:3: rule__SignalWatcher__HandlersAssignment_8
-            	    {
-            	    pushFollow(FOLLOW_17);
-            	    rule__SignalWatcher__HandlersAssignment_8();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop55;
-                }
-            } while (true);
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getHandlersAssignment_8()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__8__Impl"
-
-
-    // $ANTLR start "rule__SignalWatcher__Group__9"
-    // InternalSignalDSL.g:4160:1: rule__SignalWatcher__Group__9 : rule__SignalWatcher__Group__9__Impl ;
-    public final void rule__SignalWatcher__Group__9() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4164:1: ( rule__SignalWatcher__Group__9__Impl )
-            // InternalSignalDSL.g:4165:2: rule__SignalWatcher__Group__9__Impl
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalWatcher__Group__9__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__9"
-
-
-    // $ANTLR start "rule__SignalWatcher__Group__9__Impl"
-    // InternalSignalDSL.g:4171:1: rule__SignalWatcher__Group__9__Impl : ( '}' ) ;
-    public final void rule__SignalWatcher__Group__9__Impl() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4175:1: ( ( '}' ) )
-            // InternalSignalDSL.g:4176:1: ( '}' )
-            {
-            // InternalSignalDSL.g:4176:1: ( '}' )
-            // InternalSignalDSL.g:4177:2: '}'
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_9()); 
-            }
-            match(input,61,FOLLOW_2); if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_9()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__Group__9__Impl"
-
-
     // $ANTLR start "rule__SignalHandler__Group__0"
-    // InternalSignalDSL.g:4187:1: rule__SignalHandler__Group__0 : rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1 ;
+    // InternalSignalDSL.g:4315:1: rule__SignalHandler__Group__0 : rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1 ;
     public final void rule__SignalHandler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4191:1: ( rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1 )
-            // InternalSignalDSL.g:4192:2: rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1
+            // InternalSignalDSL.g:4319:1: ( rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1 )
+            // InternalSignalDSL.g:4320:2: rule__SignalHandler__Group__0__Impl rule__SignalHandler__Group__1
             {
-            pushFollow(FOLLOW_18);
+            pushFollow(FOLLOW_15);
             rule__SignalHandler__Group__0__Impl();
 
             state._fsp--;
@@ -15314,23 +15836,23 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__0__Impl"
-    // InternalSignalDSL.g:4199:1: rule__SignalHandler__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:4327:1: rule__SignalHandler__Group__0__Impl : ( () ) ;
     public final void rule__SignalHandler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4203:1: ( ( () ) )
-            // InternalSignalDSL.g:4204:1: ( () )
+            // InternalSignalDSL.g:4331:1: ( ( () ) )
+            // InternalSignalDSL.g:4332:1: ( () )
             {
-            // InternalSignalDSL.g:4204:1: ( () )
-            // InternalSignalDSL.g:4205:2: ()
+            // InternalSignalDSL.g:4332:1: ( () )
+            // InternalSignalDSL.g:4333:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalHandlerAccess().getSignalHandlerAction_0()); 
             }
-            // InternalSignalDSL.g:4206:2: ()
-            // InternalSignalDSL.g:4206:3: 
+            // InternalSignalDSL.g:4334:2: ()
+            // InternalSignalDSL.g:4334:3: 
             {
             }
 
@@ -15355,16 +15877,16 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__1"
-    // InternalSignalDSL.g:4214:1: rule__SignalHandler__Group__1 : rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2 ;
+    // InternalSignalDSL.g:4342:1: rule__SignalHandler__Group__1 : rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2 ;
     public final void rule__SignalHandler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4218:1: ( rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2 )
-            // InternalSignalDSL.g:4219:2: rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2
+            // InternalSignalDSL.g:4346:1: ( rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2 )
+            // InternalSignalDSL.g:4347:2: rule__SignalHandler__Group__1__Impl rule__SignalHandler__Group__2
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__SignalHandler__Group__1__Impl();
 
             state._fsp--;
@@ -15393,22 +15915,22 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__1__Impl"
-    // InternalSignalDSL.g:4226:1: rule__SignalHandler__Group__1__Impl : ( 'handler' ) ;
+    // InternalSignalDSL.g:4354:1: rule__SignalHandler__Group__1__Impl : ( 'handler' ) ;
     public final void rule__SignalHandler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4230:1: ( ( 'handler' ) )
-            // InternalSignalDSL.g:4231:1: ( 'handler' )
+            // InternalSignalDSL.g:4358:1: ( ( 'handler' ) )
+            // InternalSignalDSL.g:4359:1: ( 'handler' )
             {
-            // InternalSignalDSL.g:4231:1: ( 'handler' )
-            // InternalSignalDSL.g:4232:2: 'handler'
+            // InternalSignalDSL.g:4359:1: ( 'handler' )
+            // InternalSignalDSL.g:4360:2: 'handler'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1()); 
             }
-            match(input,65,FOLLOW_2); if (state.failed) return ;
+            match(input,67,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1()); 
             }
@@ -15434,16 +15956,16 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__2"
-    // InternalSignalDSL.g:4241:1: rule__SignalHandler__Group__2 : rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3 ;
+    // InternalSignalDSL.g:4369:1: rule__SignalHandler__Group__2 : rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3 ;
     public final void rule__SignalHandler__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4245:1: ( rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3 )
-            // InternalSignalDSL.g:4246:2: rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3
+            // InternalSignalDSL.g:4373:1: ( rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3 )
+            // InternalSignalDSL.g:4374:2: rule__SignalHandler__Group__2__Impl rule__SignalHandler__Group__3
             {
-            pushFollow(FOLLOW_19);
+            pushFollow(FOLLOW_16);
             rule__SignalHandler__Group__2__Impl();
 
             state._fsp--;
@@ -15472,23 +15994,23 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__2__Impl"
-    // InternalSignalDSL.g:4253:1: rule__SignalHandler__Group__2__Impl : ( ( rule__SignalHandler__NameAssignment_2 ) ) ;
+    // InternalSignalDSL.g:4381:1: rule__SignalHandler__Group__2__Impl : ( ( rule__SignalHandler__NameAssignment_2 ) ) ;
     public final void rule__SignalHandler__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4257:1: ( ( ( rule__SignalHandler__NameAssignment_2 ) ) )
-            // InternalSignalDSL.g:4258:1: ( ( rule__SignalHandler__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4385:1: ( ( ( rule__SignalHandler__NameAssignment_2 ) ) )
+            // InternalSignalDSL.g:4386:1: ( ( rule__SignalHandler__NameAssignment_2 ) )
             {
-            // InternalSignalDSL.g:4258:1: ( ( rule__SignalHandler__NameAssignment_2 ) )
-            // InternalSignalDSL.g:4259:2: ( rule__SignalHandler__NameAssignment_2 )
+            // InternalSignalDSL.g:4386:1: ( ( rule__SignalHandler__NameAssignment_2 ) )
+            // InternalSignalDSL.g:4387:2: ( rule__SignalHandler__NameAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalHandlerAccess().getNameAssignment_2()); 
             }
-            // InternalSignalDSL.g:4260:2: ( rule__SignalHandler__NameAssignment_2 )
-            // InternalSignalDSL.g:4260:3: rule__SignalHandler__NameAssignment_2
+            // InternalSignalDSL.g:4388:2: ( rule__SignalHandler__NameAssignment_2 )
+            // InternalSignalDSL.g:4388:3: rule__SignalHandler__NameAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__SignalHandler__NameAssignment_2();
@@ -15523,16 +16045,16 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__3"
-    // InternalSignalDSL.g:4268:1: rule__SignalHandler__Group__3 : rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4 ;
+    // InternalSignalDSL.g:4396:1: rule__SignalHandler__Group__3 : rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4 ;
     public final void rule__SignalHandler__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4272:1: ( rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4 )
-            // InternalSignalDSL.g:4273:2: rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4
+            // InternalSignalDSL.g:4400:1: ( rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4 )
+            // InternalSignalDSL.g:4401:2: rule__SignalHandler__Group__3__Impl rule__SignalHandler__Group__4
             {
-            pushFollow(FOLLOW_20);
+            pushFollow(FOLLOW_16);
             rule__SignalHandler__Group__3__Impl();
 
             state._fsp--;
@@ -15561,34 +16083,52 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__3__Impl"
-    // InternalSignalDSL.g:4280:1: rule__SignalHandler__Group__3__Impl : ( ( rule__SignalHandler__ActionTypeAssignment_3 ) ) ;
+    // InternalSignalDSL.g:4408:1: rule__SignalHandler__Group__3__Impl : ( ( rule__SignalHandler__InterchangesAssignment_3 )* ) ;
     public final void rule__SignalHandler__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4284:1: ( ( ( rule__SignalHandler__ActionTypeAssignment_3 ) ) )
-            // InternalSignalDSL.g:4285:1: ( ( rule__SignalHandler__ActionTypeAssignment_3 ) )
+            // InternalSignalDSL.g:4412:1: ( ( ( rule__SignalHandler__InterchangesAssignment_3 )* ) )
+            // InternalSignalDSL.g:4413:1: ( ( rule__SignalHandler__InterchangesAssignment_3 )* )
             {
-            // InternalSignalDSL.g:4285:1: ( ( rule__SignalHandler__ActionTypeAssignment_3 ) )
-            // InternalSignalDSL.g:4286:2: ( rule__SignalHandler__ActionTypeAssignment_3 )
+            // InternalSignalDSL.g:4413:1: ( ( rule__SignalHandler__InterchangesAssignment_3 )* )
+            // InternalSignalDSL.g:4414:2: ( rule__SignalHandler__InterchangesAssignment_3 )*
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getActionTypeAssignment_3()); 
+               before(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); 
             }
-            // InternalSignalDSL.g:4287:2: ( rule__SignalHandler__ActionTypeAssignment_3 )
-            // InternalSignalDSL.g:4287:3: rule__SignalHandler__ActionTypeAssignment_3
-            {
-            pushFollow(FOLLOW_2);
-            rule__SignalHandler__ActionTypeAssignment_3();
+            // InternalSignalDSL.g:4415:2: ( rule__SignalHandler__InterchangesAssignment_3 )*
+            loop55:
+            do {
+                int alt55=2;
+                int LA55_0 = input.LA(1);
 
-            state._fsp--;
-            if (state.failed) return ;
+                if ( ((LA55_0>=51 && LA55_0<=52)) ) {
+                    alt55=1;
+                }
 
-            }
+
+                switch (alt55) {
+            	case 1 :
+            	    // InternalSignalDSL.g:4415:3: rule__SignalHandler__InterchangesAssignment_3
+            	    {
+            	    pushFollow(FOLLOW_17);
+            	    rule__SignalHandler__InterchangesAssignment_3();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop55;
+                }
+            } while (true);
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getActionTypeAssignment_3()); 
+               after(grammarAccess.getSignalHandlerAccess().getInterchangesAssignment_3()); 
             }
 
             }
@@ -15612,16 +16152,16 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__4"
-    // InternalSignalDSL.g:4295:1: rule__SignalHandler__Group__4 : rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5 ;
+    // InternalSignalDSL.g:4423:1: rule__SignalHandler__Group__4 : rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5 ;
     public final void rule__SignalHandler__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4299:1: ( rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5 )
-            // InternalSignalDSL.g:4300:2: rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5
+            // InternalSignalDSL.g:4427:1: ( rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5 )
+            // InternalSignalDSL.g:4428:2: rule__SignalHandler__Group__4__Impl rule__SignalHandler__Group__5
             {
-            pushFollow(FOLLOW_21);
+            pushFollow(FOLLOW_18);
             rule__SignalHandler__Group__4__Impl();
 
             state._fsp--;
@@ -15650,26 +16190,26 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__4__Impl"
-    // InternalSignalDSL.g:4307:1: rule__SignalHandler__Group__4__Impl : ( ( rule__SignalHandler__DataAssignment_4 ) ) ;
+    // InternalSignalDSL.g:4435:1: rule__SignalHandler__Group__4__Impl : ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) ) ;
     public final void rule__SignalHandler__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4311:1: ( ( ( rule__SignalHandler__DataAssignment_4 ) ) )
-            // InternalSignalDSL.g:4312:1: ( ( rule__SignalHandler__DataAssignment_4 ) )
+            // InternalSignalDSL.g:4439:1: ( ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) ) )
+            // InternalSignalDSL.g:4440:1: ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) )
             {
-            // InternalSignalDSL.g:4312:1: ( ( rule__SignalHandler__DataAssignment_4 ) )
-            // InternalSignalDSL.g:4313:2: ( rule__SignalHandler__DataAssignment_4 )
+            // InternalSignalDSL.g:4440:1: ( ( rule__SignalHandler__ExecutiontypeAssignment_4 ) )
+            // InternalSignalDSL.g:4441:2: ( rule__SignalHandler__ExecutiontypeAssignment_4 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getDataAssignment_4()); 
+               before(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); 
             }
-            // InternalSignalDSL.g:4314:2: ( rule__SignalHandler__DataAssignment_4 )
-            // InternalSignalDSL.g:4314:3: rule__SignalHandler__DataAssignment_4
+            // InternalSignalDSL.g:4442:2: ( rule__SignalHandler__ExecutiontypeAssignment_4 )
+            // InternalSignalDSL.g:4442:3: rule__SignalHandler__ExecutiontypeAssignment_4
             {
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__DataAssignment_4();
+            rule__SignalHandler__ExecutiontypeAssignment_4();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15677,7 +16217,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getDataAssignment_4()); 
+               after(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_4()); 
             }
 
             }
@@ -15701,22 +16241,17 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__5"
-    // InternalSignalDSL.g:4322:1: rule__SignalHandler__Group__5 : rule__SignalHandler__Group__5__Impl rule__SignalHandler__Group__6 ;
+    // InternalSignalDSL.g:4450:1: rule__SignalHandler__Group__5 : rule__SignalHandler__Group__5__Impl ;
     public final void rule__SignalHandler__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4326:1: ( rule__SignalHandler__Group__5__Impl rule__SignalHandler__Group__6 )
-            // InternalSignalDSL.g:4327:2: rule__SignalHandler__Group__5__Impl rule__SignalHandler__Group__6
+            // InternalSignalDSL.g:4454:1: ( rule__SignalHandler__Group__5__Impl )
+            // InternalSignalDSL.g:4455:2: rule__SignalHandler__Group__5__Impl
             {
-            pushFollow(FOLLOW_21);
-            rule__SignalHandler__Group__5__Impl();
-
-            state._fsp--;
-            if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__6();
+            rule__SignalHandler__Group__5__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15739,45 +16274,34 @@
 
 
     // $ANTLR start "rule__SignalHandler__Group__5__Impl"
-    // InternalSignalDSL.g:4334:1: rule__SignalHandler__Group__5__Impl : ( ( rule__SignalHandler__ExecutiontypeAssignment_5 )? ) ;
+    // InternalSignalDSL.g:4461:1: rule__SignalHandler__Group__5__Impl : ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) ) ;
     public final void rule__SignalHandler__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4338:1: ( ( ( rule__SignalHandler__ExecutiontypeAssignment_5 )? ) )
-            // InternalSignalDSL.g:4339:1: ( ( rule__SignalHandler__ExecutiontypeAssignment_5 )? )
+            // InternalSignalDSL.g:4465:1: ( ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) ) )
+            // InternalSignalDSL.g:4466:1: ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) )
             {
-            // InternalSignalDSL.g:4339:1: ( ( rule__SignalHandler__ExecutiontypeAssignment_5 )? )
-            // InternalSignalDSL.g:4340:2: ( rule__SignalHandler__ExecutiontypeAssignment_5 )?
+            // InternalSignalDSL.g:4466:1: ( ( rule__SignalHandler__TriggerpolicyAssignment_5 ) )
+            // InternalSignalDSL.g:4467:2: ( rule__SignalHandler__TriggerpolicyAssignment_5 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_5()); 
+               before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); 
             }
-            // InternalSignalDSL.g:4341:2: ( rule__SignalHandler__ExecutiontypeAssignment_5 )?
-            int alt56=2;
-            int LA56_0 = input.LA(1);
+            // InternalSignalDSL.g:4468:2: ( rule__SignalHandler__TriggerpolicyAssignment_5 )
+            // InternalSignalDSL.g:4468:3: rule__SignalHandler__TriggerpolicyAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalHandler__TriggerpolicyAssignment_5();
 
-            if ( ((LA56_0>=57 && LA56_0<=58)) ) {
-                alt56=1;
-            }
-            switch (alt56) {
-                case 1 :
-                    // InternalSignalDSL.g:4341:3: rule__SignalHandler__ExecutiontypeAssignment_5
-                    {
-                    pushFollow(FOLLOW_2);
-                    rule__SignalHandler__ExecutiontypeAssignment_5();
-
-                    state._fsp--;
-                    if (state.failed) return ;
-
-                    }
-                    break;
+            state._fsp--;
+            if (state.failed) return ;
 
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getExecutiontypeAssignment_5()); 
+               after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyAssignment_5()); 
             }
 
             }
@@ -15800,23 +16324,23 @@
     // $ANTLR end "rule__SignalHandler__Group__5__Impl"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__6"
-    // InternalSignalDSL.g:4349:1: rule__SignalHandler__Group__6 : rule__SignalHandler__Group__6__Impl rule__SignalHandler__Group__7 ;
-    public final void rule__SignalHandler__Group__6() throws RecognitionException {
+    // $ANTLR start "rule__TriggerFile__Group__0"
+    // InternalSignalDSL.g:4477:1: rule__TriggerFile__Group__0 : rule__TriggerFile__Group__0__Impl rule__TriggerFile__Group__1 ;
+    public final void rule__TriggerFile__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4353:1: ( rule__SignalHandler__Group__6__Impl rule__SignalHandler__Group__7 )
-            // InternalSignalDSL.g:4354:2: rule__SignalHandler__Group__6__Impl rule__SignalHandler__Group__7
+            // InternalSignalDSL.g:4481:1: ( rule__TriggerFile__Group__0__Impl rule__TriggerFile__Group__1 )
+            // InternalSignalDSL.g:4482:2: rule__TriggerFile__Group__0__Impl rule__TriggerFile__Group__1
             {
-            pushFollow(FOLLOW_13);
-            rule__SignalHandler__Group__6__Impl();
+            pushFollow(FOLLOW_12);
+            rule__TriggerFile__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__7();
+            rule__TriggerFile__Group__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15835,28 +16359,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__6"
+    // $ANTLR end "rule__TriggerFile__Group__0"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__6__Impl"
-    // InternalSignalDSL.g:4361:1: rule__SignalHandler__Group__6__Impl : ( 'forFileMask' ) ;
-    public final void rule__SignalHandler__Group__6__Impl() throws RecognitionException {
+    // $ANTLR start "rule__TriggerFile__Group__0__Impl"
+    // InternalSignalDSL.g:4489:1: rule__TriggerFile__Group__0__Impl : ( 'forFileMask' ) ;
+    public final void rule__TriggerFile__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4365:1: ( ( 'forFileMask' ) )
-            // InternalSignalDSL.g:4366:1: ( 'forFileMask' )
+            // InternalSignalDSL.g:4493:1: ( ( 'forFileMask' ) )
+            // InternalSignalDSL.g:4494:1: ( 'forFileMask' )
             {
-            // InternalSignalDSL.g:4366:1: ( 'forFileMask' )
-            // InternalSignalDSL.g:4367:2: 'forFileMask'
+            // InternalSignalDSL.g:4494:1: ( 'forFileMask' )
+            // InternalSignalDSL.g:4495:2: 'forFileMask'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getForFileMaskKeyword_6()); 
+               before(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); 
             }
-            match(input,66,FOLLOW_2); if (state.failed) return ;
+            match(input,68,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getForFileMaskKeyword_6()); 
+               after(grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0()); 
             }
 
             }
@@ -15876,21 +16400,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__6__Impl"
+    // $ANTLR end "rule__TriggerFile__Group__0__Impl"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__7"
-    // InternalSignalDSL.g:4376:1: rule__SignalHandler__Group__7 : rule__SignalHandler__Group__7__Impl ;
-    public final void rule__SignalHandler__Group__7() throws RecognitionException {
+    // $ANTLR start "rule__TriggerFile__Group__1"
+    // InternalSignalDSL.g:4504:1: rule__TriggerFile__Group__1 : rule__TriggerFile__Group__1__Impl ;
+    public final void rule__TriggerFile__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4380:1: ( rule__SignalHandler__Group__7__Impl )
-            // InternalSignalDSL.g:4381:2: rule__SignalHandler__Group__7__Impl
+            // InternalSignalDSL.g:4508:1: ( rule__TriggerFile__Group__1__Impl )
+            // InternalSignalDSL.g:4509:2: rule__TriggerFile__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__Group__7__Impl();
+            rule__TriggerFile__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15909,30 +16433,30 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__7"
+    // $ANTLR end "rule__TriggerFile__Group__1"
 
 
-    // $ANTLR start "rule__SignalHandler__Group__7__Impl"
-    // InternalSignalDSL.g:4387:1: rule__SignalHandler__Group__7__Impl : ( ( rule__SignalHandler__FilemaskAssignment_7 ) ) ;
-    public final void rule__SignalHandler__Group__7__Impl() throws RecognitionException {
+    // $ANTLR start "rule__TriggerFile__Group__1__Impl"
+    // InternalSignalDSL.g:4515:1: rule__TriggerFile__Group__1__Impl : ( ( rule__TriggerFile__FilemaskAssignment_1 ) ) ;
+    public final void rule__TriggerFile__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4391:1: ( ( ( rule__SignalHandler__FilemaskAssignment_7 ) ) )
-            // InternalSignalDSL.g:4392:1: ( ( rule__SignalHandler__FilemaskAssignment_7 ) )
+            // InternalSignalDSL.g:4519:1: ( ( ( rule__TriggerFile__FilemaskAssignment_1 ) ) )
+            // InternalSignalDSL.g:4520:1: ( ( rule__TriggerFile__FilemaskAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4392:1: ( ( rule__SignalHandler__FilemaskAssignment_7 ) )
-            // InternalSignalDSL.g:4393:2: ( rule__SignalHandler__FilemaskAssignment_7 )
+            // InternalSignalDSL.g:4520:1: ( ( rule__TriggerFile__FilemaskAssignment_1 ) )
+            // InternalSignalDSL.g:4521:2: ( rule__TriggerFile__FilemaskAssignment_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getFilemaskAssignment_7()); 
+               before(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); 
             }
-            // InternalSignalDSL.g:4394:2: ( rule__SignalHandler__FilemaskAssignment_7 )
-            // InternalSignalDSL.g:4394:3: rule__SignalHandler__FilemaskAssignment_7
+            // InternalSignalDSL.g:4522:2: ( rule__TriggerFile__FilemaskAssignment_1 )
+            // InternalSignalDSL.g:4522:3: rule__TriggerFile__FilemaskAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__SignalHandler__FilemaskAssignment_7();
+            rule__TriggerFile__FilemaskAssignment_1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15940,7 +16464,7 @@
             }
 
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getFilemaskAssignment_7()); 
+               after(grammarAccess.getTriggerFileAccess().getFilemaskAssignment_1()); 
             }
 
             }
@@ -15960,26 +16484,352 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__Group__7__Impl"
+    // $ANTLR end "rule__TriggerFile__Group__1__Impl"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__0"
-    // InternalSignalDSL.g:4403:1: rule__ListTransfer__Group__0 : rule__ListTransfer__Group__0__Impl rule__ListTransfer__Group__1 ;
-    public final void rule__ListTransfer__Group__0() throws RecognitionException {
+    // $ANTLR start "rule__SignalScheduler__Group__0"
+    // InternalSignalDSL.g:4531:1: rule__SignalScheduler__Group__0 : rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1 ;
+    public final void rule__SignalScheduler__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4407:1: ( rule__ListTransfer__Group__0__Impl rule__ListTransfer__Group__1 )
-            // InternalSignalDSL.g:4408:2: rule__ListTransfer__Group__0__Impl rule__ListTransfer__Group__1
+            // InternalSignalDSL.g:4535:1: ( rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1 )
+            // InternalSignalDSL.g:4536:2: rule__SignalScheduler__Group__0__Impl rule__SignalScheduler__Group__1
+            {
+            pushFollow(FOLLOW_19);
+            rule__SignalScheduler__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__0"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__0__Impl"
+    // InternalSignalDSL.g:4543:1: rule__SignalScheduler__Group__0__Impl : ( 'scheduleFor' ) ;
+    public final void rule__SignalScheduler__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4547:1: ( ( 'scheduleFor' ) )
+            // InternalSignalDSL.g:4548:1: ( 'scheduleFor' )
+            {
+            // InternalSignalDSL.g:4548:1: ( 'scheduleFor' )
+            // InternalSignalDSL.g:4549:2: 'scheduleFor'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); 
+            }
+            match(input,69,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__1"
+    // InternalSignalDSL.g:4558:1: rule__SignalScheduler__Group__1 : rule__SignalScheduler__Group__1__Impl ;
+    public final void rule__SignalScheduler__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4562:1: ( rule__SignalScheduler__Group__1__Impl )
+            // InternalSignalDSL.g:4563:2: rule__SignalScheduler__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__1"
+
+
+    // $ANTLR start "rule__SignalScheduler__Group__1__Impl"
+    // InternalSignalDSL.g:4569:1: rule__SignalScheduler__Group__1__Impl : ( ( rule__SignalScheduler__SchedulerAssignment_1 ) ) ;
+    public final void rule__SignalScheduler__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4573:1: ( ( ( rule__SignalScheduler__SchedulerAssignment_1 ) ) )
+            // InternalSignalDSL.g:4574:1: ( ( rule__SignalScheduler__SchedulerAssignment_1 ) )
+            {
+            // InternalSignalDSL.g:4574:1: ( ( rule__SignalScheduler__SchedulerAssignment_1 ) )
+            // InternalSignalDSL.g:4575:2: ( rule__SignalScheduler__SchedulerAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); 
+            }
+            // InternalSignalDSL.g:4576:2: ( rule__SignalScheduler__SchedulerAssignment_1 )
+            // InternalSignalDSL.g:4576:3: rule__SignalScheduler__SchedulerAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignalScheduler__SchedulerAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalSchedulerAccess().getSchedulerAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalScheduler__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CronScheduler__Group__0"
+    // InternalSignalDSL.g:4585:1: rule__CronScheduler__Group__0 : rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1 ;
+    public final void rule__CronScheduler__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4589:1: ( rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1 )
+            // InternalSignalDSL.g:4590:2: rule__CronScheduler__Group__0__Impl rule__CronScheduler__Group__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__CronScheduler__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CronScheduler__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CronScheduler__Group__0"
+
+
+    // $ANTLR start "rule__CronScheduler__Group__0__Impl"
+    // InternalSignalDSL.g:4597:1: rule__CronScheduler__Group__0__Impl : ( 'cron' ) ;
+    public final void rule__CronScheduler__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4601:1: ( ( 'cron' ) )
+            // InternalSignalDSL.g:4602:1: ( 'cron' )
+            {
+            // InternalSignalDSL.g:4602:1: ( 'cron' )
+            // InternalSignalDSL.g:4603:2: 'cron'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCronSchedulerAccess().getCronKeyword_0()); 
+            }
+            match(input,70,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCronSchedulerAccess().getCronKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CronScheduler__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CronScheduler__Group__1"
+    // InternalSignalDSL.g:4612:1: rule__CronScheduler__Group__1 : rule__CronScheduler__Group__1__Impl ;
+    public final void rule__CronScheduler__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4616:1: ( rule__CronScheduler__Group__1__Impl )
+            // InternalSignalDSL.g:4617:2: rule__CronScheduler__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CronScheduler__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CronScheduler__Group__1"
+
+
+    // $ANTLR start "rule__CronScheduler__Group__1__Impl"
+    // InternalSignalDSL.g:4623:1: rule__CronScheduler__Group__1__Impl : ( ( rule__CronScheduler__ExpressionAssignment_1 ) ) ;
+    public final void rule__CronScheduler__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4627:1: ( ( ( rule__CronScheduler__ExpressionAssignment_1 ) ) )
+            // InternalSignalDSL.g:4628:1: ( ( rule__CronScheduler__ExpressionAssignment_1 ) )
+            {
+            // InternalSignalDSL.g:4628:1: ( ( rule__CronScheduler__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:4629:2: ( rule__CronScheduler__ExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1()); 
+            }
+            // InternalSignalDSL.g:4630:2: ( rule__CronScheduler__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:4630:3: rule__CronScheduler__ExpressionAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CronScheduler__ExpressionAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCronSchedulerAccess().getExpressionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CronScheduler__Group__1__Impl"
+
+
+    // $ANTLR start "rule__HourlyScheduler__Group__0"
+    // InternalSignalDSL.g:4639:1: rule__HourlyScheduler__Group__0 : rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1 ;
+    public final void rule__HourlyScheduler__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4643:1: ( rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1 )
+            // InternalSignalDSL.g:4644:2: rule__HourlyScheduler__Group__0__Impl rule__HourlyScheduler__Group__1
             {
             pushFollow(FOLLOW_20);
-            rule__ListTransfer__Group__0__Impl();
+            rule__HourlyScheduler__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__ListTransfer__Group__1();
+            rule__HourlyScheduler__Group__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -15998,32 +16848,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__0"
+    // $ANTLR end "rule__HourlyScheduler__Group__0"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__0__Impl"
-    // InternalSignalDSL.g:4415:1: rule__ListTransfer__Group__0__Impl : ( () ) ;
-    public final void rule__ListTransfer__Group__0__Impl() throws RecognitionException {
+    // $ANTLR start "rule__HourlyScheduler__Group__0__Impl"
+    // InternalSignalDSL.g:4651:1: rule__HourlyScheduler__Group__0__Impl : ( 'hourlyAt' ) ;
+    public final void rule__HourlyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4419:1: ( ( () ) )
-            // InternalSignalDSL.g:4420:1: ( () )
+            // InternalSignalDSL.g:4655:1: ( ( 'hourlyAt' ) )
+            // InternalSignalDSL.g:4656:1: ( 'hourlyAt' )
             {
-            // InternalSignalDSL.g:4420:1: ( () )
-            // InternalSignalDSL.g:4421:2: ()
+            // InternalSignalDSL.g:4656:1: ( 'hourlyAt' )
+            // InternalSignalDSL.g:4657:2: 'hourlyAt'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getListTransferAction_0()); 
+               before(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); 
             }
-            // InternalSignalDSL.g:4422:2: ()
-            // InternalSignalDSL.g:4422:3: 
-            {
-            }
-
+            match(input,71,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getListTransferAction_0()); 
+               after(grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0()); 
             }
 
             }
@@ -16032,6 +16878,10 @@
             }
 
         }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
         finally {
 
             	restoreStackSize(stackSize);
@@ -16039,26 +16889,110 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__0__Impl"
+    // $ANTLR end "rule__HourlyScheduler__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__1"
-    // InternalSignalDSL.g:4430:1: rule__ListTransfer__Group__1 : rule__ListTransfer__Group__1__Impl rule__ListTransfer__Group__2 ;
-    public final void rule__ListTransfer__Group__1() throws RecognitionException {
+    // $ANTLR start "rule__HourlyScheduler__Group__1"
+    // InternalSignalDSL.g:4666:1: rule__HourlyScheduler__Group__1 : rule__HourlyScheduler__Group__1__Impl ;
+    public final void rule__HourlyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4434:1: ( rule__ListTransfer__Group__1__Impl rule__ListTransfer__Group__2 )
-            // InternalSignalDSL.g:4435:2: rule__ListTransfer__Group__1__Impl rule__ListTransfer__Group__2
+            // InternalSignalDSL.g:4670:1: ( rule__HourlyScheduler__Group__1__Impl )
+            // InternalSignalDSL.g:4671:2: rule__HourlyScheduler__Group__1__Impl
             {
-            pushFollow(FOLLOW_8);
-            rule__ListTransfer__Group__1__Impl();
+            pushFollow(FOLLOW_2);
+            rule__HourlyScheduler__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HourlyScheduler__Group__1"
+
+
+    // $ANTLR start "rule__HourlyScheduler__Group__1__Impl"
+    // InternalSignalDSL.g:4677:1: rule__HourlyScheduler__Group__1__Impl : ( ( rule__HourlyScheduler__MinuteAssignment_1 ) ) ;
+    public final void rule__HourlyScheduler__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4681:1: ( ( ( rule__HourlyScheduler__MinuteAssignment_1 ) ) )
+            // InternalSignalDSL.g:4682:1: ( ( rule__HourlyScheduler__MinuteAssignment_1 ) )
+            {
+            // InternalSignalDSL.g:4682:1: ( ( rule__HourlyScheduler__MinuteAssignment_1 ) )
+            // InternalSignalDSL.g:4683:2: ( rule__HourlyScheduler__MinuteAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1()); 
+            }
+            // InternalSignalDSL.g:4684:2: ( rule__HourlyScheduler__MinuteAssignment_1 )
+            // InternalSignalDSL.g:4684:3: rule__HourlyScheduler__MinuteAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__HourlyScheduler__MinuteAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getHourlySchedulerAccess().getMinuteAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HourlyScheduler__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DailyScheduler__Group__0"
+    // InternalSignalDSL.g:4693:1: rule__DailyScheduler__Group__0 : rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1 ;
+    public final void rule__DailyScheduler__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4697:1: ( rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1 )
+            // InternalSignalDSL.g:4698:2: rule__DailyScheduler__Group__0__Impl rule__DailyScheduler__Group__1
+            {
+            pushFollow(FOLLOW_20);
+            rule__DailyScheduler__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__ListTransfer__Group__2();
+            rule__DailyScheduler__Group__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -16077,28 +17011,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__1"
+    // $ANTLR end "rule__DailyScheduler__Group__0"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__1__Impl"
-    // InternalSignalDSL.g:4442:1: rule__ListTransfer__Group__1__Impl : ( 'DataTransfer' ) ;
-    public final void rule__ListTransfer__Group__1__Impl() throws RecognitionException {
+    // $ANTLR start "rule__DailyScheduler__Group__0__Impl"
+    // InternalSignalDSL.g:4705:1: rule__DailyScheduler__Group__0__Impl : ( 'dailyAt' ) ;
+    public final void rule__DailyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4446:1: ( ( 'DataTransfer' ) )
-            // InternalSignalDSL.g:4447:1: ( 'DataTransfer' )
+            // InternalSignalDSL.g:4709:1: ( ( 'dailyAt' ) )
+            // InternalSignalDSL.g:4710:1: ( 'dailyAt' )
             {
-            // InternalSignalDSL.g:4447:1: ( 'DataTransfer' )
-            // InternalSignalDSL.g:4448:2: 'DataTransfer'
+            // InternalSignalDSL.g:4710:1: ( 'dailyAt' )
+            // InternalSignalDSL.g:4711:2: 'dailyAt'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getDataTransferKeyword_1()); 
+               before(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); 
             }
-            match(input,67,FOLLOW_2); if (state.failed) return ;
+            match(input,72,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getDataTransferKeyword_1()); 
+               after(grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0()); 
             }
 
             }
@@ -16118,26 +17052,278 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__1__Impl"
+    // $ANTLR end "rule__DailyScheduler__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__2"
-    // InternalSignalDSL.g:4457:1: rule__ListTransfer__Group__2 : rule__ListTransfer__Group__2__Impl rule__ListTransfer__Group__3 ;
-    public final void rule__ListTransfer__Group__2() throws RecognitionException {
+    // $ANTLR start "rule__DailyScheduler__Group__1"
+    // InternalSignalDSL.g:4720:1: rule__DailyScheduler__Group__1 : rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2 ;
+    public final void rule__DailyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4461:1: ( rule__ListTransfer__Group__2__Impl rule__ListTransfer__Group__3 )
-            // InternalSignalDSL.g:4462:2: rule__ListTransfer__Group__2__Impl rule__ListTransfer__Group__3
+            // InternalSignalDSL.g:4724:1: ( rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2 )
+            // InternalSignalDSL.g:4725:2: rule__DailyScheduler__Group__1__Impl rule__DailyScheduler__Group__2
+            {
+            pushFollow(FOLLOW_21);
+            rule__DailyScheduler__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__DailyScheduler__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__Group__1"
+
+
+    // $ANTLR start "rule__DailyScheduler__Group__1__Impl"
+    // InternalSignalDSL.g:4732:1: rule__DailyScheduler__Group__1__Impl : ( ( rule__DailyScheduler__HourAssignment_1 ) ) ;
+    public final void rule__DailyScheduler__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4736:1: ( ( ( rule__DailyScheduler__HourAssignment_1 ) ) )
+            // InternalSignalDSL.g:4737:1: ( ( rule__DailyScheduler__HourAssignment_1 ) )
+            {
+            // InternalSignalDSL.g:4737:1: ( ( rule__DailyScheduler__HourAssignment_1 ) )
+            // InternalSignalDSL.g:4738:2: ( rule__DailyScheduler__HourAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerAccess().getHourAssignment_1()); 
+            }
+            // InternalSignalDSL.g:4739:2: ( rule__DailyScheduler__HourAssignment_1 )
+            // InternalSignalDSL.g:4739:3: rule__DailyScheduler__HourAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__DailyScheduler__HourAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerAccess().getHourAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__Group__1__Impl"
+
+
+    // $ANTLR start "rule__DailyScheduler__Group__2"
+    // InternalSignalDSL.g:4747:1: rule__DailyScheduler__Group__2 : rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3 ;
+    public final void rule__DailyScheduler__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4751:1: ( rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3 )
+            // InternalSignalDSL.g:4752:2: rule__DailyScheduler__Group__2__Impl rule__DailyScheduler__Group__3
+            {
+            pushFollow(FOLLOW_20);
+            rule__DailyScheduler__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__DailyScheduler__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__Group__2"
+
+
+    // $ANTLR start "rule__DailyScheduler__Group__2__Impl"
+    // InternalSignalDSL.g:4759:1: rule__DailyScheduler__Group__2__Impl : ( ':' ) ;
+    public final void rule__DailyScheduler__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4763:1: ( ( ':' ) )
+            // InternalSignalDSL.g:4764:1: ( ':' )
+            {
+            // InternalSignalDSL.g:4764:1: ( ':' )
+            // InternalSignalDSL.g:4765:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerAccess().getColonKeyword_2()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerAccess().getColonKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__Group__2__Impl"
+
+
+    // $ANTLR start "rule__DailyScheduler__Group__3"
+    // InternalSignalDSL.g:4774:1: rule__DailyScheduler__Group__3 : rule__DailyScheduler__Group__3__Impl ;
+    public final void rule__DailyScheduler__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4778:1: ( rule__DailyScheduler__Group__3__Impl )
+            // InternalSignalDSL.g:4779:2: rule__DailyScheduler__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__DailyScheduler__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__Group__3"
+
+
+    // $ANTLR start "rule__DailyScheduler__Group__3__Impl"
+    // InternalSignalDSL.g:4785:1: rule__DailyScheduler__Group__3__Impl : ( ( rule__DailyScheduler__MinuteAssignment_3 ) ) ;
+    public final void rule__DailyScheduler__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4789:1: ( ( ( rule__DailyScheduler__MinuteAssignment_3 ) ) )
+            // InternalSignalDSL.g:4790:1: ( ( rule__DailyScheduler__MinuteAssignment_3 ) )
+            {
+            // InternalSignalDSL.g:4790:1: ( ( rule__DailyScheduler__MinuteAssignment_3 ) )
+            // InternalSignalDSL.g:4791:2: ( rule__DailyScheduler__MinuteAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerAccess().getMinuteAssignment_3()); 
+            }
+            // InternalSignalDSL.g:4792:2: ( rule__DailyScheduler__MinuteAssignment_3 )
+            // InternalSignalDSL.g:4792:3: rule__DailyScheduler__MinuteAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__DailyScheduler__MinuteAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerAccess().getMinuteAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__Group__3__Impl"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__0"
+    // InternalSignalDSL.g:4801:1: rule__WeeklyScheduler__Group__0 : rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1 ;
+    public final void rule__WeeklyScheduler__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4805:1: ( rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1 )
+            // InternalSignalDSL.g:4806:2: rule__WeeklyScheduler__Group__0__Impl rule__WeeklyScheduler__Group__1
             {
             pushFollow(FOLLOW_22);
-            rule__ListTransfer__Group__2__Impl();
+            rule__WeeklyScheduler__Group__0__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__ListTransfer__Group__3();
+            rule__WeeklyScheduler__Group__1();
 
             state._fsp--;
             if (state.failed) return ;
@@ -16156,28 +17342,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__2"
+    // $ANTLR end "rule__WeeklyScheduler__Group__0"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__2__Impl"
-    // InternalSignalDSL.g:4469:1: rule__ListTransfer__Group__2__Impl : ( '{' ) ;
-    public final void rule__ListTransfer__Group__2__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeeklyScheduler__Group__0__Impl"
+    // InternalSignalDSL.g:4813:1: rule__WeeklyScheduler__Group__0__Impl : ( 'weeklyOn' ) ;
+    public final void rule__WeeklyScheduler__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4473:1: ( ( '{' ) )
-            // InternalSignalDSL.g:4474:1: ( '{' )
+            // InternalSignalDSL.g:4817:1: ( ( 'weeklyOn' ) )
+            // InternalSignalDSL.g:4818:1: ( 'weeklyOn' )
             {
-            // InternalSignalDSL.g:4474:1: ( '{' )
-            // InternalSignalDSL.g:4475:2: '{'
+            // InternalSignalDSL.g:4818:1: ( 'weeklyOn' )
+            // InternalSignalDSL.g:4819:2: 'weeklyOn'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getLeftCurlyBracketKeyword_2()); 
+               before(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,74,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getLeftCurlyBracketKeyword_2()); 
+               after(grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0()); 
             }
 
             }
@@ -16197,26 +17383,26 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__2__Impl"
+    // $ANTLR end "rule__WeeklyScheduler__Group__0__Impl"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__3"
-    // InternalSignalDSL.g:4484:1: rule__ListTransfer__Group__3 : rule__ListTransfer__Group__3__Impl rule__ListTransfer__Group__4 ;
-    public final void rule__ListTransfer__Group__3() throws RecognitionException {
+    // $ANTLR start "rule__WeeklyScheduler__Group__1"
+    // InternalSignalDSL.g:4828:1: rule__WeeklyScheduler__Group__1 : rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2 ;
+    public final void rule__WeeklyScheduler__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4488:1: ( rule__ListTransfer__Group__3__Impl rule__ListTransfer__Group__4 )
-            // InternalSignalDSL.g:4489:2: rule__ListTransfer__Group__3__Impl rule__ListTransfer__Group__4
+            // InternalSignalDSL.g:4832:1: ( rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2 )
+            // InternalSignalDSL.g:4833:2: rule__WeeklyScheduler__Group__1__Impl rule__WeeklyScheduler__Group__2
             {
-            pushFollow(FOLLOW_22);
-            rule__ListTransfer__Group__3__Impl();
+            pushFollow(FOLLOW_23);
+            rule__WeeklyScheduler__Group__1__Impl();
 
             state._fsp--;
             if (state.failed) return ;
             pushFollow(FOLLOW_2);
-            rule__ListTransfer__Group__4();
+            rule__WeeklyScheduler__Group__2();
 
             state._fsp--;
             if (state.failed) return ;
@@ -16235,90 +17421,77 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__3"
+    // $ANTLR end "rule__WeeklyScheduler__Group__1"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__3__Impl"
-    // InternalSignalDSL.g:4496:1: rule__ListTransfer__Group__3__Impl : ( ( rule__ListTransfer__InterchangesAssignment_3 )* ) ;
-    public final void rule__ListTransfer__Group__3__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeeklyScheduler__Group__1__Impl"
+    // InternalSignalDSL.g:4840:1: rule__WeeklyScheduler__Group__1__Impl : ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) ) ;
+    public final void rule__WeeklyScheduler__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4500:1: ( ( ( rule__ListTransfer__InterchangesAssignment_3 )* ) )
-            // InternalSignalDSL.g:4501:1: ( ( rule__ListTransfer__InterchangesAssignment_3 )* )
+            // InternalSignalDSL.g:4844:1: ( ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) ) )
+            // InternalSignalDSL.g:4845:1: ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4501:1: ( ( rule__ListTransfer__InterchangesAssignment_3 )* )
-            // InternalSignalDSL.g:4502:2: ( rule__ListTransfer__InterchangesAssignment_3 )*
+            // InternalSignalDSL.g:4845:1: ( ( rule__WeeklyScheduler__DayofweekAssignment_1 ) )
+            // InternalSignalDSL.g:4846:2: ( rule__WeeklyScheduler__DayofweekAssignment_1 )
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getInterchangesAssignment_3()); 
+               before(grammarAccess.getWeeklySchedulerAccess().getDayofweekAssignment_1()); 
             }
-            // InternalSignalDSL.g:4503:2: ( rule__ListTransfer__InterchangesAssignment_3 )*
-            loop57:
-            do {
-                int alt57=2;
-                int LA57_0 = input.LA(1);
-
-                if ( ((LA57_0>=51 && LA57_0<=52)) ) {
-                    alt57=1;
-                }
-
-
-                switch (alt57) {
-            	case 1 :
-            	    // InternalSignalDSL.g:4503:3: rule__ListTransfer__InterchangesAssignment_3
-            	    {
-            	    pushFollow(FOLLOW_23);
-            	    rule__ListTransfer__InterchangesAssignment_3();
-
-            	    state._fsp--;
-            	    if (state.failed) return ;
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop57;
-                }
-            } while (true);
-
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getInterchangesAssignment_3()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__ListTransfer__Group__3__Impl"
-
-
-    // $ANTLR start "rule__ListTransfer__Group__4"
-    // InternalSignalDSL.g:4511:1: rule__ListTransfer__Group__4 : rule__ListTransfer__Group__4__Impl ;
-    public final void rule__ListTransfer__Group__4() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:4515:1: ( rule__ListTransfer__Group__4__Impl )
-            // InternalSignalDSL.g:4516:2: rule__ListTransfer__Group__4__Impl
+            // InternalSignalDSL.g:4847:2: ( rule__WeeklyScheduler__DayofweekAssignment_1 )
+            // InternalSignalDSL.g:4847:3: rule__WeeklyScheduler__DayofweekAssignment_1
             {
             pushFollow(FOLLOW_2);
-            rule__ListTransfer__Group__4__Impl();
+            rule__WeeklyScheduler__DayofweekAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getDayofweekAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__1__Impl"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__2"
+    // InternalSignalDSL.g:4855:1: rule__WeeklyScheduler__Group__2 : rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3 ;
+    public final void rule__WeeklyScheduler__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4859:1: ( rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3 )
+            // InternalSignalDSL.g:4860:2: rule__WeeklyScheduler__Group__2__Impl rule__WeeklyScheduler__Group__3
+            {
+            pushFollow(FOLLOW_20);
+            rule__WeeklyScheduler__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__Group__3();
 
             state._fsp--;
             if (state.failed) return ;
@@ -16337,28 +17510,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__4"
+    // $ANTLR end "rule__WeeklyScheduler__Group__2"
 
 
-    // $ANTLR start "rule__ListTransfer__Group__4__Impl"
-    // InternalSignalDSL.g:4522:1: rule__ListTransfer__Group__4__Impl : ( '}' ) ;
-    public final void rule__ListTransfer__Group__4__Impl() throws RecognitionException {
+    // $ANTLR start "rule__WeeklyScheduler__Group__2__Impl"
+    // InternalSignalDSL.g:4867:1: rule__WeeklyScheduler__Group__2__Impl : ( 'at' ) ;
+    public final void rule__WeeklyScheduler__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4526:1: ( ( '}' ) )
-            // InternalSignalDSL.g:4527:1: ( '}' )
+            // InternalSignalDSL.g:4871:1: ( ( 'at' ) )
+            // InternalSignalDSL.g:4872:1: ( 'at' )
             {
-            // InternalSignalDSL.g:4527:1: ( '}' )
-            // InternalSignalDSL.g:4528:2: '}'
+            // InternalSignalDSL.g:4872:1: ( 'at' )
+            // InternalSignalDSL.g:4873:2: 'at'
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getRightCurlyBracketKeyword_4()); 
+               before(grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2()); 
             }
-            match(input,61,FOLLOW_2); if (state.failed) return ;
+            match(input,75,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getRightCurlyBracketKeyword_4()); 
+               after(grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2()); 
             }
 
             }
@@ -16378,20 +17551,771 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__Group__4__Impl"
+    // $ANTLR end "rule__WeeklyScheduler__Group__2__Impl"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__3"
+    // InternalSignalDSL.g:4882:1: rule__WeeklyScheduler__Group__3 : rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4 ;
+    public final void rule__WeeklyScheduler__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4886:1: ( rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4 )
+            // InternalSignalDSL.g:4887:2: rule__WeeklyScheduler__Group__3__Impl rule__WeeklyScheduler__Group__4
+            {
+            pushFollow(FOLLOW_21);
+            rule__WeeklyScheduler__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__3"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__3__Impl"
+    // InternalSignalDSL.g:4894:1: rule__WeeklyScheduler__Group__3__Impl : ( ( rule__WeeklyScheduler__HourAssignment_3 ) ) ;
+    public final void rule__WeeklyScheduler__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4898:1: ( ( ( rule__WeeklyScheduler__HourAssignment_3 ) ) )
+            // InternalSignalDSL.g:4899:1: ( ( rule__WeeklyScheduler__HourAssignment_3 ) )
+            {
+            // InternalSignalDSL.g:4899:1: ( ( rule__WeeklyScheduler__HourAssignment_3 ) )
+            // InternalSignalDSL.g:4900:2: ( rule__WeeklyScheduler__HourAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getHourAssignment_3()); 
+            }
+            // InternalSignalDSL.g:4901:2: ( rule__WeeklyScheduler__HourAssignment_3 )
+            // InternalSignalDSL.g:4901:3: rule__WeeklyScheduler__HourAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__HourAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getHourAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__3__Impl"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__4"
+    // InternalSignalDSL.g:4909:1: rule__WeeklyScheduler__Group__4 : rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5 ;
+    public final void rule__WeeklyScheduler__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4913:1: ( rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5 )
+            // InternalSignalDSL.g:4914:2: rule__WeeklyScheduler__Group__4__Impl rule__WeeklyScheduler__Group__5
+            {
+            pushFollow(FOLLOW_20);
+            rule__WeeklyScheduler__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__4"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__4__Impl"
+    // InternalSignalDSL.g:4921:1: rule__WeeklyScheduler__Group__4__Impl : ( ':' ) ;
+    public final void rule__WeeklyScheduler__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4925:1: ( ( ':' ) )
+            // InternalSignalDSL.g:4926:1: ( ':' )
+            {
+            // InternalSignalDSL.g:4926:1: ( ':' )
+            // InternalSignalDSL.g:4927:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__4__Impl"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__5"
+    // InternalSignalDSL.g:4936:1: rule__WeeklyScheduler__Group__5 : rule__WeeklyScheduler__Group__5__Impl ;
+    public final void rule__WeeklyScheduler__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4940:1: ( rule__WeeklyScheduler__Group__5__Impl )
+            // InternalSignalDSL.g:4941:2: rule__WeeklyScheduler__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__5"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__Group__5__Impl"
+    // InternalSignalDSL.g:4947:1: rule__WeeklyScheduler__Group__5__Impl : ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) ) ;
+    public final void rule__WeeklyScheduler__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4951:1: ( ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) ) )
+            // InternalSignalDSL.g:4952:1: ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) )
+            {
+            // InternalSignalDSL.g:4952:1: ( ( rule__WeeklyScheduler__MinuteAssignment_5 ) )
+            // InternalSignalDSL.g:4953:2: ( rule__WeeklyScheduler__MinuteAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getMinuteAssignment_5()); 
+            }
+            // InternalSignalDSL.g:4954:2: ( rule__WeeklyScheduler__MinuteAssignment_5 )
+            // InternalSignalDSL.g:4954:3: rule__WeeklyScheduler__MinuteAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__WeeklyScheduler__MinuteAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getMinuteAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__Group__5__Impl"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__0"
+    // InternalSignalDSL.g:4963:1: rule__MonthlyScheduler__Group__0 : rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1 ;
+    public final void rule__MonthlyScheduler__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4967:1: ( rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1 )
+            // InternalSignalDSL.g:4968:2: rule__MonthlyScheduler__Group__0__Impl rule__MonthlyScheduler__Group__1
+            {
+            pushFollow(FOLLOW_20);
+            rule__MonthlyScheduler__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__0"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__0__Impl"
+    // InternalSignalDSL.g:4975:1: rule__MonthlyScheduler__Group__0__Impl : ( 'monthlyOn' ) ;
+    public final void rule__MonthlyScheduler__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4979:1: ( ( 'monthlyOn' ) )
+            // InternalSignalDSL.g:4980:1: ( 'monthlyOn' )
+            {
+            // InternalSignalDSL.g:4980:1: ( 'monthlyOn' )
+            // InternalSignalDSL.g:4981:2: 'monthlyOn'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); 
+            }
+            match(input,76,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__0__Impl"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__1"
+    // InternalSignalDSL.g:4990:1: rule__MonthlyScheduler__Group__1 : rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2 ;
+    public final void rule__MonthlyScheduler__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:4994:1: ( rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2 )
+            // InternalSignalDSL.g:4995:2: rule__MonthlyScheduler__Group__1__Impl rule__MonthlyScheduler__Group__2
+            {
+            pushFollow(FOLLOW_23);
+            rule__MonthlyScheduler__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__1"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__1__Impl"
+    // InternalSignalDSL.g:5002:1: rule__MonthlyScheduler__Group__1__Impl : ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) ) ;
+    public final void rule__MonthlyScheduler__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5006:1: ( ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) ) )
+            // InternalSignalDSL.g:5007:1: ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) )
+            {
+            // InternalSignalDSL.g:5007:1: ( ( rule__MonthlyScheduler__DayofmonthAssignment_1 ) )
+            // InternalSignalDSL.g:5008:2: ( rule__MonthlyScheduler__DayofmonthAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getDayofmonthAssignment_1()); 
+            }
+            // InternalSignalDSL.g:5009:2: ( rule__MonthlyScheduler__DayofmonthAssignment_1 )
+            // InternalSignalDSL.g:5009:3: rule__MonthlyScheduler__DayofmonthAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__DayofmonthAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getDayofmonthAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__1__Impl"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__2"
+    // InternalSignalDSL.g:5017:1: rule__MonthlyScheduler__Group__2 : rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3 ;
+    public final void rule__MonthlyScheduler__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5021:1: ( rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3 )
+            // InternalSignalDSL.g:5022:2: rule__MonthlyScheduler__Group__2__Impl rule__MonthlyScheduler__Group__3
+            {
+            pushFollow(FOLLOW_20);
+            rule__MonthlyScheduler__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__2"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__2__Impl"
+    // InternalSignalDSL.g:5029:1: rule__MonthlyScheduler__Group__2__Impl : ( 'at' ) ;
+    public final void rule__MonthlyScheduler__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5033:1: ( ( 'at' ) )
+            // InternalSignalDSL.g:5034:1: ( 'at' )
+            {
+            // InternalSignalDSL.g:5034:1: ( 'at' )
+            // InternalSignalDSL.g:5035:2: 'at'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__2__Impl"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__3"
+    // InternalSignalDSL.g:5044:1: rule__MonthlyScheduler__Group__3 : rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4 ;
+    public final void rule__MonthlyScheduler__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5048:1: ( rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4 )
+            // InternalSignalDSL.g:5049:2: rule__MonthlyScheduler__Group__3__Impl rule__MonthlyScheduler__Group__4
+            {
+            pushFollow(FOLLOW_21);
+            rule__MonthlyScheduler__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__3"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__3__Impl"
+    // InternalSignalDSL.g:5056:1: rule__MonthlyScheduler__Group__3__Impl : ( ( rule__MonthlyScheduler__HourAssignment_3 ) ) ;
+    public final void rule__MonthlyScheduler__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5060:1: ( ( ( rule__MonthlyScheduler__HourAssignment_3 ) ) )
+            // InternalSignalDSL.g:5061:1: ( ( rule__MonthlyScheduler__HourAssignment_3 ) )
+            {
+            // InternalSignalDSL.g:5061:1: ( ( rule__MonthlyScheduler__HourAssignment_3 ) )
+            // InternalSignalDSL.g:5062:2: ( rule__MonthlyScheduler__HourAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getHourAssignment_3()); 
+            }
+            // InternalSignalDSL.g:5063:2: ( rule__MonthlyScheduler__HourAssignment_3 )
+            // InternalSignalDSL.g:5063:3: rule__MonthlyScheduler__HourAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__HourAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getHourAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__3__Impl"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__4"
+    // InternalSignalDSL.g:5071:1: rule__MonthlyScheduler__Group__4 : rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5 ;
+    public final void rule__MonthlyScheduler__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5075:1: ( rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5 )
+            // InternalSignalDSL.g:5076:2: rule__MonthlyScheduler__Group__4__Impl rule__MonthlyScheduler__Group__5
+            {
+            pushFollow(FOLLOW_20);
+            rule__MonthlyScheduler__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__4"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__4__Impl"
+    // InternalSignalDSL.g:5083:1: rule__MonthlyScheduler__Group__4__Impl : ( ':' ) ;
+    public final void rule__MonthlyScheduler__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5087:1: ( ( ':' ) )
+            // InternalSignalDSL.g:5088:1: ( ':' )
+            {
+            // InternalSignalDSL.g:5088:1: ( ':' )
+            // InternalSignalDSL.g:5089:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__4__Impl"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__5"
+    // InternalSignalDSL.g:5098:1: rule__MonthlyScheduler__Group__5 : rule__MonthlyScheduler__Group__5__Impl ;
+    public final void rule__MonthlyScheduler__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5102:1: ( rule__MonthlyScheduler__Group__5__Impl )
+            // InternalSignalDSL.g:5103:2: rule__MonthlyScheduler__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__5"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__Group__5__Impl"
+    // InternalSignalDSL.g:5109:1: rule__MonthlyScheduler__Group__5__Impl : ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) ) ;
+    public final void rule__MonthlyScheduler__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:5113:1: ( ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) ) )
+            // InternalSignalDSL.g:5114:1: ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) )
+            {
+            // InternalSignalDSL.g:5114:1: ( ( rule__MonthlyScheduler__MinuteAssignment_5 ) )
+            // InternalSignalDSL.g:5115:2: ( rule__MonthlyScheduler__MinuteAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5()); 
+            }
+            // InternalSignalDSL.g:5116:2: ( rule__MonthlyScheduler__MinuteAssignment_5 )
+            // InternalSignalDSL.g:5116:3: rule__MonthlyScheduler__MinuteAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__MonthlyScheduler__MinuteAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getMinuteAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__Group__5__Impl"
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__0"
-    // InternalSignalDSL.g:4538:1: rule__SignalDatainterchange__Group__0 : rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 ;
+    // InternalSignalDSL.g:5125:1: rule__SignalDatainterchange__Group__0 : rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 ;
     public final void rule__SignalDatainterchange__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4542:1: ( rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 )
-            // InternalSignalDSL.g:4543:2: rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1
+            // InternalSignalDSL.g:5129:1: ( rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1 )
+            // InternalSignalDSL.g:5130:2: rule__SignalDatainterchange__Group__0__Impl rule__SignalDatainterchange__Group__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__SignalDatainterchange__Group__0__Impl();
 
             state._fsp--;
@@ -16420,23 +18344,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__0__Impl"
-    // InternalSignalDSL.g:4550:1: rule__SignalDatainterchange__Group__0__Impl : ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) ;
+    // InternalSignalDSL.g:5137:1: rule__SignalDatainterchange__Group__0__Impl : ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) ;
     public final void rule__SignalDatainterchange__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4554:1: ( ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) )
-            // InternalSignalDSL.g:4555:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
+            // InternalSignalDSL.g:5141:1: ( ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) ) )
+            // InternalSignalDSL.g:5142:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
             {
-            // InternalSignalDSL.g:4555:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
-            // InternalSignalDSL.g:4556:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
+            // InternalSignalDSL.g:5142:1: ( ( rule__SignalDatainterchange__DataActionAssignment_0 ) )
+            // InternalSignalDSL.g:5143:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataActionAssignment_0()); 
             }
-            // InternalSignalDSL.g:4557:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
-            // InternalSignalDSL.g:4557:3: rule__SignalDatainterchange__DataActionAssignment_0
+            // InternalSignalDSL.g:5144:2: ( rule__SignalDatainterchange__DataActionAssignment_0 )
+            // InternalSignalDSL.g:5144:3: rule__SignalDatainterchange__DataActionAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__DataActionAssignment_0();
@@ -16471,14 +18395,14 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__1"
-    // InternalSignalDSL.g:4565:1: rule__SignalDatainterchange__Group__1 : rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 ;
+    // InternalSignalDSL.g:5152:1: rule__SignalDatainterchange__Group__1 : rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 ;
     public final void rule__SignalDatainterchange__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4569:1: ( rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 )
-            // InternalSignalDSL.g:4570:2: rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2
+            // InternalSignalDSL.g:5156:1: ( rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2 )
+            // InternalSignalDSL.g:5157:2: rule__SignalDatainterchange__Group__1__Impl rule__SignalDatainterchange__Group__2
             {
             pushFollow(FOLLOW_24);
             rule__SignalDatainterchange__Group__1__Impl();
@@ -16509,23 +18433,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__1__Impl"
-    // InternalSignalDSL.g:4577:1: rule__SignalDatainterchange__Group__1__Impl : ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5164:1: rule__SignalDatainterchange__Group__1__Impl : ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) ;
     public final void rule__SignalDatainterchange__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4581:1: ( ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) )
-            // InternalSignalDSL.g:4582:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
+            // InternalSignalDSL.g:5168:1: ( ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) ) )
+            // InternalSignalDSL.g:5169:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
             {
-            // InternalSignalDSL.g:4582:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
-            // InternalSignalDSL.g:4583:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
+            // InternalSignalDSL.g:5169:1: ( ( rule__SignalDatainterchange__DataRefAssignment_1 ) )
+            // InternalSignalDSL.g:5170:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataRefAssignment_1()); 
             }
-            // InternalSignalDSL.g:4584:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
-            // InternalSignalDSL.g:4584:3: rule__SignalDatainterchange__DataRefAssignment_1
+            // InternalSignalDSL.g:5171:2: ( rule__SignalDatainterchange__DataRefAssignment_1 )
+            // InternalSignalDSL.g:5171:3: rule__SignalDatainterchange__DataRefAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__DataRefAssignment_1();
@@ -16560,16 +18484,16 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__2"
-    // InternalSignalDSL.g:4592:1: rule__SignalDatainterchange__Group__2 : rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3 ;
+    // InternalSignalDSL.g:5179:1: rule__SignalDatainterchange__Group__2 : rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3 ;
     public final void rule__SignalDatainterchange__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4596:1: ( rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3 )
-            // InternalSignalDSL.g:4597:2: rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3
+            // InternalSignalDSL.g:5183:1: ( rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3 )
+            // InternalSignalDSL.g:5184:2: rule__SignalDatainterchange__Group__2__Impl rule__SignalDatainterchange__Group__3
             {
-            pushFollow(FOLLOW_13);
+            pushFollow(FOLLOW_12);
             rule__SignalDatainterchange__Group__2__Impl();
 
             state._fsp--;
@@ -16598,22 +18522,22 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__2__Impl"
-    // InternalSignalDSL.g:4604:1: rule__SignalDatainterchange__Group__2__Impl : ( 'fileName' ) ;
+    // InternalSignalDSL.g:5191:1: rule__SignalDatainterchange__Group__2__Impl : ( 'fileName' ) ;
     public final void rule__SignalDatainterchange__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4608:1: ( ( 'fileName' ) )
-            // InternalSignalDSL.g:4609:1: ( 'fileName' )
+            // InternalSignalDSL.g:5195:1: ( ( 'fileName' ) )
+            // InternalSignalDSL.g:5196:1: ( 'fileName' )
             {
-            // InternalSignalDSL.g:4609:1: ( 'fileName' )
-            // InternalSignalDSL.g:4610:2: 'fileName'
+            // InternalSignalDSL.g:5196:1: ( 'fileName' )
+            // InternalSignalDSL.g:5197:2: 'fileName'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2()); 
             }
-            match(input,68,FOLLOW_2); if (state.failed) return ;
+            match(input,77,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2()); 
             }
@@ -16639,14 +18563,14 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__3"
-    // InternalSignalDSL.g:4619:1: rule__SignalDatainterchange__Group__3 : rule__SignalDatainterchange__Group__3__Impl ;
+    // InternalSignalDSL.g:5206:1: rule__SignalDatainterchange__Group__3 : rule__SignalDatainterchange__Group__3__Impl ;
     public final void rule__SignalDatainterchange__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4623:1: ( rule__SignalDatainterchange__Group__3__Impl )
-            // InternalSignalDSL.g:4624:2: rule__SignalDatainterchange__Group__3__Impl
+            // InternalSignalDSL.g:5210:1: ( rule__SignalDatainterchange__Group__3__Impl )
+            // InternalSignalDSL.g:5211:2: rule__SignalDatainterchange__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__Group__3__Impl();
@@ -16672,23 +18596,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__Group__3__Impl"
-    // InternalSignalDSL.g:4630:1: rule__SignalDatainterchange__Group__3__Impl : ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) ) ;
+    // InternalSignalDSL.g:5217:1: rule__SignalDatainterchange__Group__3__Impl : ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) ) ;
     public final void rule__SignalDatainterchange__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4634:1: ( ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) ) )
-            // InternalSignalDSL.g:4635:1: ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) )
+            // InternalSignalDSL.g:5221:1: ( ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) ) )
+            // InternalSignalDSL.g:5222:1: ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) )
             {
-            // InternalSignalDSL.g:4635:1: ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) )
-            // InternalSignalDSL.g:4636:2: ( rule__SignalDatainterchange__FileNameAssignment_3 )
+            // InternalSignalDSL.g:5222:1: ( ( rule__SignalDatainterchange__FileNameAssignment_3 ) )
+            // InternalSignalDSL.g:5223:2: ( rule__SignalDatainterchange__FileNameAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getFileNameAssignment_3()); 
             }
-            // InternalSignalDSL.g:4637:2: ( rule__SignalDatainterchange__FileNameAssignment_3 )
-            // InternalSignalDSL.g:4637:3: rule__SignalDatainterchange__FileNameAssignment_3
+            // InternalSignalDSL.g:5224:2: ( rule__SignalDatainterchange__FileNameAssignment_3 )
+            // InternalSignalDSL.g:5224:3: rule__SignalDatainterchange__FileNameAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__SignalDatainterchange__FileNameAssignment_3();
@@ -16723,14 +18647,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__0"
-    // InternalSignalDSL.g:4646:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
+    // InternalSignalDSL.g:5233:1: rule__XImportDeclaration__Group__0 : rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 ;
     public final void rule__XImportDeclaration__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4650:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
-            // InternalSignalDSL.g:4651:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            // InternalSignalDSL.g:5237:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalSignalDSL.g:5238:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
             {
             pushFollow(FOLLOW_25);
             rule__XImportDeclaration__Group__0__Impl();
@@ -16761,23 +18685,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__0__Impl"
-    // InternalSignalDSL.g:4658:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:5245:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4662:1: ( ( () ) )
-            // InternalSignalDSL.g:4663:1: ( () )
+            // InternalSignalDSL.g:5249:1: ( ( () ) )
+            // InternalSignalDSL.g:5250:1: ( () )
             {
-            // InternalSignalDSL.g:4663:1: ( () )
-            // InternalSignalDSL.g:4664:2: ()
+            // InternalSignalDSL.g:5250:1: ( () )
+            // InternalSignalDSL.g:5251:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
             }
-            // InternalSignalDSL.g:4665:2: ()
-            // InternalSignalDSL.g:4665:3: 
+            // InternalSignalDSL.g:5252:2: ()
+            // InternalSignalDSL.g:5252:3: 
             {
             }
 
@@ -16802,14 +18726,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1"
-    // InternalSignalDSL.g:4673:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
+    // InternalSignalDSL.g:5260:1: rule__XImportDeclaration__Group__1 : rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 ;
     public final void rule__XImportDeclaration__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4677:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
-            // InternalSignalDSL.g:4678:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            // InternalSignalDSL.g:5264:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalSignalDSL.g:5265:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
             {
             pushFollow(FOLLOW_26);
             rule__XImportDeclaration__Group__1__Impl();
@@ -16840,17 +18764,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__1__Impl"
-    // InternalSignalDSL.g:4685:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    // InternalSignalDSL.g:5272:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
     public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4689:1: ( ( 'import' ) )
-            // InternalSignalDSL.g:4690:1: ( 'import' )
+            // InternalSignalDSL.g:5276:1: ( ( 'import' ) )
+            // InternalSignalDSL.g:5277:1: ( 'import' )
             {
-            // InternalSignalDSL.g:4690:1: ( 'import' )
-            // InternalSignalDSL.g:4691:2: 'import'
+            // InternalSignalDSL.g:5277:1: ( 'import' )
+            // InternalSignalDSL.g:5278:2: 'import'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
@@ -16881,14 +18805,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2"
-    // InternalSignalDSL.g:4700:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
+    // InternalSignalDSL.g:5287:1: rule__XImportDeclaration__Group__2 : rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 ;
     public final void rule__XImportDeclaration__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4704:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
-            // InternalSignalDSL.g:4705:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            // InternalSignalDSL.g:5291:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalSignalDSL.g:5292:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
             {
             pushFollow(FOLLOW_27);
             rule__XImportDeclaration__Group__2__Impl();
@@ -16919,23 +18843,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__2__Impl"
-    // InternalSignalDSL.g:4712:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    // InternalSignalDSL.g:5299:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
     public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4716:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
-            // InternalSignalDSL.g:4717:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:5303:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalSignalDSL.g:5304:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
             {
-            // InternalSignalDSL.g:4717:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
-            // InternalSignalDSL.g:4718:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:5304:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:5305:2: ( rule__XImportDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:4719:2: ( rule__XImportDeclaration__Alternatives_2 )
-            // InternalSignalDSL.g:4719:3: rule__XImportDeclaration__Alternatives_2
+            // InternalSignalDSL.g:5306:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:5306:3: rule__XImportDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2();
@@ -16970,14 +18894,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3"
-    // InternalSignalDSL.g:4727:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    // InternalSignalDSL.g:5314:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
     public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4731:1: ( rule__XImportDeclaration__Group__3__Impl )
-            // InternalSignalDSL.g:4732:2: rule__XImportDeclaration__Group__3__Impl
+            // InternalSignalDSL.g:5318:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalSignalDSL.g:5319:2: rule__XImportDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group__3__Impl();
@@ -17003,33 +18927,33 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group__3__Impl"
-    // InternalSignalDSL.g:4738:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    // InternalSignalDSL.g:5325:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
     public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4742:1: ( ( ( ';' )? ) )
-            // InternalSignalDSL.g:4743:1: ( ( ';' )? )
+            // InternalSignalDSL.g:5329:1: ( ( ( ';' )? ) )
+            // InternalSignalDSL.g:5330:1: ( ( ';' )? )
             {
-            // InternalSignalDSL.g:4743:1: ( ( ';' )? )
-            // InternalSignalDSL.g:4744:2: ( ';' )?
+            // InternalSignalDSL.g:5330:1: ( ( ';' )? )
+            // InternalSignalDSL.g:5331:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
             }
-            // InternalSignalDSL.g:4745:2: ( ';' )?
-            int alt58=2;
-            int LA58_0 = input.LA(1);
+            // InternalSignalDSL.g:5332:2: ( ';' )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
 
-            if ( (LA58_0==69) ) {
-                alt58=1;
+            if ( (LA56_0==78) ) {
+                alt56=1;
             }
-            switch (alt58) {
+            switch (alt56) {
                 case 1 :
-                    // InternalSignalDSL.g:4745:3: ';'
+                    // InternalSignalDSL.g:5332:3: ';'
                     {
-                    match(input,69,FOLLOW_2); if (state.failed) return ;
+                    match(input,78,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -17061,14 +18985,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0"
-    // InternalSignalDSL.g:4754:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
+    // InternalSignalDSL.g:5341:1: rule__XImportDeclaration__Group_2_0__0 : rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 ;
     public final void rule__XImportDeclaration__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4758:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
-            // InternalSignalDSL.g:4759:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            // InternalSignalDSL.g:5345:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalSignalDSL.g:5346:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
             {
             pushFollow(FOLLOW_28);
             rule__XImportDeclaration__Group_2_0__0__Impl();
@@ -17099,23 +19023,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:4766:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
+    // InternalSignalDSL.g:5353:1: rule__XImportDeclaration__Group_2_0__0__Impl : ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4770:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
-            // InternalSignalDSL.g:4771:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:5357:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalSignalDSL.g:5358:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
             {
-            // InternalSignalDSL.g:4771:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
-            // InternalSignalDSL.g:4772:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalSignalDSL.g:5358:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:5359:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
             }
-            // InternalSignalDSL.g:4773:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
-            // InternalSignalDSL.g:4773:3: rule__XImportDeclaration__StaticAssignment_2_0_0
+            // InternalSignalDSL.g:5360:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalSignalDSL.g:5360:3: rule__XImportDeclaration__StaticAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__StaticAssignment_2_0_0();
@@ -17150,14 +19074,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1"
-    // InternalSignalDSL.g:4781:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
+    // InternalSignalDSL.g:5368:1: rule__XImportDeclaration__Group_2_0__1 : rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 ;
     public final void rule__XImportDeclaration__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4785:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
-            // InternalSignalDSL.g:4786:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            // InternalSignalDSL.g:5372:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalSignalDSL.g:5373:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
             {
             pushFollow(FOLLOW_28);
             rule__XImportDeclaration__Group_2_0__1__Impl();
@@ -17188,31 +19112,31 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__1__Impl"
-    // InternalSignalDSL.g:4793:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
+    // InternalSignalDSL.g:5380:1: rule__XImportDeclaration__Group_2_0__1__Impl : ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) ;
     public final void rule__XImportDeclaration__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4797:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
-            // InternalSignalDSL.g:4798:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalSignalDSL.g:5384:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalSignalDSL.g:5385:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
             {
-            // InternalSignalDSL.g:4798:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
-            // InternalSignalDSL.g:4799:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            // InternalSignalDSL.g:5385:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalSignalDSL.g:5386:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
             }
-            // InternalSignalDSL.g:4800:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
-            int alt59=2;
-            int LA59_0 = input.LA(1);
+            // InternalSignalDSL.g:5387:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
 
-            if ( (LA59_0==48) ) {
-                alt59=1;
+            if ( (LA57_0==48) ) {
+                alt57=1;
             }
-            switch (alt59) {
+            switch (alt57) {
                 case 1 :
-                    // InternalSignalDSL.g:4800:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
+                    // InternalSignalDSL.g:5387:3: rule__XImportDeclaration__ExtensionAssignment_2_0_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XImportDeclaration__ExtensionAssignment_2_0_1();
@@ -17250,14 +19174,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2"
-    // InternalSignalDSL.g:4808:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
+    // InternalSignalDSL.g:5395:1: rule__XImportDeclaration__Group_2_0__2 : rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 ;
     public final void rule__XImportDeclaration__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4812:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
-            // InternalSignalDSL.g:4813:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            // InternalSignalDSL.g:5399:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalSignalDSL.g:5400:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
             {
             pushFollow(FOLLOW_29);
             rule__XImportDeclaration__Group_2_0__2__Impl();
@@ -17288,23 +19212,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__2__Impl"
-    // InternalSignalDSL.g:4820:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
+    // InternalSignalDSL.g:5407:1: rule__XImportDeclaration__Group_2_0__2__Impl : ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4824:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
-            // InternalSignalDSL.g:4825:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalSignalDSL.g:5411:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalSignalDSL.g:5412:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
             {
-            // InternalSignalDSL.g:4825:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
-            // InternalSignalDSL.g:4826:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalSignalDSL.g:5412:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalSignalDSL.g:5413:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
             }
-            // InternalSignalDSL.g:4827:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
-            // InternalSignalDSL.g:4827:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
+            // InternalSignalDSL.g:5414:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalSignalDSL.g:5414:3: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedTypeAssignment_2_0_2();
@@ -17339,14 +19263,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3"
-    // InternalSignalDSL.g:4835:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
+    // InternalSignalDSL.g:5422:1: rule__XImportDeclaration__Group_2_0__3 : rule__XImportDeclaration__Group_2_0__3__Impl ;
     public final void rule__XImportDeclaration__Group_2_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4839:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
-            // InternalSignalDSL.g:4840:2: rule__XImportDeclaration__Group_2_0__3__Impl
+            // InternalSignalDSL.g:5426:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalSignalDSL.g:5427:2: rule__XImportDeclaration__Group_2_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_0__3__Impl();
@@ -17372,23 +19296,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_0__3__Impl"
-    // InternalSignalDSL.g:4846:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
+    // InternalSignalDSL.g:5433:1: rule__XImportDeclaration__Group_2_0__3__Impl : ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) ;
     public final void rule__XImportDeclaration__Group_2_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4850:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
-            // InternalSignalDSL.g:4851:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalSignalDSL.g:5437:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalSignalDSL.g:5438:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
             {
-            // InternalSignalDSL.g:4851:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
-            // InternalSignalDSL.g:4852:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalSignalDSL.g:5438:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalSignalDSL.g:5439:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
             }
-            // InternalSignalDSL.g:4853:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
-            // InternalSignalDSL.g:4853:3: rule__XImportDeclaration__Alternatives_2_0_3
+            // InternalSignalDSL.g:5440:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalSignalDSL.g:5440:3: rule__XImportDeclaration__Alternatives_2_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Alternatives_2_0_3();
@@ -17423,16 +19347,16 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0"
-    // InternalSignalDSL.g:4862:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
+    // InternalSignalDSL.g:5449:1: rule__XImportDeclaration__Group_2_3__0 : rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 ;
     public final void rule__XImportDeclaration__Group_2_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4866:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
-            // InternalSignalDSL.g:4867:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            // InternalSignalDSL.g:5453:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalSignalDSL.g:5454:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__XImportDeclaration__Group_2_3__0__Impl();
 
             state._fsp--;
@@ -17461,23 +19385,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__0__Impl"
-    // InternalSignalDSL.g:4874:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
+    // InternalSignalDSL.g:5461:1: rule__XImportDeclaration__Group_2_3__0__Impl : ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) ;
     public final void rule__XImportDeclaration__Group_2_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4878:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
-            // InternalSignalDSL.g:4879:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalSignalDSL.g:5465:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalSignalDSL.g:5466:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
             {
-            // InternalSignalDSL.g:4879:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
-            // InternalSignalDSL.g:4880:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalSignalDSL.g:5466:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalSignalDSL.g:5467:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
             }
-            // InternalSignalDSL.g:4881:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
-            // InternalSignalDSL.g:4881:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
+            // InternalSignalDSL.g:5468:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalSignalDSL.g:5468:3: rule__XImportDeclaration__FqnImportAssignment_2_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__FqnImportAssignment_2_3_0();
@@ -17512,14 +19436,14 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1"
-    // InternalSignalDSL.g:4889:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
+    // InternalSignalDSL.g:5476:1: rule__XImportDeclaration__Group_2_3__1 : rule__XImportDeclaration__Group_2_3__1__Impl ;
     public final void rule__XImportDeclaration__Group_2_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4893:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
-            // InternalSignalDSL.g:4894:2: rule__XImportDeclaration__Group_2_3__1__Impl
+            // InternalSignalDSL.g:5480:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalSignalDSL.g:5481:2: rule__XImportDeclaration__Group_2_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__Group_2_3__1__Impl();
@@ -17545,23 +19469,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__Group_2_3__1__Impl"
-    // InternalSignalDSL.g:4900:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
+    // InternalSignalDSL.g:5487:1: rule__XImportDeclaration__Group_2_3__1__Impl : ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) ;
     public final void rule__XImportDeclaration__Group_2_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4904:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
-            // InternalSignalDSL.g:4905:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalSignalDSL.g:5491:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalSignalDSL.g:5492:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
             {
-            // InternalSignalDSL.g:4905:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
-            // InternalSignalDSL.g:4906:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalSignalDSL.g:5492:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalSignalDSL.g:5493:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
             }
-            // InternalSignalDSL.g:4907:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
-            // InternalSignalDSL.g:4907:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
+            // InternalSignalDSL.g:5494:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalSignalDSL.g:5494:3: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1();
@@ -17596,14 +19520,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0"
-    // InternalSignalDSL.g:4916:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
+    // InternalSignalDSL.g:5503:1: rule__XAnnotation__Group__0 : rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 ;
     public final void rule__XAnnotation__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4920:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
-            // InternalSignalDSL.g:4921:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            // InternalSignalDSL.g:5507:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalSignalDSL.g:5508:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
             {
             pushFollow(FOLLOW_30);
             rule__XAnnotation__Group__0__Impl();
@@ -17634,23 +19558,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__0__Impl"
-    // InternalSignalDSL.g:4928:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:5515:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
     public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4932:1: ( ( () ) )
-            // InternalSignalDSL.g:4933:1: ( () )
+            // InternalSignalDSL.g:5519:1: ( ( () ) )
+            // InternalSignalDSL.g:5520:1: ( () )
             {
-            // InternalSignalDSL.g:4933:1: ( () )
-            // InternalSignalDSL.g:4934:2: ()
+            // InternalSignalDSL.g:5520:1: ( () )
+            // InternalSignalDSL.g:5521:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
             }
-            // InternalSignalDSL.g:4935:2: ()
-            // InternalSignalDSL.g:4935:3: 
+            // InternalSignalDSL.g:5522:2: ()
+            // InternalSignalDSL.g:5522:3: 
             {
             }
 
@@ -17675,16 +19599,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1"
-    // InternalSignalDSL.g:4943:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
+    // InternalSignalDSL.g:5530:1: rule__XAnnotation__Group__1 : rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 ;
     public final void rule__XAnnotation__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4947:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
-            // InternalSignalDSL.g:4948:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            // InternalSignalDSL.g:5534:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalSignalDSL.g:5535:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__XAnnotation__Group__1__Impl();
 
             state._fsp--;
@@ -17713,22 +19637,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__1__Impl"
-    // InternalSignalDSL.g:4955:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    // InternalSignalDSL.g:5542:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
     public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4959:1: ( ( '@' ) )
-            // InternalSignalDSL.g:4960:1: ( '@' )
+            // InternalSignalDSL.g:5546:1: ( ( '@' ) )
+            // InternalSignalDSL.g:5547:1: ( '@' )
             {
-            // InternalSignalDSL.g:4960:1: ( '@' )
-            // InternalSignalDSL.g:4961:2: '@'
+            // InternalSignalDSL.g:5547:1: ( '@' )
+            // InternalSignalDSL.g:5548:2: '@'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
-            match(input,70,FOLLOW_2); if (state.failed) return ;
+            match(input,79,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
             }
@@ -17754,14 +19678,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2"
-    // InternalSignalDSL.g:4970:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
+    // InternalSignalDSL.g:5557:1: rule__XAnnotation__Group__2 : rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 ;
     public final void rule__XAnnotation__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4974:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
-            // InternalSignalDSL.g:4975:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            // InternalSignalDSL.g:5561:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalSignalDSL.g:5562:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
             {
             pushFollow(FOLLOW_31);
             rule__XAnnotation__Group__2__Impl();
@@ -17792,23 +19716,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__2__Impl"
-    // InternalSignalDSL.g:4982:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    // InternalSignalDSL.g:5569:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
     public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:4986:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
-            // InternalSignalDSL.g:4987:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalSignalDSL.g:5573:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalSignalDSL.g:5574:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
             {
-            // InternalSignalDSL.g:4987:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
-            // InternalSignalDSL.g:4988:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalSignalDSL.g:5574:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalSignalDSL.g:5575:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
             }
-            // InternalSignalDSL.g:4989:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
-            // InternalSignalDSL.g:4989:3: rule__XAnnotation__AnnotationTypeAssignment_2
+            // InternalSignalDSL.g:5576:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalSignalDSL.g:5576:3: rule__XAnnotation__AnnotationTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__AnnotationTypeAssignment_2();
@@ -17843,14 +19767,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3"
-    // InternalSignalDSL.g:4997:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    // InternalSignalDSL.g:5584:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
     public final void rule__XAnnotation__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5001:1: ( rule__XAnnotation__Group__3__Impl )
-            // InternalSignalDSL.g:5002:2: rule__XAnnotation__Group__3__Impl
+            // InternalSignalDSL.g:5588:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalSignalDSL.g:5589:2: rule__XAnnotation__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group__3__Impl();
@@ -17876,31 +19800,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group__3__Impl"
-    // InternalSignalDSL.g:5008:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:5595:1: rule__XAnnotation__Group__3__Impl : ( ( rule__XAnnotation__Group_3__0 )? ) ;
     public final void rule__XAnnotation__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5012:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
-            // InternalSignalDSL.g:5013:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalSignalDSL.g:5599:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalSignalDSL.g:5600:1: ( ( rule__XAnnotation__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:5013:1: ( ( rule__XAnnotation__Group_3__0 )? )
-            // InternalSignalDSL.g:5014:2: ( rule__XAnnotation__Group_3__0 )?
+            // InternalSignalDSL.g:5600:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalSignalDSL.g:5601:2: ( rule__XAnnotation__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:5015:2: ( rule__XAnnotation__Group_3__0 )?
-            int alt60=2;
-            int LA60_0 = input.LA(1);
+            // InternalSignalDSL.g:5602:2: ( rule__XAnnotation__Group_3__0 )?
+            int alt58=2;
+            int LA58_0 = input.LA(1);
 
-            if ( (LA60_0==71) ) {
-                alt60=1;
+            if ( (LA58_0==80) ) {
+                alt58=1;
             }
-            switch (alt60) {
+            switch (alt58) {
                 case 1 :
-                    // InternalSignalDSL.g:5015:3: rule__XAnnotation__Group_3__0
+                    // InternalSignalDSL.g:5602:3: rule__XAnnotation__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Group_3__0();
@@ -17938,14 +19862,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0"
-    // InternalSignalDSL.g:5024:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
+    // InternalSignalDSL.g:5611:1: rule__XAnnotation__Group_3__0 : rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 ;
     public final void rule__XAnnotation__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5028:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
-            // InternalSignalDSL.g:5029:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            // InternalSignalDSL.g:5615:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalSignalDSL.g:5616:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
             {
             pushFollow(FOLLOW_32);
             rule__XAnnotation__Group_3__0__Impl();
@@ -17976,25 +19900,25 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__0__Impl"
-    // InternalSignalDSL.g:5036:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:5623:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
     public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5040:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:5041:1: ( ( '(' ) )
+            // InternalSignalDSL.g:5627:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:5628:1: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:5041:1: ( ( '(' ) )
-            // InternalSignalDSL.g:5042:2: ( '(' )
+            // InternalSignalDSL.g:5628:1: ( ( '(' ) )
+            // InternalSignalDSL.g:5629:2: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
             }
-            // InternalSignalDSL.g:5043:2: ( '(' )
-            // InternalSignalDSL.g:5043:3: '('
+            // InternalSignalDSL.g:5630:2: ( '(' )
+            // InternalSignalDSL.g:5630:3: '('
             {
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -18023,14 +19947,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1"
-    // InternalSignalDSL.g:5051:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
+    // InternalSignalDSL.g:5638:1: rule__XAnnotation__Group_3__1 : rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 ;
     public final void rule__XAnnotation__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5055:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
-            // InternalSignalDSL.g:5056:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            // InternalSignalDSL.g:5642:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalSignalDSL.g:5643:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
             {
             pushFollow(FOLLOW_32);
             rule__XAnnotation__Group_3__1__Impl();
@@ -18061,31 +19985,31 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__1__Impl"
-    // InternalSignalDSL.g:5063:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
+    // InternalSignalDSL.g:5650:1: rule__XAnnotation__Group_3__1__Impl : ( ( rule__XAnnotation__Alternatives_3_1 )? ) ;
     public final void rule__XAnnotation__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5067:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
-            // InternalSignalDSL.g:5068:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:5654:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalSignalDSL.g:5655:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
             {
-            // InternalSignalDSL.g:5068:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
-            // InternalSignalDSL.g:5069:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            // InternalSignalDSL.g:5655:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:5656:2: ( rule__XAnnotation__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
             }
-            // InternalSignalDSL.g:5070:2: ( rule__XAnnotation__Alternatives_3_1 )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // InternalSignalDSL.g:5657:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
 
-            if ( ((LA61_0>=RULE_ID && LA61_0<=RULE_STRING)||LA61_0==27||(LA61_0>=34 && LA61_0<=35)||LA61_0==40||(LA61_0>=45 && LA61_0<=50)||LA61_0==60||LA61_0==64||(LA61_0>=70 && LA61_0<=71)||(LA61_0>=75 && LA61_0<=76)||LA61_0==79||LA61_0==81||(LA61_0>=85 && LA61_0<=92)||LA61_0==94||LA61_0==103) ) {
-                alt61=1;
+            if ( ((LA59_0>=RULE_ID && LA59_0<=RULE_STRING)||LA59_0==27||(LA59_0>=34 && LA59_0<=35)||LA59_0==40||(LA59_0>=45 && LA59_0<=50)||LA59_0==63||(LA59_0>=79 && LA59_0<=80)||(LA59_0>=84 && LA59_0<=85)||LA59_0==88||LA59_0==90||(LA59_0>=93 && LA59_0<=101)||LA59_0==103||LA59_0==112) ) {
+                alt59=1;
             }
-            switch (alt61) {
+            switch (alt59) {
                 case 1 :
-                    // InternalSignalDSL.g:5070:3: rule__XAnnotation__Alternatives_3_1
+                    // InternalSignalDSL.g:5657:3: rule__XAnnotation__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotation__Alternatives_3_1();
@@ -18123,14 +20047,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2"
-    // InternalSignalDSL.g:5078:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
+    // InternalSignalDSL.g:5665:1: rule__XAnnotation__Group_3__2 : rule__XAnnotation__Group_3__2__Impl ;
     public final void rule__XAnnotation__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5082:1: ( rule__XAnnotation__Group_3__2__Impl )
-            // InternalSignalDSL.g:5083:2: rule__XAnnotation__Group_3__2__Impl
+            // InternalSignalDSL.g:5669:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalSignalDSL.g:5670:2: rule__XAnnotation__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3__2__Impl();
@@ -18156,22 +20080,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3__2__Impl"
-    // InternalSignalDSL.g:5089:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:5676:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5093:1: ( ( ')' ) )
-            // InternalSignalDSL.g:5094:1: ( ')' )
+            // InternalSignalDSL.g:5680:1: ( ( ')' ) )
+            // InternalSignalDSL.g:5681:1: ( ')' )
             {
-            // InternalSignalDSL.g:5094:1: ( ')' )
-            // InternalSignalDSL.g:5095:2: ')'
+            // InternalSignalDSL.g:5681:1: ( ')' )
+            // InternalSignalDSL.g:5682:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -18197,14 +20121,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0"
-    // InternalSignalDSL.g:5105:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
+    // InternalSignalDSL.g:5692:1: rule__XAnnotation__Group_3_1_0__0 : rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 ;
     public final void rule__XAnnotation__Group_3_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5109:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
-            // InternalSignalDSL.g:5110:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            // InternalSignalDSL.g:5696:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalSignalDSL.g:5697:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
             {
             pushFollow(FOLLOW_33);
             rule__XAnnotation__Group_3_1_0__0__Impl();
@@ -18235,23 +20159,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__0__Impl"
-    // InternalSignalDSL.g:5117:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
+    // InternalSignalDSL.g:5704:1: rule__XAnnotation__Group_3_1_0__0__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) ;
     public final void rule__XAnnotation__Group_3_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5121:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
-            // InternalSignalDSL.g:5122:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalSignalDSL.g:5708:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalSignalDSL.g:5709:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
             {
-            // InternalSignalDSL.g:5122:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
-            // InternalSignalDSL.g:5123:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalSignalDSL.g:5709:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalSignalDSL.g:5710:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
             }
-            // InternalSignalDSL.g:5124:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
-            // InternalSignalDSL.g:5124:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
+            // InternalSignalDSL.g:5711:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalSignalDSL.g:5711:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0();
@@ -18286,14 +20210,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1"
-    // InternalSignalDSL.g:5132:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
+    // InternalSignalDSL.g:5719:1: rule__XAnnotation__Group_3_1_0__1 : rule__XAnnotation__Group_3_1_0__1__Impl ;
     public final void rule__XAnnotation__Group_3_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5136:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
-            // InternalSignalDSL.g:5137:2: rule__XAnnotation__Group_3_1_0__1__Impl
+            // InternalSignalDSL.g:5723:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalSignalDSL.g:5724:2: rule__XAnnotation__Group_3_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0__1__Impl();
@@ -18319,35 +20243,35 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0__1__Impl"
-    // InternalSignalDSL.g:5143:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
+    // InternalSignalDSL.g:5730:1: rule__XAnnotation__Group_3_1_0__1__Impl : ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) ;
     public final void rule__XAnnotation__Group_3_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5147:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
-            // InternalSignalDSL.g:5148:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalSignalDSL.g:5734:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalSignalDSL.g:5735:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
             {
-            // InternalSignalDSL.g:5148:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
-            // InternalSignalDSL.g:5149:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            // InternalSignalDSL.g:5735:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalSignalDSL.g:5736:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
             }
-            // InternalSignalDSL.g:5150:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
-            loop62:
+            // InternalSignalDSL.g:5737:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            loop60:
             do {
-                int alt62=2;
-                int LA62_0 = input.LA(1);
+                int alt60=2;
+                int LA60_0 = input.LA(1);
 
-                if ( (LA62_0==73) ) {
-                    alt62=1;
+                if ( (LA60_0==82) ) {
+                    alt60=1;
                 }
 
 
-                switch (alt62) {
+                switch (alt60) {
             	case 1 :
-            	    // InternalSignalDSL.g:5150:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    // InternalSignalDSL.g:5737:3: rule__XAnnotation__Group_3_1_0_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XAnnotation__Group_3_1_0_1__0();
@@ -18359,7 +20283,7 @@
             	    break;
 
             	default :
-            	    break loop62;
+            	    break loop60;
                 }
             } while (true);
 
@@ -18388,16 +20312,16 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0"
-    // InternalSignalDSL.g:5159:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
+    // InternalSignalDSL.g:5746:1: rule__XAnnotation__Group_3_1_0_1__0 : rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 ;
     public final void rule__XAnnotation__Group_3_1_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5163:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
-            // InternalSignalDSL.g:5164:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            // InternalSignalDSL.g:5750:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalSignalDSL.g:5751:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__XAnnotation__Group_3_1_0_1__0__Impl();
 
             state._fsp--;
@@ -18426,22 +20350,22 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0__Impl"
-    // InternalSignalDSL.g:5171:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:5758:1: rule__XAnnotation__Group_3_1_0_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotation__Group_3_1_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5175:1: ( ( ',' ) )
-            // InternalSignalDSL.g:5176:1: ( ',' )
+            // InternalSignalDSL.g:5762:1: ( ( ',' ) )
+            // InternalSignalDSL.g:5763:1: ( ',' )
             {
-            // InternalSignalDSL.g:5176:1: ( ',' )
-            // InternalSignalDSL.g:5177:2: ','
+            // InternalSignalDSL.g:5763:1: ( ',' )
+            // InternalSignalDSL.g:5764:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
             }
@@ -18467,14 +20391,14 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1"
-    // InternalSignalDSL.g:5186:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
+    // InternalSignalDSL.g:5773:1: rule__XAnnotation__Group_3_1_0_1__1 : rule__XAnnotation__Group_3_1_0_1__1__Impl ;
     public final void rule__XAnnotation__Group_3_1_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5190:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
-            // InternalSignalDSL.g:5191:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
+            // InternalSignalDSL.g:5777:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalSignalDSL.g:5778:2: rule__XAnnotation__Group_3_1_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__Group_3_1_0_1__1__Impl();
@@ -18500,23 +20424,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__1__Impl"
-    // InternalSignalDSL.g:5197:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
+    // InternalSignalDSL.g:5784:1: rule__XAnnotation__Group_3_1_0_1__1__Impl : ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) ;
     public final void rule__XAnnotation__Group_3_1_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5201:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
-            // InternalSignalDSL.g:5202:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalSignalDSL.g:5788:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalSignalDSL.g:5789:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
             {
-            // InternalSignalDSL.g:5202:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
-            // InternalSignalDSL.g:5203:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalSignalDSL.g:5789:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalSignalDSL.g:5790:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
             }
-            // InternalSignalDSL.g:5204:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
-            // InternalSignalDSL.g:5204:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
+            // InternalSignalDSL.g:5791:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalSignalDSL.g:5791:3: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1();
@@ -18551,14 +20475,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0"
-    // InternalSignalDSL.g:5213:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
+    // InternalSignalDSL.g:5800:1: rule__XAnnotationElementValuePair__Group__0 : rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 ;
     public final void rule__XAnnotationElementValuePair__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5217:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
-            // InternalSignalDSL.g:5218:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            // InternalSignalDSL.g:5804:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalSignalDSL.g:5805:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
             {
             pushFollow(FOLLOW_35);
             rule__XAnnotationElementValuePair__Group__0__Impl();
@@ -18589,23 +20513,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__0__Impl"
-    // InternalSignalDSL.g:5225:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:5812:1: rule__XAnnotationElementValuePair__Group__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5229:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
-            // InternalSignalDSL.g:5230:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalSignalDSL.g:5816:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalSignalDSL.g:5817:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:5230:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
-            // InternalSignalDSL.g:5231:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalSignalDSL.g:5817:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalSignalDSL.g:5818:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:5232:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
-            // InternalSignalDSL.g:5232:3: rule__XAnnotationElementValuePair__Group_0__0
+            // InternalSignalDSL.g:5819:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalSignalDSL.g:5819:3: rule__XAnnotationElementValuePair__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0();
@@ -18640,14 +20564,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1"
-    // InternalSignalDSL.g:5240:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    // InternalSignalDSL.g:5827:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
     public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5244:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
-            // InternalSignalDSL.g:5245:2: rule__XAnnotationElementValuePair__Group__1__Impl
+            // InternalSignalDSL.g:5831:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalSignalDSL.g:5832:2: rule__XAnnotationElementValuePair__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group__1__Impl();
@@ -18673,23 +20597,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group__1__Impl"
-    // InternalSignalDSL.g:5251:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    // InternalSignalDSL.g:5838:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5255:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
-            // InternalSignalDSL.g:5256:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:5842:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalSignalDSL.g:5843:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
             {
-            // InternalSignalDSL.g:5256:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
-            // InternalSignalDSL.g:5257:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalSignalDSL.g:5843:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:5844:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
             }
-            // InternalSignalDSL.g:5258:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
-            // InternalSignalDSL.g:5258:3: rule__XAnnotationElementValuePair__ValueAssignment_1
+            // InternalSignalDSL.g:5845:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalSignalDSL.g:5845:3: rule__XAnnotationElementValuePair__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ValueAssignment_1();
@@ -18724,14 +20648,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0"
-    // InternalSignalDSL.g:5267:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
+    // InternalSignalDSL.g:5854:1: rule__XAnnotationElementValuePair__Group_0__0 : rule__XAnnotationElementValuePair__Group_0__0__Impl ;
     public final void rule__XAnnotationElementValuePair__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5271:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
-            // InternalSignalDSL.g:5272:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
+            // InternalSignalDSL.g:5858:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalSignalDSL.g:5859:2: rule__XAnnotationElementValuePair__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0__0__Impl();
@@ -18757,23 +20681,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0__0__Impl"
-    // InternalSignalDSL.g:5278:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:5865:1: rule__XAnnotationElementValuePair__Group_0__0__Impl : ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5282:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:5283:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalSignalDSL.g:5869:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:5870:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5283:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
-            // InternalSignalDSL.g:5284:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalSignalDSL.g:5870:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalSignalDSL.g:5871:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:5285:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
-            // InternalSignalDSL.g:5285:3: rule__XAnnotationElementValuePair__Group_0_0__0
+            // InternalSignalDSL.g:5872:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalSignalDSL.g:5872:3: rule__XAnnotationElementValuePair__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__0();
@@ -18808,14 +20732,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0"
-    // InternalSignalDSL.g:5294:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
+    // InternalSignalDSL.g:5881:1: rule__XAnnotationElementValuePair__Group_0_0__0 : rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5298:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
-            // InternalSignalDSL.g:5299:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            // InternalSignalDSL.g:5885:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalSignalDSL.g:5886:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
             {
             pushFollow(FOLLOW_36);
             rule__XAnnotationElementValuePair__Group_0_0__0__Impl();
@@ -18846,23 +20770,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:5306:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
+    // InternalSignalDSL.g:5893:1: rule__XAnnotationElementValuePair__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5310:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
-            // InternalSignalDSL.g:5311:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalSignalDSL.g:5897:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalSignalDSL.g:5898:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
             {
-            // InternalSignalDSL.g:5311:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
-            // InternalSignalDSL.g:5312:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalSignalDSL.g:5898:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalSignalDSL.g:5899:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
             }
-            // InternalSignalDSL.g:5313:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
-            // InternalSignalDSL.g:5313:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
+            // InternalSignalDSL.g:5900:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalSignalDSL.g:5900:3: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__ElementAssignment_0_0_0();
@@ -18897,14 +20821,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1"
-    // InternalSignalDSL.g:5321:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
+    // InternalSignalDSL.g:5908:1: rule__XAnnotationElementValuePair__Group_0_0__1 : rule__XAnnotationElementValuePair__Group_0_0__1__Impl ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5325:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
-            // InternalSignalDSL.g:5326:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
+            // InternalSignalDSL.g:5912:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalSignalDSL.g:5913:2: rule__XAnnotationElementValuePair__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValuePair__Group_0_0__1__Impl();
@@ -18930,17 +20854,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:5332:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:5919:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
     public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5336:1: ( ( '=' ) )
-            // InternalSignalDSL.g:5337:1: ( '=' )
+            // InternalSignalDSL.g:5923:1: ( ( '=' ) )
+            // InternalSignalDSL.g:5924:1: ( '=' )
             {
-            // InternalSignalDSL.g:5337:1: ( '=' )
-            // InternalSignalDSL.g:5338:2: '='
+            // InternalSignalDSL.g:5924:1: ( '=' )
+            // InternalSignalDSL.g:5925:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1()); 
@@ -18971,14 +20895,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0"
-    // InternalSignalDSL.g:5348:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
+    // InternalSignalDSL.g:5935:1: rule__XAnnotationElementValueOrCommaList__Group_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5352:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
-            // InternalSignalDSL.g:5353:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            // InternalSignalDSL.g:5939:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalSignalDSL.g:5940:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
             {
             pushFollow(FOLLOW_37);
             rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl();
@@ -19009,23 +20933,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl"
-    // InternalSignalDSL.g:5360:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:5947:1: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5364:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:5365:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalSignalDSL.g:5951:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:5952:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5365:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
-            // InternalSignalDSL.g:5366:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalSignalDSL.g:5952:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalSignalDSL.g:5953:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:5367:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
-            // InternalSignalDSL.g:5367:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
+            // InternalSignalDSL.g:5954:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalSignalDSL.g:5954:3: rule__XAnnotationElementValueOrCommaList__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0();
@@ -19060,14 +20984,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1"
-    // InternalSignalDSL.g:5375:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
+    // InternalSignalDSL.g:5962:1: rule__XAnnotationElementValueOrCommaList__Group_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5379:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
-            // InternalSignalDSL.g:5380:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            // InternalSignalDSL.g:5966:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalSignalDSL.g:5967:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
             {
             pushFollow(FOLLOW_37);
             rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl();
@@ -19098,31 +21022,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl"
-    // InternalSignalDSL.g:5387:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
+    // InternalSignalDSL.g:5974:1: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5391:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
-            // InternalSignalDSL.g:5392:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalSignalDSL.g:5978:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalSignalDSL.g:5979:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
             {
-            // InternalSignalDSL.g:5392:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
-            // InternalSignalDSL.g:5393:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            // InternalSignalDSL.g:5979:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalSignalDSL.g:5980:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:5394:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            // InternalSignalDSL.g:5981:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
 
-            if ( ((LA63_0>=RULE_ID && LA63_0<=RULE_STRING)||LA63_0==27||(LA63_0>=34 && LA63_0<=35)||LA63_0==40||(LA63_0>=45 && LA63_0<=50)||LA63_0==60||LA63_0==64||(LA63_0>=70 && LA63_0<=71)||(LA63_0>=75 && LA63_0<=76)||LA63_0==79||LA63_0==81||(LA63_0>=85 && LA63_0<=92)||LA63_0==94||LA63_0==103) ) {
-                alt63=1;
+            if ( ((LA61_0>=RULE_ID && LA61_0<=RULE_STRING)||LA61_0==27||(LA61_0>=34 && LA61_0<=35)||LA61_0==40||(LA61_0>=45 && LA61_0<=50)||LA61_0==63||(LA61_0>=79 && LA61_0<=80)||(LA61_0>=84 && LA61_0<=85)||LA61_0==88||LA61_0==90||(LA61_0>=93 && LA61_0<=101)||LA61_0==103||LA61_0==112) ) {
+                alt61=1;
             }
-            switch (alt63) {
+            switch (alt61) {
                 case 1 :
-                    // InternalSignalDSL.g:5394:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
+                    // InternalSignalDSL.g:5981:3: rule__XAnnotationElementValueOrCommaList__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_0_1__0();
@@ -19160,14 +21084,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2"
-    // InternalSignalDSL.g:5402:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
+    // InternalSignalDSL.g:5989:1: rule__XAnnotationElementValueOrCommaList__Group_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5406:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
-            // InternalSignalDSL.g:5407:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
+            // InternalSignalDSL.g:5993:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalSignalDSL.g:5994:2: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl();
@@ -19193,22 +21117,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl"
-    // InternalSignalDSL.g:5413:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:6000:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5417:1: ( ( ']' ) )
-            // InternalSignalDSL.g:5418:1: ( ']' )
+            // InternalSignalDSL.g:6004:1: ( ( ']' ) )
+            // InternalSignalDSL.g:6005:1: ( ']' )
             {
-            // InternalSignalDSL.g:5418:1: ( ']' )
-            // InternalSignalDSL.g:5419:2: ']'
+            // InternalSignalDSL.g:6005:1: ( ']' )
+            // InternalSignalDSL.g:6006:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -19234,14 +21158,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0"
-    // InternalSignalDSL.g:5429:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
+    // InternalSignalDSL.g:6016:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5433:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
-            // InternalSignalDSL.g:5434:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
+            // InternalSignalDSL.g:6020:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalSignalDSL.g:6021:2: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl();
@@ -19267,23 +21191,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:5440:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6027:1: rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5444:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:5445:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6031:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:6032:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5445:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
-            // InternalSignalDSL.g:5446:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6032:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6033:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
             }
-            // InternalSignalDSL.g:5447:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
-            // InternalSignalDSL.g:5447:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
+            // InternalSignalDSL.g:6034:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6034:3: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0();
@@ -19318,14 +21242,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0"
-    // InternalSignalDSL.g:5456:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
+    // InternalSignalDSL.g:6043:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5460:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
-            // InternalSignalDSL.g:5461:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            // InternalSignalDSL.g:6047:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalSignalDSL.g:6048:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
             {
             pushFollow(FOLLOW_38);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl();
@@ -19356,23 +21280,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl"
-    // InternalSignalDSL.g:5468:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6055:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5472:1: ( ( () ) )
-            // InternalSignalDSL.g:5473:1: ( () )
+            // InternalSignalDSL.g:6059:1: ( ( () ) )
+            // InternalSignalDSL.g:6060:1: ( () )
             {
-            // InternalSignalDSL.g:5473:1: ( () )
-            // InternalSignalDSL.g:5474:2: ()
+            // InternalSignalDSL.g:6060:1: ( () )
+            // InternalSignalDSL.g:6061:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:5475:2: ()
-            // InternalSignalDSL.g:5475:3: 
+            // InternalSignalDSL.g:6062:2: ()
+            // InternalSignalDSL.g:6062:3: 
             {
             }
 
@@ -19397,14 +21321,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1"
-    // InternalSignalDSL.g:5483:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
+    // InternalSignalDSL.g:6070:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5487:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
-            // InternalSignalDSL.g:5488:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            // InternalSignalDSL.g:6074:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalSignalDSL.g:6075:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
             {
             pushFollow(FOLLOW_39);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl();
@@ -19435,22 +21359,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl"
-    // InternalSignalDSL.g:5495:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:6082:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl : ( '#' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5499:1: ( ( '#' ) )
-            // InternalSignalDSL.g:5500:1: ( '#' )
+            // InternalSignalDSL.g:6086:1: ( ( '#' ) )
+            // InternalSignalDSL.g:6087:1: ( '#' )
             {
-            // InternalSignalDSL.g:5500:1: ( '#' )
-            // InternalSignalDSL.g:5501:2: '#'
+            // InternalSignalDSL.g:6087:1: ( '#' )
+            // InternalSignalDSL.g:6088:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,84,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -19476,14 +21400,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2"
-    // InternalSignalDSL.g:5510:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
+    // InternalSignalDSL.g:6097:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 : rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5514:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
-            // InternalSignalDSL.g:5515:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
+            // InternalSignalDSL.g:6101:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalSignalDSL.g:6102:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl();
@@ -19509,22 +21433,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl"
-    // InternalSignalDSL.g:5521:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:6108:1: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl : ( '[' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5525:1: ( ( '[' ) )
-            // InternalSignalDSL.g:5526:1: ( '[' )
+            // InternalSignalDSL.g:6112:1: ( ( '[' ) )
+            // InternalSignalDSL.g:6113:1: ( '[' )
             {
-            // InternalSignalDSL.g:5526:1: ( '[' )
-            // InternalSignalDSL.g:5527:2: '['
+            // InternalSignalDSL.g:6113:1: ( '[' )
+            // InternalSignalDSL.g:6114:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -19550,14 +21474,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0"
-    // InternalSignalDSL.g:5537:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
+    // InternalSignalDSL.g:6124:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5541:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
-            // InternalSignalDSL.g:5542:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            // InternalSignalDSL.g:6128:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalSignalDSL.g:6129:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl();
@@ -19588,23 +21512,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:5549:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
+    // InternalSignalDSL.g:6136:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5553:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
-            // InternalSignalDSL.g:5554:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:6140:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalSignalDSL.g:6141:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
             {
-            // InternalSignalDSL.g:5554:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
-            // InternalSignalDSL.g:5555:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:6141:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:6142:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalSignalDSL.g:5556:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
-            // InternalSignalDSL.g:5556:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
+            // InternalSignalDSL.g:6143:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:6143:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0();
@@ -19639,14 +21563,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1"
-    // InternalSignalDSL.g:5564:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
+    // InternalSignalDSL.g:6151:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5568:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
-            // InternalSignalDSL.g:5569:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
+            // InternalSignalDSL.g:6155:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalSignalDSL.g:6156:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl();
@@ -19672,35 +21596,35 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl"
-    // InternalSignalDSL.g:5575:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:6162:1: rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5579:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:5580:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:6166:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:6167:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:5580:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
-            // InternalSignalDSL.g:5581:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            // InternalSignalDSL.g:6167:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:6168:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
             }
-            // InternalSignalDSL.g:5582:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
-            loop64:
+            // InternalSignalDSL.g:6169:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            loop62:
             do {
-                int alt64=2;
-                int LA64_0 = input.LA(1);
+                int alt62=2;
+                int LA62_0 = input.LA(1);
 
-                if ( (LA64_0==73) ) {
-                    alt64=1;
+                if ( (LA62_0==82) ) {
+                    alt62=1;
                 }
 
 
-                switch (alt64) {
+                switch (alt62) {
             	case 1 :
-            	    // InternalSignalDSL.g:5582:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    // InternalSignalDSL.g:6169:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
@@ -19712,7 +21636,7 @@
             	    break;
 
             	default :
-            	    break loop64;
+            	    break loop62;
                 }
             } while (true);
 
@@ -19741,14 +21665,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0"
-    // InternalSignalDSL.g:5591:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
+    // InternalSignalDSL.g:6178:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5595:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
-            // InternalSignalDSL.g:5596:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            // InternalSignalDSL.g:6182:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalSignalDSL.g:6183:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl();
@@ -19779,22 +21703,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl"
-    // InternalSignalDSL.g:5603:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:6190:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5607:1: ( ( ',' ) )
-            // InternalSignalDSL.g:5608:1: ( ',' )
+            // InternalSignalDSL.g:6194:1: ( ( ',' ) )
+            // InternalSignalDSL.g:6195:1: ( ',' )
             {
-            // InternalSignalDSL.g:5608:1: ( ',' )
-            // InternalSignalDSL.g:5609:2: ','
+            // InternalSignalDSL.g:6195:1: ( ',' )
+            // InternalSignalDSL.g:6196:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -19820,14 +21744,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1"
-    // InternalSignalDSL.g:5618:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:6205:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5622:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
-            // InternalSignalDSL.g:5623:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
+            // InternalSignalDSL.g:6209:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalSignalDSL.g:6210:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl();
@@ -19853,23 +21777,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl"
-    // InternalSignalDSL.g:5629:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:6216:1: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5633:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:5634:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:6220:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:6221:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:5634:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
-            // InternalSignalDSL.g:5635:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:6221:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:6222:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:5636:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
-            // InternalSignalDSL.g:5636:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
+            // InternalSignalDSL.g:6223:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:6223:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1();
@@ -19904,14 +21828,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0"
-    // InternalSignalDSL.g:5645:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
+    // InternalSignalDSL.g:6232:1: rule__XAnnotationElementValueOrCommaList__Group_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5649:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
-            // InternalSignalDSL.g:5650:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            // InternalSignalDSL.g:6236:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalSignalDSL.g:6237:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl();
@@ -19942,17 +21866,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl"
-    // InternalSignalDSL.g:5657:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:6244:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5661:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:5662:1: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:6248:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:6249:1: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:5662:1: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:5663:2: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:6249:1: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:6250:2: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
@@ -19987,14 +21911,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1"
-    // InternalSignalDSL.g:5672:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
+    // InternalSignalDSL.g:6259:1: rule__XAnnotationElementValueOrCommaList__Group_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5676:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
-            // InternalSignalDSL.g:5677:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
+            // InternalSignalDSL.g:6263:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalSignalDSL.g:6264:2: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl();
@@ -20020,31 +21944,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl"
-    // InternalSignalDSL.g:5683:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
+    // InternalSignalDSL.g:6270:1: rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5687:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
-            // InternalSignalDSL.g:5688:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalSignalDSL.g:6274:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalSignalDSL.g:6275:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
             {
-            // InternalSignalDSL.g:5688:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
-            // InternalSignalDSL.g:5689:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            // InternalSignalDSL.g:6275:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalSignalDSL.g:6276:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
             }
-            // InternalSignalDSL.g:5690:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
-            int alt65=2;
-            int LA65_0 = input.LA(1);
+            // InternalSignalDSL.g:6277:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
 
-            if ( (LA65_0==73) ) {
-                alt65=1;
+            if ( (LA63_0==82) ) {
+                alt63=1;
             }
-            switch (alt65) {
+            switch (alt63) {
                 case 1 :
-                    // InternalSignalDSL.g:5690:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
+                    // InternalSignalDSL.g:6277:3: rule__XAnnotationElementValueOrCommaList__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValueOrCommaList__Group_1_1__0();
@@ -20082,14 +22006,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0"
-    // InternalSignalDSL.g:5699:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
+    // InternalSignalDSL.g:6286:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5703:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
-            // InternalSignalDSL.g:5704:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            // InternalSignalDSL.g:6290:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalSignalDSL.g:6291:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl();
@@ -20120,23 +22044,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:5711:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6298:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5715:1: ( ( () ) )
-            // InternalSignalDSL.g:5716:1: ( () )
+            // InternalSignalDSL.g:6302:1: ( ( () ) )
+            // InternalSignalDSL.g:6303:1: ( () )
             {
-            // InternalSignalDSL.g:5716:1: ( () )
-            // InternalSignalDSL.g:5717:2: ()
+            // InternalSignalDSL.g:6303:1: ( () )
+            // InternalSignalDSL.g:6304:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
             }
-            // InternalSignalDSL.g:5718:2: ()
-            // InternalSignalDSL.g:5718:3: 
+            // InternalSignalDSL.g:6305:2: ()
+            // InternalSignalDSL.g:6305:3: 
             {
             }
 
@@ -20161,14 +22085,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1"
-    // InternalSignalDSL.g:5726:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:6313:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5730:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:5731:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
+            // InternalSignalDSL.g:6317:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:6318:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl();
@@ -20194,26 +22118,26 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:5737:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
+    // InternalSignalDSL.g:6324:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl : ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5741:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
-            // InternalSignalDSL.g:5742:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:6328:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalSignalDSL.g:6329:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
             {
-            // InternalSignalDSL.g:5742:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:5743:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalSignalDSL.g:6329:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:6330:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:5743:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
-            // InternalSignalDSL.g:5744:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalSignalDSL.g:6330:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalSignalDSL.g:6331:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalSignalDSL.g:5745:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
-            // InternalSignalDSL.g:5745:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            // InternalSignalDSL.g:6332:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalSignalDSL.g:6332:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             {
             pushFollow(FOLLOW_34);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
@@ -20229,26 +22153,26 @@
 
             }
 
-            // InternalSignalDSL.g:5748:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
-            // InternalSignalDSL.g:5749:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            // InternalSignalDSL.g:6335:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalSignalDSL.g:6336:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
             }
-            // InternalSignalDSL.g:5750:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
-            loop66:
+            // InternalSignalDSL.g:6337:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            loop64:
             do {
-                int alt66=2;
-                int LA66_0 = input.LA(1);
+                int alt64=2;
+                int LA64_0 = input.LA(1);
 
-                if ( (LA66_0==73) ) {
-                    alt66=1;
+                if ( (LA64_0==82) ) {
+                    alt64=1;
                 }
 
 
-                switch (alt66) {
+                switch (alt64) {
             	case 1 :
-            	    // InternalSignalDSL.g:5750:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    // InternalSignalDSL.g:6337:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
@@ -20260,7 +22184,7 @@
             	    break;
 
             	default :
-            	    break loop66;
+            	    break loop64;
                 }
             } while (true);
 
@@ -20292,14 +22216,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0"
-    // InternalSignalDSL.g:5760:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
+    // InternalSignalDSL.g:6347:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5764:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
-            // InternalSignalDSL.g:5765:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            // InternalSignalDSL.g:6351:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalSignalDSL.g:6352:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl();
@@ -20330,22 +22254,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl"
-    // InternalSignalDSL.g:5772:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:6359:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5776:1: ( ( ',' ) )
-            // InternalSignalDSL.g:5777:1: ( ',' )
+            // InternalSignalDSL.g:6363:1: ( ( ',' ) )
+            // InternalSignalDSL.g:6364:1: ( ',' )
             {
-            // InternalSignalDSL.g:5777:1: ( ',' )
-            // InternalSignalDSL.g:5778:2: ','
+            // InternalSignalDSL.g:6364:1: ( ',' )
+            // InternalSignalDSL.g:6365:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
             }
@@ -20371,14 +22295,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1"
-    // InternalSignalDSL.g:5787:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:6374:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 : rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5791:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
-            // InternalSignalDSL.g:5792:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
+            // InternalSignalDSL.g:6378:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalSignalDSL.g:6379:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl();
@@ -20404,23 +22328,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl"
-    // InternalSignalDSL.g:5798:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:6385:1: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl : ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5802:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:5803:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:6389:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:6390:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:5803:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
-            // InternalSignalDSL.g:5804:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:6390:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:6391:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:5805:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
-            // InternalSignalDSL.g:5805:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
+            // InternalSignalDSL.g:6392:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:6392:3: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1();
@@ -20455,14 +22379,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0"
-    // InternalSignalDSL.g:5814:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
+    // InternalSignalDSL.g:6401:1: rule__XAnnotationElementValue__Group_0__0 : rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 ;
     public final void rule__XAnnotationElementValue__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5818:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
-            // InternalSignalDSL.g:5819:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            // InternalSignalDSL.g:6405:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalSignalDSL.g:6406:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
             {
             pushFollow(FOLLOW_37);
             rule__XAnnotationElementValue__Group_0__0__Impl();
@@ -20493,23 +22417,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__0__Impl"
-    // InternalSignalDSL.g:5826:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6413:1: rule__XAnnotationElementValue__Group_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5830:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:5831:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6417:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:6418:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5831:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
-            // InternalSignalDSL.g:5832:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalSignalDSL.g:6418:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalSignalDSL.g:6419:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:5833:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
-            // InternalSignalDSL.g:5833:3: rule__XAnnotationElementValue__Group_0_0__0
+            // InternalSignalDSL.g:6420:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalSignalDSL.g:6420:3: rule__XAnnotationElementValue__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0();
@@ -20544,14 +22468,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1"
-    // InternalSignalDSL.g:5841:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
+    // InternalSignalDSL.g:6428:1: rule__XAnnotationElementValue__Group_0__1 : rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 ;
     public final void rule__XAnnotationElementValue__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5845:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
-            // InternalSignalDSL.g:5846:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            // InternalSignalDSL.g:6432:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalSignalDSL.g:6433:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
             {
             pushFollow(FOLLOW_37);
             rule__XAnnotationElementValue__Group_0__1__Impl();
@@ -20582,31 +22506,31 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__1__Impl"
-    // InternalSignalDSL.g:5853:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
+    // InternalSignalDSL.g:6440:1: rule__XAnnotationElementValue__Group_0__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) ;
     public final void rule__XAnnotationElementValue__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5857:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
-            // InternalSignalDSL.g:5858:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalSignalDSL.g:6444:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalSignalDSL.g:6445:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
             {
-            // InternalSignalDSL.g:5858:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
-            // InternalSignalDSL.g:5859:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            // InternalSignalDSL.g:6445:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalSignalDSL.g:6446:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:5860:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
-            int alt67=2;
-            int LA67_0 = input.LA(1);
+            // InternalSignalDSL.g:6447:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
 
-            if ( ((LA67_0>=RULE_ID && LA67_0<=RULE_STRING)||LA67_0==27||(LA67_0>=34 && LA67_0<=35)||LA67_0==40||(LA67_0>=45 && LA67_0<=50)||LA67_0==60||LA67_0==64||(LA67_0>=70 && LA67_0<=71)||(LA67_0>=75 && LA67_0<=76)||LA67_0==79||LA67_0==81||(LA67_0>=85 && LA67_0<=92)||LA67_0==94||LA67_0==103) ) {
-                alt67=1;
+            if ( ((LA65_0>=RULE_ID && LA65_0<=RULE_STRING)||LA65_0==27||(LA65_0>=34 && LA65_0<=35)||LA65_0==40||(LA65_0>=45 && LA65_0<=50)||LA65_0==63||(LA65_0>=79 && LA65_0<=80)||(LA65_0>=84 && LA65_0<=85)||LA65_0==88||LA65_0==90||(LA65_0>=93 && LA65_0<=101)||LA65_0==103||LA65_0==112) ) {
+                alt65=1;
             }
-            switch (alt67) {
+            switch (alt65) {
                 case 1 :
-                    // InternalSignalDSL.g:5860:3: rule__XAnnotationElementValue__Group_0_1__0
+                    // InternalSignalDSL.g:6447:3: rule__XAnnotationElementValue__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAnnotationElementValue__Group_0_1__0();
@@ -20644,14 +22568,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2"
-    // InternalSignalDSL.g:5868:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
+    // InternalSignalDSL.g:6455:1: rule__XAnnotationElementValue__Group_0__2 : rule__XAnnotationElementValue__Group_0__2__Impl ;
     public final void rule__XAnnotationElementValue__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5872:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
-            // InternalSignalDSL.g:5873:2: rule__XAnnotationElementValue__Group_0__2__Impl
+            // InternalSignalDSL.g:6459:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalSignalDSL.g:6460:2: rule__XAnnotationElementValue__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0__2__Impl();
@@ -20677,22 +22601,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0__2__Impl"
-    // InternalSignalDSL.g:5879:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:6466:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
     public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5883:1: ( ( ']' ) )
-            // InternalSignalDSL.g:5884:1: ( ']' )
+            // InternalSignalDSL.g:6470:1: ( ( ']' ) )
+            // InternalSignalDSL.g:6471:1: ( ']' )
             {
-            // InternalSignalDSL.g:5884:1: ( ']' )
-            // InternalSignalDSL.g:5885:2: ']'
+            // InternalSignalDSL.g:6471:1: ( ']' )
+            // InternalSignalDSL.g:6472:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
             }
@@ -20718,14 +22642,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0"
-    // InternalSignalDSL.g:5895:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
+    // InternalSignalDSL.g:6482:1: rule__XAnnotationElementValue__Group_0_0__0 : rule__XAnnotationElementValue__Group_0_0__0__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5899:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
-            // InternalSignalDSL.g:5900:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
+            // InternalSignalDSL.g:6486:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalSignalDSL.g:6487:2: rule__XAnnotationElementValue__Group_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0__0__Impl();
@@ -20751,23 +22675,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:5906:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6493:1: rule__XAnnotationElementValue__Group_0_0__0__Impl : ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5910:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:5911:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6497:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:6498:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:5911:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
-            // InternalSignalDSL.g:5912:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6498:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalSignalDSL.g:6499:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
             }
-            // InternalSignalDSL.g:5913:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
-            // InternalSignalDSL.g:5913:3: rule__XAnnotationElementValue__Group_0_0_0__0
+            // InternalSignalDSL.g:6500:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalSignalDSL.g:6500:3: rule__XAnnotationElementValue__Group_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__0();
@@ -20802,14 +22726,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0"
-    // InternalSignalDSL.g:5922:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
+    // InternalSignalDSL.g:6509:1: rule__XAnnotationElementValue__Group_0_0_0__0 : rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5926:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
-            // InternalSignalDSL.g:5927:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            // InternalSignalDSL.g:6513:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalSignalDSL.g:6514:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
             {
             pushFollow(FOLLOW_38);
             rule__XAnnotationElementValue__Group_0_0_0__0__Impl();
@@ -20840,23 +22764,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__0__Impl"
-    // InternalSignalDSL.g:5934:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6521:1: rule__XAnnotationElementValue__Group_0_0_0__0__Impl : ( () ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5938:1: ( ( () ) )
-            // InternalSignalDSL.g:5939:1: ( () )
+            // InternalSignalDSL.g:6525:1: ( ( () ) )
+            // InternalSignalDSL.g:6526:1: ( () )
             {
-            // InternalSignalDSL.g:5939:1: ( () )
-            // InternalSignalDSL.g:5940:2: ()
+            // InternalSignalDSL.g:6526:1: ( () )
+            // InternalSignalDSL.g:6527:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:5941:2: ()
-            // InternalSignalDSL.g:5941:3: 
+            // InternalSignalDSL.g:6528:2: ()
+            // InternalSignalDSL.g:6528:3: 
             {
             }
 
@@ -20881,14 +22805,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1"
-    // InternalSignalDSL.g:5949:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
+    // InternalSignalDSL.g:6536:1: rule__XAnnotationElementValue__Group_0_0_0__1 : rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5953:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
-            // InternalSignalDSL.g:5954:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            // InternalSignalDSL.g:6540:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalSignalDSL.g:6541:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
             {
             pushFollow(FOLLOW_39);
             rule__XAnnotationElementValue__Group_0_0_0__1__Impl();
@@ -20919,22 +22843,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__1__Impl"
-    // InternalSignalDSL.g:5961:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:6548:1: rule__XAnnotationElementValue__Group_0_0_0__1__Impl : ( '#' ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5965:1: ( ( '#' ) )
-            // InternalSignalDSL.g:5966:1: ( '#' )
+            // InternalSignalDSL.g:6552:1: ( ( '#' ) )
+            // InternalSignalDSL.g:6553:1: ( '#' )
             {
-            // InternalSignalDSL.g:5966:1: ( '#' )
-            // InternalSignalDSL.g:5967:2: '#'
+            // InternalSignalDSL.g:6553:1: ( '#' )
+            // InternalSignalDSL.g:6554:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,84,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
             }
@@ -20960,14 +22884,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2"
-    // InternalSignalDSL.g:5976:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
+    // InternalSignalDSL.g:6563:1: rule__XAnnotationElementValue__Group_0_0_0__2 : rule__XAnnotationElementValue__Group_0_0_0__2__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5980:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
-            // InternalSignalDSL.g:5981:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
+            // InternalSignalDSL.g:6567:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalSignalDSL.g:6568:2: rule__XAnnotationElementValue__Group_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_0_0__2__Impl();
@@ -20993,22 +22917,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_0_0__2__Impl"
-    // InternalSignalDSL.g:5987:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:6574:1: rule__XAnnotationElementValue__Group_0_0_0__2__Impl : ( '[' ) ;
     public final void rule__XAnnotationElementValue__Group_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:5991:1: ( ( '[' ) )
-            // InternalSignalDSL.g:5992:1: ( '[' )
+            // InternalSignalDSL.g:6578:1: ( ( '[' ) )
+            // InternalSignalDSL.g:6579:1: ( '[' )
             {
-            // InternalSignalDSL.g:5992:1: ( '[' )
-            // InternalSignalDSL.g:5993:2: '['
+            // InternalSignalDSL.g:6579:1: ( '[' )
+            // InternalSignalDSL.g:6580:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
             }
@@ -21034,14 +22958,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0"
-    // InternalSignalDSL.g:6003:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
+    // InternalSignalDSL.g:6590:1: rule__XAnnotationElementValue__Group_0_1__0 : rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 ;
     public final void rule__XAnnotationElementValue__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6007:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
-            // InternalSignalDSL.g:6008:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            // InternalSignalDSL.g:6594:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalSignalDSL.g:6595:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XAnnotationElementValue__Group_0_1__0__Impl();
@@ -21072,23 +22996,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:6015:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
+    // InternalSignalDSL.g:6602:1: rule__XAnnotationElementValue__Group_0_1__0__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6019:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
-            // InternalSignalDSL.g:6020:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:6606:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalSignalDSL.g:6607:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
             {
-            // InternalSignalDSL.g:6020:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
-            // InternalSignalDSL.g:6021:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:6607:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:6608:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
             }
-            // InternalSignalDSL.g:6022:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
-            // InternalSignalDSL.g:6022:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
+            // InternalSignalDSL.g:6609:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalSignalDSL.g:6609:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_0();
@@ -21123,14 +23047,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1"
-    // InternalSignalDSL.g:6030:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
+    // InternalSignalDSL.g:6617:1: rule__XAnnotationElementValue__Group_0_1__1 : rule__XAnnotationElementValue__Group_0_1__1__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6034:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
-            // InternalSignalDSL.g:6035:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
+            // InternalSignalDSL.g:6621:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalSignalDSL.g:6622:2: rule__XAnnotationElementValue__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1__1__Impl();
@@ -21156,35 +23080,35 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1__1__Impl"
-    // InternalSignalDSL.g:6041:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:6628:1: rule__XAnnotationElementValue__Group_0_1__1__Impl : ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) ;
     public final void rule__XAnnotationElementValue__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6045:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:6046:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:6632:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:6633:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:6046:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
-            // InternalSignalDSL.g:6047:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            // InternalSignalDSL.g:6633:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:6634:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
             }
-            // InternalSignalDSL.g:6048:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
-            loop68:
+            // InternalSignalDSL.g:6635:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            loop66:
             do {
-                int alt68=2;
-                int LA68_0 = input.LA(1);
+                int alt66=2;
+                int LA66_0 = input.LA(1);
 
-                if ( (LA68_0==73) ) {
-                    alt68=1;
+                if ( (LA66_0==82) ) {
+                    alt66=1;
                 }
 
 
-                switch (alt68) {
+                switch (alt66) {
             	case 1 :
-            	    // InternalSignalDSL.g:6048:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    // InternalSignalDSL.g:6635:3: rule__XAnnotationElementValue__Group_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XAnnotationElementValue__Group_0_1_1__0();
@@ -21196,7 +23120,7 @@
             	    break;
 
             	default :
-            	    break loop68;
+            	    break loop66;
                 }
             } while (true);
 
@@ -21225,14 +23149,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0"
-    // InternalSignalDSL.g:6057:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
+    // InternalSignalDSL.g:6644:1: rule__XAnnotationElementValue__Group_0_1_1__0 : rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6061:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
-            // InternalSignalDSL.g:6062:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            // InternalSignalDSL.g:6648:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalSignalDSL.g:6649:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XAnnotationElementValue__Group_0_1_1__0__Impl();
@@ -21263,22 +23187,22 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__0__Impl"
-    // InternalSignalDSL.g:6069:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:6656:1: rule__XAnnotationElementValue__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6073:1: ( ( ',' ) )
-            // InternalSignalDSL.g:6074:1: ( ',' )
+            // InternalSignalDSL.g:6660:1: ( ( ',' ) )
+            // InternalSignalDSL.g:6661:1: ( ',' )
             {
-            // InternalSignalDSL.g:6074:1: ( ',' )
-            // InternalSignalDSL.g:6075:2: ','
+            // InternalSignalDSL.g:6661:1: ( ',' )
+            // InternalSignalDSL.g:6662:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -21304,14 +23228,14 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1"
-    // InternalSignalDSL.g:6084:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:6671:1: rule__XAnnotationElementValue__Group_0_1_1__1 : rule__XAnnotationElementValue__Group_0_1_1__1__Impl ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6088:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
-            // InternalSignalDSL.g:6089:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
+            // InternalSignalDSL.g:6675:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalSignalDSL.g:6676:2: rule__XAnnotationElementValue__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__Group_0_1_1__1__Impl();
@@ -21337,23 +23261,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__Group_0_1_1__1__Impl"
-    // InternalSignalDSL.g:6095:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:6682:1: rule__XAnnotationElementValue__Group_0_1_1__1__Impl : ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) ;
     public final void rule__XAnnotationElementValue__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6099:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:6100:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:6686:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:6687:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:6100:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
-            // InternalSignalDSL.g:6101:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:6687:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:6688:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:6102:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
-            // InternalSignalDSL.g:6102:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
+            // InternalSignalDSL.g:6689:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:6689:3: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1();
@@ -21388,14 +23312,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0"
-    // InternalSignalDSL.g:6111:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
+    // InternalSignalDSL.g:6698:1: rule__XAssignment__Group_0__0 : rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 ;
     public final void rule__XAssignment__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6115:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
-            // InternalSignalDSL.g:6116:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            // InternalSignalDSL.g:6702:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalSignalDSL.g:6703:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
             {
             pushFollow(FOLLOW_40);
             rule__XAssignment__Group_0__0__Impl();
@@ -21426,23 +23350,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__0__Impl"
-    // InternalSignalDSL.g:6123:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6710:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6127:1: ( ( () ) )
-            // InternalSignalDSL.g:6128:1: ( () )
+            // InternalSignalDSL.g:6714:1: ( ( () ) )
+            // InternalSignalDSL.g:6715:1: ( () )
             {
-            // InternalSignalDSL.g:6128:1: ( () )
-            // InternalSignalDSL.g:6129:2: ()
+            // InternalSignalDSL.g:6715:1: ( () )
+            // InternalSignalDSL.g:6716:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
             }
-            // InternalSignalDSL.g:6130:2: ()
-            // InternalSignalDSL.g:6130:3: 
+            // InternalSignalDSL.g:6717:2: ()
+            // InternalSignalDSL.g:6717:3: 
             {
             }
 
@@ -21467,14 +23391,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1"
-    // InternalSignalDSL.g:6138:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
+    // InternalSignalDSL.g:6725:1: rule__XAssignment__Group_0__1 : rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 ;
     public final void rule__XAssignment__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6142:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
-            // InternalSignalDSL.g:6143:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            // InternalSignalDSL.g:6729:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalSignalDSL.g:6730:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
             {
             pushFollow(FOLLOW_36);
             rule__XAssignment__Group_0__1__Impl();
@@ -21505,23 +23429,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__1__Impl"
-    // InternalSignalDSL.g:6150:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
+    // InternalSignalDSL.g:6737:1: rule__XAssignment__Group_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) ;
     public final void rule__XAssignment__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6154:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
-            // InternalSignalDSL.g:6155:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:6741:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalSignalDSL.g:6742:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
             {
-            // InternalSignalDSL.g:6155:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
-            // InternalSignalDSL.g:6156:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:6742:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:6743:2: ( rule__XAssignment__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalSignalDSL.g:6157:2: ( rule__XAssignment__FeatureAssignment_0_1 )
-            // InternalSignalDSL.g:6157:3: rule__XAssignment__FeatureAssignment_0_1
+            // InternalSignalDSL.g:6744:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:6744:3: rule__XAssignment__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_0_1();
@@ -21556,14 +23480,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2"
-    // InternalSignalDSL.g:6165:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
+    // InternalSignalDSL.g:6752:1: rule__XAssignment__Group_0__2 : rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 ;
     public final void rule__XAssignment__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6169:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
-            // InternalSignalDSL.g:6170:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            // InternalSignalDSL.g:6756:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalSignalDSL.g:6757:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
             {
             pushFollow(FOLLOW_35);
             rule__XAssignment__Group_0__2__Impl();
@@ -21594,17 +23518,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__2__Impl"
-    // InternalSignalDSL.g:6177:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    // InternalSignalDSL.g:6764:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
     public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6181:1: ( ( ruleOpSingleAssign ) )
-            // InternalSignalDSL.g:6182:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:6768:1: ( ( ruleOpSingleAssign ) )
+            // InternalSignalDSL.g:6769:1: ( ruleOpSingleAssign )
             {
-            // InternalSignalDSL.g:6182:1: ( ruleOpSingleAssign )
-            // InternalSignalDSL.g:6183:2: ruleOpSingleAssign
+            // InternalSignalDSL.g:6769:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:6770:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
@@ -21639,14 +23563,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3"
-    // InternalSignalDSL.g:6192:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
+    // InternalSignalDSL.g:6779:1: rule__XAssignment__Group_0__3 : rule__XAssignment__Group_0__3__Impl ;
     public final void rule__XAssignment__Group_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6196:1: ( rule__XAssignment__Group_0__3__Impl )
-            // InternalSignalDSL.g:6197:2: rule__XAssignment__Group_0__3__Impl
+            // InternalSignalDSL.g:6783:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalSignalDSL.g:6784:2: rule__XAssignment__Group_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_0__3__Impl();
@@ -21672,23 +23596,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_0__3__Impl"
-    // InternalSignalDSL.g:6203:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
+    // InternalSignalDSL.g:6790:1: rule__XAssignment__Group_0__3__Impl : ( ( rule__XAssignment__ValueAssignment_0_3 ) ) ;
     public final void rule__XAssignment__Group_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6207:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
-            // InternalSignalDSL.g:6208:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalSignalDSL.g:6794:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalSignalDSL.g:6795:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
             {
-            // InternalSignalDSL.g:6208:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
-            // InternalSignalDSL.g:6209:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalSignalDSL.g:6795:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalSignalDSL.g:6796:2: ( rule__XAssignment__ValueAssignment_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
             }
-            // InternalSignalDSL.g:6210:2: ( rule__XAssignment__ValueAssignment_0_3 )
-            // InternalSignalDSL.g:6210:3: rule__XAssignment__ValueAssignment_0_3
+            // InternalSignalDSL.g:6797:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalSignalDSL.g:6797:3: rule__XAssignment__ValueAssignment_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__ValueAssignment_0_3();
@@ -21723,14 +23647,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0"
-    // InternalSignalDSL.g:6219:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
+    // InternalSignalDSL.g:6806:1: rule__XAssignment__Group_1__0 : rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 ;
     public final void rule__XAssignment__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6223:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
-            // InternalSignalDSL.g:6224:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            // InternalSignalDSL.g:6810:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalSignalDSL.g:6811:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
             {
             pushFollow(FOLLOW_41);
             rule__XAssignment__Group_1__0__Impl();
@@ -21761,17 +23685,17 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__0__Impl"
-    // InternalSignalDSL.g:6231:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    // InternalSignalDSL.g:6818:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
     public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6235:1: ( ( ruleXOrExpression ) )
-            // InternalSignalDSL.g:6236:1: ( ruleXOrExpression )
+            // InternalSignalDSL.g:6822:1: ( ( ruleXOrExpression ) )
+            // InternalSignalDSL.g:6823:1: ( ruleXOrExpression )
             {
-            // InternalSignalDSL.g:6236:1: ( ruleXOrExpression )
-            // InternalSignalDSL.g:6237:2: ruleXOrExpression
+            // InternalSignalDSL.g:6823:1: ( ruleXOrExpression )
+            // InternalSignalDSL.g:6824:2: ruleXOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
@@ -21806,14 +23730,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1"
-    // InternalSignalDSL.g:6246:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
+    // InternalSignalDSL.g:6833:1: rule__XAssignment__Group_1__1 : rule__XAssignment__Group_1__1__Impl ;
     public final void rule__XAssignment__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6250:1: ( rule__XAssignment__Group_1__1__Impl )
-            // InternalSignalDSL.g:6251:2: rule__XAssignment__Group_1__1__Impl
+            // InternalSignalDSL.g:6837:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalSignalDSL.g:6838:2: rule__XAssignment__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1__1__Impl();
@@ -21839,27 +23763,27 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1__1__Impl"
-    // InternalSignalDSL.g:6257:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
+    // InternalSignalDSL.g:6844:1: rule__XAssignment__Group_1__1__Impl : ( ( rule__XAssignment__Group_1_1__0 )? ) ;
     public final void rule__XAssignment__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6261:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
-            // InternalSignalDSL.g:6262:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalSignalDSL.g:6848:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalSignalDSL.g:6849:1: ( ( rule__XAssignment__Group_1_1__0 )? )
             {
-            // InternalSignalDSL.g:6262:1: ( ( rule__XAssignment__Group_1_1__0 )? )
-            // InternalSignalDSL.g:6263:2: ( rule__XAssignment__Group_1_1__0 )?
+            // InternalSignalDSL.g:6849:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalSignalDSL.g:6850:2: ( rule__XAssignment__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
             }
-            // InternalSignalDSL.g:6264:2: ( rule__XAssignment__Group_1_1__0 )?
-            int alt69=2;
-            alt69 = dfa69.predict(input);
-            switch (alt69) {
+            // InternalSignalDSL.g:6851:2: ( rule__XAssignment__Group_1_1__0 )?
+            int alt67=2;
+            alt67 = dfa67.predict(input);
+            switch (alt67) {
                 case 1 :
-                    // InternalSignalDSL.g:6264:3: rule__XAssignment__Group_1_1__0
+                    // InternalSignalDSL.g:6851:3: rule__XAssignment__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XAssignment__Group_1_1__0();
@@ -21897,14 +23821,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0"
-    // InternalSignalDSL.g:6273:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
+    // InternalSignalDSL.g:6860:1: rule__XAssignment__Group_1_1__0 : rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 ;
     public final void rule__XAssignment__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6277:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
-            // InternalSignalDSL.g:6278:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            // InternalSignalDSL.g:6864:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalSignalDSL.g:6865:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XAssignment__Group_1_1__0__Impl();
@@ -21935,23 +23859,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:6285:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
+    // InternalSignalDSL.g:6872:1: rule__XAssignment__Group_1_1__0__Impl : ( ( rule__XAssignment__Group_1_1_0__0 ) ) ;
     public final void rule__XAssignment__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6289:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
-            // InternalSignalDSL.g:6290:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:6876:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalSignalDSL.g:6877:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
             {
-            // InternalSignalDSL.g:6290:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
-            // InternalSignalDSL.g:6291:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalSignalDSL.g:6877:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:6878:2: ( rule__XAssignment__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
             }
-            // InternalSignalDSL.g:6292:2: ( rule__XAssignment__Group_1_1_0__0 )
-            // InternalSignalDSL.g:6292:3: rule__XAssignment__Group_1_1_0__0
+            // InternalSignalDSL.g:6879:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalSignalDSL.g:6879:3: rule__XAssignment__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0();
@@ -21986,14 +23910,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1"
-    // InternalSignalDSL.g:6300:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:6887:1: rule__XAssignment__Group_1_1__1 : rule__XAssignment__Group_1_1__1__Impl ;
     public final void rule__XAssignment__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6304:1: ( rule__XAssignment__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:6305:2: rule__XAssignment__Group_1_1__1__Impl
+            // InternalSignalDSL.g:6891:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:6892:2: rule__XAssignment__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1__1__Impl();
@@ -22019,23 +23943,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:6311:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalSignalDSL.g:6898:1: rule__XAssignment__Group_1_1__1__Impl : ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) ;
     public final void rule__XAssignment__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6315:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
-            // InternalSignalDSL.g:6316:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:6902:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalSignalDSL.g:6903:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalSignalDSL.g:6316:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
-            // InternalSignalDSL.g:6317:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:6903:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:6904:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalSignalDSL.g:6318:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
-            // InternalSignalDSL.g:6318:3: rule__XAssignment__RightOperandAssignment_1_1_1
+            // InternalSignalDSL.g:6905:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:6905:3: rule__XAssignment__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__RightOperandAssignment_1_1_1();
@@ -22070,14 +23994,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0"
-    // InternalSignalDSL.g:6327:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
+    // InternalSignalDSL.g:6914:1: rule__XAssignment__Group_1_1_0__0 : rule__XAssignment__Group_1_1_0__0__Impl ;
     public final void rule__XAssignment__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6331:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
-            // InternalSignalDSL.g:6332:2: rule__XAssignment__Group_1_1_0__0__Impl
+            // InternalSignalDSL.g:6918:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalSignalDSL.g:6919:2: rule__XAssignment__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0__0__Impl();
@@ -22103,23 +24027,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0__0__Impl"
-    // InternalSignalDSL.g:6338:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:6925:1: rule__XAssignment__Group_1_1_0__0__Impl : ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) ;
     public final void rule__XAssignment__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6342:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:6343:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:6929:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:6930:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6343:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
-            // InternalSignalDSL.g:6344:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:6930:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:6931:2: ( rule__XAssignment__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
             }
-            // InternalSignalDSL.g:6345:2: ( rule__XAssignment__Group_1_1_0_0__0 )
-            // InternalSignalDSL.g:6345:3: rule__XAssignment__Group_1_1_0_0__0
+            // InternalSignalDSL.g:6932:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:6932:3: rule__XAssignment__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__0();
@@ -22154,14 +24078,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0"
-    // InternalSignalDSL.g:6354:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
+    // InternalSignalDSL.g:6941:1: rule__XAssignment__Group_1_1_0_0__0 : rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 ;
     public final void rule__XAssignment__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6358:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
-            // InternalSignalDSL.g:6359:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            // InternalSignalDSL.g:6945:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalSignalDSL.g:6946:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
             {
             pushFollow(FOLLOW_41);
             rule__XAssignment__Group_1_1_0_0__0__Impl();
@@ -22192,23 +24116,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__0__Impl"
-    // InternalSignalDSL.g:6366:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:6953:1: rule__XAssignment__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAssignment__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6370:1: ( ( () ) )
-            // InternalSignalDSL.g:6371:1: ( () )
+            // InternalSignalDSL.g:6957:1: ( ( () ) )
+            // InternalSignalDSL.g:6958:1: ( () )
             {
-            // InternalSignalDSL.g:6371:1: ( () )
-            // InternalSignalDSL.g:6372:2: ()
+            // InternalSignalDSL.g:6958:1: ( () )
+            // InternalSignalDSL.g:6959:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:6373:2: ()
-            // InternalSignalDSL.g:6373:3: 
+            // InternalSignalDSL.g:6960:2: ()
+            // InternalSignalDSL.g:6960:3: 
             {
             }
 
@@ -22233,14 +24157,14 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1"
-    // InternalSignalDSL.g:6381:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:6968:1: rule__XAssignment__Group_1_1_0_0__1 : rule__XAssignment__Group_1_1_0_0__1__Impl ;
     public final void rule__XAssignment__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6385:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
-            // InternalSignalDSL.g:6386:2: rule__XAssignment__Group_1_1_0_0__1__Impl
+            // InternalSignalDSL.g:6972:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalSignalDSL.g:6973:2: rule__XAssignment__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__Group_1_1_0_0__1__Impl();
@@ -22266,23 +24190,23 @@
 
 
     // $ANTLR start "rule__XAssignment__Group_1_1_0_0__1__Impl"
-    // InternalSignalDSL.g:6392:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:6979:1: rule__XAssignment__Group_1_1_0_0__1__Impl : ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) ;
     public final void rule__XAssignment__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6396:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:6397:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:6983:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:6984:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:6397:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalSignalDSL.g:6398:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:6984:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:6985:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:6399:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
-            // InternalSignalDSL.g:6399:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
+            // InternalSignalDSL.g:6986:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:6986:3: rule__XAssignment__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAssignment__FeatureAssignment_1_1_0_0_1();
@@ -22317,14 +24241,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0"
-    // InternalSignalDSL.g:6408:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
+    // InternalSignalDSL.g:6995:1: rule__OpMultiAssign__Group_5__0 : rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 ;
     public final void rule__OpMultiAssign__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6412:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
-            // InternalSignalDSL.g:6413:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            // InternalSignalDSL.g:6999:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalSignalDSL.g:7000:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
             {
             pushFollow(FOLLOW_42);
             rule__OpMultiAssign__Group_5__0__Impl();
@@ -22355,17 +24279,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__0__Impl"
-    // InternalSignalDSL.g:6420:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:7007:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6424:1: ( ( '<' ) )
-            // InternalSignalDSL.g:6425:1: ( '<' )
+            // InternalSignalDSL.g:7011:1: ( ( '<' ) )
+            // InternalSignalDSL.g:7012:1: ( '<' )
             {
-            // InternalSignalDSL.g:6425:1: ( '<' )
-            // InternalSignalDSL.g:6426:2: '<'
+            // InternalSignalDSL.g:7012:1: ( '<' )
+            // InternalSignalDSL.g:7013:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
@@ -22396,14 +24320,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1"
-    // InternalSignalDSL.g:6435:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
+    // InternalSignalDSL.g:7022:1: rule__OpMultiAssign__Group_5__1 : rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 ;
     public final void rule__OpMultiAssign__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6439:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
-            // InternalSignalDSL.g:6440:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            // InternalSignalDSL.g:7026:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalSignalDSL.g:7027:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
             {
             pushFollow(FOLLOW_36);
             rule__OpMultiAssign__Group_5__1__Impl();
@@ -22434,17 +24358,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__1__Impl"
-    // InternalSignalDSL.g:6447:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:7034:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
     public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6451:1: ( ( '<' ) )
-            // InternalSignalDSL.g:6452:1: ( '<' )
+            // InternalSignalDSL.g:7038:1: ( ( '<' ) )
+            // InternalSignalDSL.g:7039:1: ( '<' )
             {
-            // InternalSignalDSL.g:6452:1: ( '<' )
-            // InternalSignalDSL.g:6453:2: '<'
+            // InternalSignalDSL.g:7039:1: ( '<' )
+            // InternalSignalDSL.g:7040:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
@@ -22475,14 +24399,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2"
-    // InternalSignalDSL.g:6462:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
+    // InternalSignalDSL.g:7049:1: rule__OpMultiAssign__Group_5__2 : rule__OpMultiAssign__Group_5__2__Impl ;
     public final void rule__OpMultiAssign__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6466:1: ( rule__OpMultiAssign__Group_5__2__Impl )
-            // InternalSignalDSL.g:6467:2: rule__OpMultiAssign__Group_5__2__Impl
+            // InternalSignalDSL.g:7053:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalSignalDSL.g:7054:2: rule__OpMultiAssign__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_5__2__Impl();
@@ -22508,17 +24432,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_5__2__Impl"
-    // InternalSignalDSL.g:6473:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:7060:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
     public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6477:1: ( ( '=' ) )
-            // InternalSignalDSL.g:6478:1: ( '=' )
+            // InternalSignalDSL.g:7064:1: ( ( '=' ) )
+            // InternalSignalDSL.g:7065:1: ( '=' )
             {
-            // InternalSignalDSL.g:6478:1: ( '=' )
-            // InternalSignalDSL.g:6479:2: '='
+            // InternalSignalDSL.g:7065:1: ( '=' )
+            // InternalSignalDSL.g:7066:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
@@ -22549,14 +24473,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0"
-    // InternalSignalDSL.g:6489:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
+    // InternalSignalDSL.g:7076:1: rule__OpMultiAssign__Group_6__0 : rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 ;
     public final void rule__OpMultiAssign__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6493:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
-            // InternalSignalDSL.g:6494:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            // InternalSignalDSL.g:7080:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalSignalDSL.g:7081:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
             {
             pushFollow(FOLLOW_43);
             rule__OpMultiAssign__Group_6__0__Impl();
@@ -22587,17 +24511,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__0__Impl"
-    // InternalSignalDSL.g:6501:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:7088:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
     public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6505:1: ( ( '>' ) )
-            // InternalSignalDSL.g:6506:1: ( '>' )
+            // InternalSignalDSL.g:7092:1: ( ( '>' ) )
+            // InternalSignalDSL.g:7093:1: ( '>' )
             {
-            // InternalSignalDSL.g:6506:1: ( '>' )
-            // InternalSignalDSL.g:6507:2: '>'
+            // InternalSignalDSL.g:7093:1: ( '>' )
+            // InternalSignalDSL.g:7094:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
@@ -22628,14 +24552,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1"
-    // InternalSignalDSL.g:6516:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
+    // InternalSignalDSL.g:7103:1: rule__OpMultiAssign__Group_6__1 : rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 ;
     public final void rule__OpMultiAssign__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6520:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
-            // InternalSignalDSL.g:6521:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            // InternalSignalDSL.g:7107:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalSignalDSL.g:7108:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
             {
             pushFollow(FOLLOW_43);
             rule__OpMultiAssign__Group_6__1__Impl();
@@ -22666,31 +24590,31 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__1__Impl"
-    // InternalSignalDSL.g:6528:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    // InternalSignalDSL.g:7115:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
     public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6532:1: ( ( ( '>' )? ) )
-            // InternalSignalDSL.g:6533:1: ( ( '>' )? )
+            // InternalSignalDSL.g:7119:1: ( ( ( '>' )? ) )
+            // InternalSignalDSL.g:7120:1: ( ( '>' )? )
             {
-            // InternalSignalDSL.g:6533:1: ( ( '>' )? )
-            // InternalSignalDSL.g:6534:2: ( '>' )?
+            // InternalSignalDSL.g:7120:1: ( ( '>' )? )
+            // InternalSignalDSL.g:7121:2: ( '>' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
             }
-            // InternalSignalDSL.g:6535:2: ( '>' )?
-            int alt70=2;
-            int LA70_0 = input.LA(1);
+            // InternalSignalDSL.g:7122:2: ( '>' )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
 
-            if ( (LA70_0==26) ) {
-                alt70=1;
+            if ( (LA68_0==26) ) {
+                alt68=1;
             }
-            switch (alt70) {
+            switch (alt68) {
                 case 1 :
-                    // InternalSignalDSL.g:6535:3: '>'
+                    // InternalSignalDSL.g:7122:3: '>'
                     {
                     match(input,26,FOLLOW_2); if (state.failed) return ;
 
@@ -22724,14 +24648,14 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2"
-    // InternalSignalDSL.g:6543:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
+    // InternalSignalDSL.g:7130:1: rule__OpMultiAssign__Group_6__2 : rule__OpMultiAssign__Group_6__2__Impl ;
     public final void rule__OpMultiAssign__Group_6__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6547:1: ( rule__OpMultiAssign__Group_6__2__Impl )
-            // InternalSignalDSL.g:6548:2: rule__OpMultiAssign__Group_6__2__Impl
+            // InternalSignalDSL.g:7134:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalSignalDSL.g:7135:2: rule__OpMultiAssign__Group_6__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpMultiAssign__Group_6__2__Impl();
@@ -22757,17 +24681,17 @@
 
 
     // $ANTLR start "rule__OpMultiAssign__Group_6__2__Impl"
-    // InternalSignalDSL.g:6554:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    // InternalSignalDSL.g:7141:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
     public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6558:1: ( ( '>=' ) )
-            // InternalSignalDSL.g:6559:1: ( '>=' )
+            // InternalSignalDSL.g:7145:1: ( ( '>=' ) )
+            // InternalSignalDSL.g:7146:1: ( '>=' )
             {
-            // InternalSignalDSL.g:6559:1: ( '>=' )
-            // InternalSignalDSL.g:6560:2: '>='
+            // InternalSignalDSL.g:7146:1: ( '>=' )
+            // InternalSignalDSL.g:7147:2: '>='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
@@ -22798,14 +24722,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0"
-    // InternalSignalDSL.g:6570:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
+    // InternalSignalDSL.g:7157:1: rule__XOrExpression__Group__0 : rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 ;
     public final void rule__XOrExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6574:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
-            // InternalSignalDSL.g:6575:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            // InternalSignalDSL.g:7161:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalSignalDSL.g:7162:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
             {
             pushFollow(FOLLOW_44);
             rule__XOrExpression__Group__0__Impl();
@@ -22836,17 +24760,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__0__Impl"
-    // InternalSignalDSL.g:6582:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    // InternalSignalDSL.g:7169:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6586:1: ( ( ruleXAndExpression ) )
-            // InternalSignalDSL.g:6587:1: ( ruleXAndExpression )
+            // InternalSignalDSL.g:7173:1: ( ( ruleXAndExpression ) )
+            // InternalSignalDSL.g:7174:1: ( ruleXAndExpression )
             {
-            // InternalSignalDSL.g:6587:1: ( ruleXAndExpression )
-            // InternalSignalDSL.g:6588:2: ruleXAndExpression
+            // InternalSignalDSL.g:7174:1: ( ruleXAndExpression )
+            // InternalSignalDSL.g:7175:2: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXAndExpressionParserRuleCall_0()); 
@@ -22881,14 +24805,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1"
-    // InternalSignalDSL.g:6597:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7184:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
     public final void rule__XOrExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6601:1: ( rule__XOrExpression__Group__1__Impl )
-            // InternalSignalDSL.g:6602:2: rule__XOrExpression__Group__1__Impl
+            // InternalSignalDSL.g:7188:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7189:2: rule__XOrExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group__1__Impl();
@@ -22914,41 +24838,41 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group__1__Impl"
-    // InternalSignalDSL.g:6608:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:7195:1: rule__XOrExpression__Group__1__Impl : ( ( rule__XOrExpression__Group_1__0 )* ) ;
     public final void rule__XOrExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6612:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:6613:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7199:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:7200:1: ( ( rule__XOrExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:6613:1: ( ( rule__XOrExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:6614:2: ( rule__XOrExpression__Group_1__0 )*
+            // InternalSignalDSL.g:7200:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7201:2: ( rule__XOrExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:6615:2: ( rule__XOrExpression__Group_1__0 )*
-            loop71:
+            // InternalSignalDSL.g:7202:2: ( rule__XOrExpression__Group_1__0 )*
+            loop69:
             do {
-                int alt71=2;
-                int LA71_0 = input.LA(1);
+                int alt69=2;
+                int LA69_0 = input.LA(1);
 
-                if ( (LA71_0==14) ) {
-                    int LA71_2 = input.LA(2);
+                if ( (LA69_0==14) ) {
+                    int LA69_2 = input.LA(2);
 
-                    if ( (synpred115_InternalSignalDSL()) ) {
-                        alt71=1;
+                    if ( (synpred121_InternalSignalDSL()) ) {
+                        alt69=1;
                     }
 
 
                 }
 
 
-                switch (alt71) {
+                switch (alt69) {
             	case 1 :
-            	    // InternalSignalDSL.g:6615:3: rule__XOrExpression__Group_1__0
+            	    // InternalSignalDSL.g:7202:3: rule__XOrExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_45);
             	    rule__XOrExpression__Group_1__0();
@@ -22960,7 +24884,7 @@
             	    break;
 
             	default :
-            	    break loop71;
+            	    break loop69;
                 }
             } while (true);
 
@@ -22989,14 +24913,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0"
-    // InternalSignalDSL.g:6624:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
+    // InternalSignalDSL.g:7211:1: rule__XOrExpression__Group_1__0 : rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 ;
     public final void rule__XOrExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6628:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
-            // InternalSignalDSL.g:6629:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            // InternalSignalDSL.g:7215:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalSignalDSL.g:7216:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XOrExpression__Group_1__0__Impl();
@@ -23027,23 +24951,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:6636:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7223:1: rule__XOrExpression__Group_1__0__Impl : ( ( rule__XOrExpression__Group_1_0__0 ) ) ;
     public final void rule__XOrExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6640:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:6641:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7227:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:7228:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:6641:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:6642:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7228:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7229:2: ( rule__XOrExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:6643:2: ( rule__XOrExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:6643:3: rule__XOrExpression__Group_1_0__0
+            // InternalSignalDSL.g:7230:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7230:3: rule__XOrExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0();
@@ -23078,14 +25002,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1"
-    // InternalSignalDSL.g:6651:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:7238:1: rule__XOrExpression__Group_1__1 : rule__XOrExpression__Group_1__1__Impl ;
     public final void rule__XOrExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6655:1: ( rule__XOrExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:6656:2: rule__XOrExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:7242:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:7243:2: rule__XOrExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1__1__Impl();
@@ -23111,23 +25035,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:6662:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:7249:1: rule__XOrExpression__Group_1__1__Impl : ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XOrExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6666:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:6667:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7253:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:7254:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:6667:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:6668:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7254:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7255:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:6669:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:6669:3: rule__XOrExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:7256:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7256:3: rule__XOrExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__RightOperandAssignment_1_1();
@@ -23162,14 +25086,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0"
-    // InternalSignalDSL.g:6678:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:7265:1: rule__XOrExpression__Group_1_0__0 : rule__XOrExpression__Group_1_0__0__Impl ;
     public final void rule__XOrExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6682:1: ( rule__XOrExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:6683:2: rule__XOrExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:7269:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:7270:2: rule__XOrExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0__0__Impl();
@@ -23195,23 +25119,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:6689:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7276:1: rule__XOrExpression__Group_1_0__0__Impl : ( ( rule__XOrExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XOrExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6693:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:6694:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7280:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7281:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6694:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:6695:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7281:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7282:2: ( rule__XOrExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:6696:2: ( rule__XOrExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:6696:3: rule__XOrExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:7283:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7283:3: rule__XOrExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__0();
@@ -23246,14 +25170,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:6705:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:7292:1: rule__XOrExpression__Group_1_0_0__0 : rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 ;
     public final void rule__XOrExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6709:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:6710:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:7296:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:7297:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_44);
             rule__XOrExpression__Group_1_0_0__0__Impl();
@@ -23284,23 +25208,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:6717:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7304:1: rule__XOrExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XOrExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6721:1: ( ( () ) )
-            // InternalSignalDSL.g:6722:1: ( () )
+            // InternalSignalDSL.g:7308:1: ( ( () ) )
+            // InternalSignalDSL.g:7309:1: ( () )
             {
-            // InternalSignalDSL.g:6722:1: ( () )
-            // InternalSignalDSL.g:6723:2: ()
+            // InternalSignalDSL.g:7309:1: ( () )
+            // InternalSignalDSL.g:7310:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:6724:2: ()
-            // InternalSignalDSL.g:6724:3: 
+            // InternalSignalDSL.g:7311:2: ()
+            // InternalSignalDSL.g:7311:3: 
             {
             }
 
@@ -23325,14 +25249,14 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:6732:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:7319:1: rule__XOrExpression__Group_1_0_0__1 : rule__XOrExpression__Group_1_0_0__1__Impl ;
     public final void rule__XOrExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6736:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:6737:2: rule__XOrExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:7323:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:7324:2: rule__XOrExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__Group_1_0_0__1__Impl();
@@ -23358,23 +25282,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:6743:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:7330:1: rule__XOrExpression__Group_1_0_0__1__Impl : ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XOrExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6747:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:6748:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7334:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:7335:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:6748:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:6749:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7335:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7336:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:6750:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:6750:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:7337:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7337:3: rule__XOrExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOrExpression__FeatureAssignment_1_0_0_1();
@@ -23409,14 +25333,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0"
-    // InternalSignalDSL.g:6759:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
+    // InternalSignalDSL.g:7346:1: rule__XAndExpression__Group__0 : rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 ;
     public final void rule__XAndExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6763:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
-            // InternalSignalDSL.g:6764:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            // InternalSignalDSL.g:7350:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalSignalDSL.g:7351:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
             {
             pushFollow(FOLLOW_46);
             rule__XAndExpression__Group__0__Impl();
@@ -23447,17 +25371,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__0__Impl"
-    // InternalSignalDSL.g:6771:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    // InternalSignalDSL.g:7358:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6775:1: ( ( ruleXEqualityExpression ) )
-            // InternalSignalDSL.g:6776:1: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:7362:1: ( ( ruleXEqualityExpression ) )
+            // InternalSignalDSL.g:7363:1: ( ruleXEqualityExpression )
             {
-            // InternalSignalDSL.g:6776:1: ( ruleXEqualityExpression )
-            // InternalSignalDSL.g:6777:2: ruleXEqualityExpression
+            // InternalSignalDSL.g:7363:1: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:7364:2: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
@@ -23492,14 +25416,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1"
-    // InternalSignalDSL.g:6786:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7373:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
     public final void rule__XAndExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6790:1: ( rule__XAndExpression__Group__1__Impl )
-            // InternalSignalDSL.g:6791:2: rule__XAndExpression__Group__1__Impl
+            // InternalSignalDSL.g:7377:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7378:2: rule__XAndExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group__1__Impl();
@@ -23525,41 +25449,41 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group__1__Impl"
-    // InternalSignalDSL.g:6797:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:7384:1: rule__XAndExpression__Group__1__Impl : ( ( rule__XAndExpression__Group_1__0 )* ) ;
     public final void rule__XAndExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6801:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:6802:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7388:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:7389:1: ( ( rule__XAndExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:6802:1: ( ( rule__XAndExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:6803:2: ( rule__XAndExpression__Group_1__0 )*
+            // InternalSignalDSL.g:7389:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7390:2: ( rule__XAndExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:6804:2: ( rule__XAndExpression__Group_1__0 )*
-            loop72:
+            // InternalSignalDSL.g:7391:2: ( rule__XAndExpression__Group_1__0 )*
+            loop70:
             do {
-                int alt72=2;
-                int LA72_0 = input.LA(1);
+                int alt70=2;
+                int LA70_0 = input.LA(1);
 
-                if ( (LA72_0==15) ) {
-                    int LA72_2 = input.LA(2);
+                if ( (LA70_0==15) ) {
+                    int LA70_2 = input.LA(2);
 
-                    if ( (synpred116_InternalSignalDSL()) ) {
-                        alt72=1;
+                    if ( (synpred122_InternalSignalDSL()) ) {
+                        alt70=1;
                     }
 
 
                 }
 
 
-                switch (alt72) {
+                switch (alt70) {
             	case 1 :
-            	    // InternalSignalDSL.g:6804:3: rule__XAndExpression__Group_1__0
+            	    // InternalSignalDSL.g:7391:3: rule__XAndExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_47);
             	    rule__XAndExpression__Group_1__0();
@@ -23571,7 +25495,7 @@
             	    break;
 
             	default :
-            	    break loop72;
+            	    break loop70;
                 }
             } while (true);
 
@@ -23600,14 +25524,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0"
-    // InternalSignalDSL.g:6813:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
+    // InternalSignalDSL.g:7400:1: rule__XAndExpression__Group_1__0 : rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 ;
     public final void rule__XAndExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6817:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
-            // InternalSignalDSL.g:6818:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            // InternalSignalDSL.g:7404:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalSignalDSL.g:7405:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XAndExpression__Group_1__0__Impl();
@@ -23638,23 +25562,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:6825:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7412:1: rule__XAndExpression__Group_1__0__Impl : ( ( rule__XAndExpression__Group_1_0__0 ) ) ;
     public final void rule__XAndExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6829:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:6830:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7416:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:7417:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:6830:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:6831:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7417:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7418:2: ( rule__XAndExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:6832:2: ( rule__XAndExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:6832:3: rule__XAndExpression__Group_1_0__0
+            // InternalSignalDSL.g:7419:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7419:3: rule__XAndExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0();
@@ -23689,14 +25613,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1"
-    // InternalSignalDSL.g:6840:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:7427:1: rule__XAndExpression__Group_1__1 : rule__XAndExpression__Group_1__1__Impl ;
     public final void rule__XAndExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6844:1: ( rule__XAndExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:6845:2: rule__XAndExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:7431:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:7432:2: rule__XAndExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1__1__Impl();
@@ -23722,23 +25646,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:6851:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:7438:1: rule__XAndExpression__Group_1__1__Impl : ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XAndExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6855:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:6856:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7442:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:7443:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:6856:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:6857:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7443:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7444:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:6858:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:6858:3: rule__XAndExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:7445:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7445:3: rule__XAndExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__RightOperandAssignment_1_1();
@@ -23773,14 +25697,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0"
-    // InternalSignalDSL.g:6867:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:7454:1: rule__XAndExpression__Group_1_0__0 : rule__XAndExpression__Group_1_0__0__Impl ;
     public final void rule__XAndExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6871:1: ( rule__XAndExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:6872:2: rule__XAndExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:7458:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:7459:2: rule__XAndExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0__0__Impl();
@@ -23806,23 +25730,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:6878:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7465:1: rule__XAndExpression__Group_1_0__0__Impl : ( ( rule__XAndExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XAndExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6882:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:6883:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7469:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7470:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:6883:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:6884:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7470:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7471:2: ( rule__XAndExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:6885:2: ( rule__XAndExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:6885:3: rule__XAndExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:7472:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7472:3: rule__XAndExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__0();
@@ -23857,14 +25781,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:6894:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:7481:1: rule__XAndExpression__Group_1_0_0__0 : rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 ;
     public final void rule__XAndExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6898:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:6899:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:7485:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:7486:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_46);
             rule__XAndExpression__Group_1_0_0__0__Impl();
@@ -23895,23 +25819,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:6906:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7493:1: rule__XAndExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAndExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6910:1: ( ( () ) )
-            // InternalSignalDSL.g:6911:1: ( () )
+            // InternalSignalDSL.g:7497:1: ( ( () ) )
+            // InternalSignalDSL.g:7498:1: ( () )
             {
-            // InternalSignalDSL.g:6911:1: ( () )
-            // InternalSignalDSL.g:6912:2: ()
+            // InternalSignalDSL.g:7498:1: ( () )
+            // InternalSignalDSL.g:7499:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:6913:2: ()
-            // InternalSignalDSL.g:6913:3: 
+            // InternalSignalDSL.g:7500:2: ()
+            // InternalSignalDSL.g:7500:3: 
             {
             }
 
@@ -23936,14 +25860,14 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:6921:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:7508:1: rule__XAndExpression__Group_1_0_0__1 : rule__XAndExpression__Group_1_0_0__1__Impl ;
     public final void rule__XAndExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6925:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:6926:2: rule__XAndExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:7512:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:7513:2: rule__XAndExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__Group_1_0_0__1__Impl();
@@ -23969,23 +25893,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:6932:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:7519:1: rule__XAndExpression__Group_1_0_0__1__Impl : ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XAndExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6936:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:6937:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7523:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:7524:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:6937:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:6938:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7524:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7525:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:6939:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:6939:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:7526:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7526:3: rule__XAndExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAndExpression__FeatureAssignment_1_0_0_1();
@@ -24020,14 +25944,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0"
-    // InternalSignalDSL.g:6948:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
+    // InternalSignalDSL.g:7535:1: rule__XEqualityExpression__Group__0 : rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 ;
     public final void rule__XEqualityExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6952:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
-            // InternalSignalDSL.g:6953:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            // InternalSignalDSL.g:7539:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalSignalDSL.g:7540:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
             {
             pushFollow(FOLLOW_48);
             rule__XEqualityExpression__Group__0__Impl();
@@ -24058,17 +25982,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__0__Impl"
-    // InternalSignalDSL.g:6960:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    // InternalSignalDSL.g:7547:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6964:1: ( ( ruleXRelationalExpression ) )
-            // InternalSignalDSL.g:6965:1: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:7551:1: ( ( ruleXRelationalExpression ) )
+            // InternalSignalDSL.g:7552:1: ( ruleXRelationalExpression )
             {
-            // InternalSignalDSL.g:6965:1: ( ruleXRelationalExpression )
-            // InternalSignalDSL.g:6966:2: ruleXRelationalExpression
+            // InternalSignalDSL.g:7552:1: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:7553:2: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0()); 
@@ -24103,14 +26027,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1"
-    // InternalSignalDSL.g:6975:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7562:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
     public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6979:1: ( rule__XEqualityExpression__Group__1__Impl )
-            // InternalSignalDSL.g:6980:2: rule__XEqualityExpression__Group__1__Impl
+            // InternalSignalDSL.g:7566:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7567:2: rule__XEqualityExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group__1__Impl();
@@ -24136,32 +26060,32 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group__1__Impl"
-    // InternalSignalDSL.g:6986:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:7573:1: rule__XEqualityExpression__Group__1__Impl : ( ( rule__XEqualityExpression__Group_1__0 )* ) ;
     public final void rule__XEqualityExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:6990:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:6991:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7577:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:7578:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:6991:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:6992:2: ( rule__XEqualityExpression__Group_1__0 )*
+            // InternalSignalDSL.g:7578:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:7579:2: ( rule__XEqualityExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:6993:2: ( rule__XEqualityExpression__Group_1__0 )*
-            loop73:
+            // InternalSignalDSL.g:7580:2: ( rule__XEqualityExpression__Group_1__0 )*
+            loop71:
             do {
-                int alt73=2;
+                int alt71=2;
                 switch ( input.LA(1) ) {
                 case 21:
                     {
-                    int LA73_2 = input.LA(2);
+                    int LA71_2 = input.LA(2);
 
-                    if ( (synpred117_InternalSignalDSL()) ) {
-                        alt73=1;
+                    if ( (synpred123_InternalSignalDSL()) ) {
+                        alt71=1;
                     }
 
 
@@ -24169,10 +26093,10 @@
                     break;
                 case 22:
                     {
-                    int LA73_3 = input.LA(2);
+                    int LA71_3 = input.LA(2);
 
-                    if ( (synpred117_InternalSignalDSL()) ) {
-                        alt73=1;
+                    if ( (synpred123_InternalSignalDSL()) ) {
+                        alt71=1;
                     }
 
 
@@ -24180,10 +26104,10 @@
                     break;
                 case 23:
                     {
-                    int LA73_4 = input.LA(2);
+                    int LA71_4 = input.LA(2);
 
-                    if ( (synpred117_InternalSignalDSL()) ) {
-                        alt73=1;
+                    if ( (synpred123_InternalSignalDSL()) ) {
+                        alt71=1;
                     }
 
 
@@ -24191,10 +26115,10 @@
                     break;
                 case 24:
                     {
-                    int LA73_5 = input.LA(2);
+                    int LA71_5 = input.LA(2);
 
-                    if ( (synpred117_InternalSignalDSL()) ) {
-                        alt73=1;
+                    if ( (synpred123_InternalSignalDSL()) ) {
+                        alt71=1;
                     }
 
 
@@ -24203,9 +26127,9 @@
 
                 }
 
-                switch (alt73) {
+                switch (alt71) {
             	case 1 :
-            	    // InternalSignalDSL.g:6993:3: rule__XEqualityExpression__Group_1__0
+            	    // InternalSignalDSL.g:7580:3: rule__XEqualityExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_49);
             	    rule__XEqualityExpression__Group_1__0();
@@ -24217,7 +26141,7 @@
             	    break;
 
             	default :
-            	    break loop73;
+            	    break loop71;
                 }
             } while (true);
 
@@ -24246,14 +26170,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0"
-    // InternalSignalDSL.g:7002:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
+    // InternalSignalDSL.g:7589:1: rule__XEqualityExpression__Group_1__0 : rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 ;
     public final void rule__XEqualityExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7006:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
-            // InternalSignalDSL.g:7007:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            // InternalSignalDSL.g:7593:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalSignalDSL.g:7594:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XEqualityExpression__Group_1__0__Impl();
@@ -24284,23 +26208,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:7014:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7601:1: rule__XEqualityExpression__Group_1__0__Impl : ( ( rule__XEqualityExpression__Group_1_0__0 ) ) ;
     public final void rule__XEqualityExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7018:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:7019:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7605:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:7606:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7019:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:7020:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7606:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:7607:2: ( rule__XEqualityExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:7021:2: ( rule__XEqualityExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:7021:3: rule__XEqualityExpression__Group_1_0__0
+            // InternalSignalDSL.g:7608:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:7608:3: rule__XEqualityExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0();
@@ -24335,14 +26259,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1"
-    // InternalSignalDSL.g:7029:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:7616:1: rule__XEqualityExpression__Group_1__1 : rule__XEqualityExpression__Group_1__1__Impl ;
     public final void rule__XEqualityExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7033:1: ( rule__XEqualityExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:7034:2: rule__XEqualityExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:7620:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:7621:2: rule__XEqualityExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1__1__Impl();
@@ -24368,23 +26292,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:7040:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:7627:1: rule__XEqualityExpression__Group_1__1__Impl : ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XEqualityExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7044:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:7045:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7631:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:7632:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:7045:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:7046:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7632:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:7633:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:7047:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:7047:3: rule__XEqualityExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:7634:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:7634:3: rule__XEqualityExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__RightOperandAssignment_1_1();
@@ -24419,14 +26343,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7056:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:7643:1: rule__XEqualityExpression__Group_1_0__0 : rule__XEqualityExpression__Group_1_0__0__Impl ;
     public final void rule__XEqualityExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7060:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:7061:2: rule__XEqualityExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:7647:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:7648:2: rule__XEqualityExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0__0__Impl();
@@ -24452,23 +26376,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7067:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7654:1: rule__XEqualityExpression__Group_1_0__0__Impl : ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XEqualityExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7071:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7072:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7658:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7659:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7072:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7073:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7659:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7660:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7074:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7074:3: rule__XEqualityExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:7661:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7661:3: rule__XEqualityExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__0();
@@ -24503,14 +26427,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7083:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:7670:1: rule__XEqualityExpression__Group_1_0_0__0 : rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 ;
     public final void rule__XEqualityExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7087:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:7088:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:7674:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:7675:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_48);
             rule__XEqualityExpression__Group_1_0_0__0__Impl();
@@ -24541,23 +26465,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7095:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7682:1: rule__XEqualityExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XEqualityExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7099:1: ( ( () ) )
-            // InternalSignalDSL.g:7100:1: ( () )
+            // InternalSignalDSL.g:7686:1: ( ( () ) )
+            // InternalSignalDSL.g:7687:1: ( () )
             {
-            // InternalSignalDSL.g:7100:1: ( () )
-            // InternalSignalDSL.g:7101:2: ()
+            // InternalSignalDSL.g:7687:1: ( () )
+            // InternalSignalDSL.g:7688:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7102:2: ()
-            // InternalSignalDSL.g:7102:3: 
+            // InternalSignalDSL.g:7689:2: ()
+            // InternalSignalDSL.g:7689:3: 
             {
             }
 
@@ -24582,14 +26506,14 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:7110:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:7697:1: rule__XEqualityExpression__Group_1_0_0__1 : rule__XEqualityExpression__Group_1_0_0__1__Impl ;
     public final void rule__XEqualityExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7114:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7115:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:7701:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:7702:2: rule__XEqualityExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__Group_1_0_0__1__Impl();
@@ -24615,23 +26539,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7121:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:7708:1: rule__XEqualityExpression__Group_1_0_0__1__Impl : ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XEqualityExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7125:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:7126:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7712:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:7713:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:7126:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:7127:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7713:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:7714:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:7128:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:7128:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:7715:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:7715:3: rule__XEqualityExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XEqualityExpression__FeatureAssignment_1_0_0_1();
@@ -24666,14 +26590,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0"
-    // InternalSignalDSL.g:7137:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
+    // InternalSignalDSL.g:7724:1: rule__XRelationalExpression__Group__0 : rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 ;
     public final void rule__XRelationalExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7141:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
-            // InternalSignalDSL.g:7142:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            // InternalSignalDSL.g:7728:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalSignalDSL.g:7729:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
             {
             pushFollow(FOLLOW_50);
             rule__XRelationalExpression__Group__0__Impl();
@@ -24704,17 +26628,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__0__Impl"
-    // InternalSignalDSL.g:7149:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    // InternalSignalDSL.g:7736:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7153:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalSignalDSL.g:7154:1: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:7740:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalSignalDSL.g:7741:1: ( ruleXOtherOperatorExpression )
             {
-            // InternalSignalDSL.g:7154:1: ( ruleXOtherOperatorExpression )
-            // InternalSignalDSL.g:7155:2: ruleXOtherOperatorExpression
+            // InternalSignalDSL.g:7741:1: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:7742:2: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
@@ -24749,14 +26673,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1"
-    // InternalSignalDSL.g:7164:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:7751:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
     public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7168:1: ( rule__XRelationalExpression__Group__1__Impl )
-            // InternalSignalDSL.g:7169:2: rule__XRelationalExpression__Group__1__Impl
+            // InternalSignalDSL.g:7755:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalSignalDSL.g:7756:2: rule__XRelationalExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group__1__Impl();
@@ -24782,32 +26706,32 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group__1__Impl"
-    // InternalSignalDSL.g:7175:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    // InternalSignalDSL.g:7762:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
     public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7179:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
-            // InternalSignalDSL.g:7180:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalSignalDSL.g:7766:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalSignalDSL.g:7767:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
             {
-            // InternalSignalDSL.g:7180:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
-            // InternalSignalDSL.g:7181:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            // InternalSignalDSL.g:7767:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalSignalDSL.g:7768:2: ( rule__XRelationalExpression__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:7182:2: ( rule__XRelationalExpression__Alternatives_1 )*
-            loop74:
+            // InternalSignalDSL.g:7769:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            loop72:
             do {
-                int alt74=2;
+                int alt72=2;
                 switch ( input.LA(1) ) {
                 case 27:
                     {
-                    int LA74_2 = input.LA(2);
+                    int LA72_2 = input.LA(2);
 
-                    if ( (synpred118_InternalSignalDSL()) ) {
-                        alt74=1;
+                    if ( (synpred124_InternalSignalDSL()) ) {
+                        alt72=1;
                     }
 
 
@@ -24815,21 +26739,21 @@
                     break;
                 case 26:
                     {
-                    int LA74_3 = input.LA(2);
+                    int LA72_3 = input.LA(2);
 
-                    if ( (synpred118_InternalSignalDSL()) ) {
-                        alt74=1;
+                    if ( (synpred124_InternalSignalDSL()) ) {
+                        alt72=1;
                     }
 
 
                     }
                     break;
-                case 77:
+                case 86:
                     {
-                    int LA74_4 = input.LA(2);
+                    int LA72_4 = input.LA(2);
 
-                    if ( (synpred118_InternalSignalDSL()) ) {
-                        alt74=1;
+                    if ( (synpred124_InternalSignalDSL()) ) {
+                        alt72=1;
                     }
 
 
@@ -24837,10 +26761,10 @@
                     break;
                 case 25:
                     {
-                    int LA74_5 = input.LA(2);
+                    int LA72_5 = input.LA(2);
 
-                    if ( (synpred118_InternalSignalDSL()) ) {
-                        alt74=1;
+                    if ( (synpred124_InternalSignalDSL()) ) {
+                        alt72=1;
                     }
 
 
@@ -24849,9 +26773,9 @@
 
                 }
 
-                switch (alt74) {
+                switch (alt72) {
             	case 1 :
-            	    // InternalSignalDSL.g:7182:3: rule__XRelationalExpression__Alternatives_1
+            	    // InternalSignalDSL.g:7769:3: rule__XRelationalExpression__Alternatives_1
             	    {
             	    pushFollow(FOLLOW_51);
             	    rule__XRelationalExpression__Alternatives_1();
@@ -24863,7 +26787,7 @@
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop72;
                 }
             } while (true);
 
@@ -24892,14 +26816,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7191:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
+    // InternalSignalDSL.g:7778:1: rule__XRelationalExpression__Group_1_0__0 : rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 ;
     public final void rule__XRelationalExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7195:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
-            // InternalSignalDSL.g:7196:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            // InternalSignalDSL.g:7782:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalSignalDSL.g:7783:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
             {
             pushFollow(FOLLOW_52);
             rule__XRelationalExpression__Group_1_0__0__Impl();
@@ -24930,23 +26854,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7203:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7790:1: rule__XRelationalExpression__Group_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7207:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7208:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7794:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7795:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7208:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7209:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7795:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:7796:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7210:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7210:3: rule__XRelationalExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:7797:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:7797:3: rule__XRelationalExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0();
@@ -24981,14 +26905,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1"
-    // InternalSignalDSL.g:7218:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:7805:1: rule__XRelationalExpression__Group_1_0__1 : rule__XRelationalExpression__Group_1_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7222:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:7223:2: rule__XRelationalExpression__Group_1_0__1__Impl
+            // InternalSignalDSL.g:7809:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:7810:2: rule__XRelationalExpression__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0__1__Impl();
@@ -25014,23 +26938,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:7229:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:7816:1: rule__XRelationalExpression__Group_1_0__1__Impl : ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7233:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:7234:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:7820:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:7821:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:7234:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:7235:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalSignalDSL.g:7821:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:7822:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:7236:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
-            // InternalSignalDSL.g:7236:3: rule__XRelationalExpression__TypeAssignment_1_0_1
+            // InternalSignalDSL.g:7823:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalSignalDSL.g:7823:3: rule__XRelationalExpression__TypeAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__TypeAssignment_1_0_1();
@@ -25065,14 +26989,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7245:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
+    // InternalSignalDSL.g:7832:1: rule__XRelationalExpression__Group_1_0_0__0 : rule__XRelationalExpression__Group_1_0_0__0__Impl ;
     public final void rule__XRelationalExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7249:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
-            // InternalSignalDSL.g:7250:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
+            // InternalSignalDSL.g:7836:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalSignalDSL.g:7837:2: rule__XRelationalExpression__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0__0__Impl();
@@ -25098,23 +27022,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7256:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7843:1: rule__XRelationalExpression__Group_1_0_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7260:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:7261:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:7847:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:7848:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7261:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
-            // InternalSignalDSL.g:7262:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:7848:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:7849:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7263:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
-            // InternalSignalDSL.g:7263:3: rule__XRelationalExpression__Group_1_0_0_0__0
+            // InternalSignalDSL.g:7850:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:7850:3: rule__XRelationalExpression__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__0();
@@ -25149,14 +27073,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0"
-    // InternalSignalDSL.g:7272:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
+    // InternalSignalDSL.g:7859:1: rule__XRelationalExpression__Group_1_0_0_0__0 : rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7276:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
-            // InternalSignalDSL.g:7277:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            // InternalSignalDSL.g:7863:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalSignalDSL.g:7864:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
             {
             pushFollow(FOLLOW_53);
             rule__XRelationalExpression__Group_1_0_0_0__0__Impl();
@@ -25187,23 +27111,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__0__Impl"
-    // InternalSignalDSL.g:7284:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:7871:1: rule__XRelationalExpression__Group_1_0_0_0__0__Impl : ( () ) ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7288:1: ( ( () ) )
-            // InternalSignalDSL.g:7289:1: ( () )
+            // InternalSignalDSL.g:7875:1: ( ( () ) )
+            // InternalSignalDSL.g:7876:1: ( () )
             {
-            // InternalSignalDSL.g:7289:1: ( () )
-            // InternalSignalDSL.g:7290:2: ()
+            // InternalSignalDSL.g:7876:1: ( () )
+            // InternalSignalDSL.g:7877:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:7291:2: ()
-            // InternalSignalDSL.g:7291:3: 
+            // InternalSignalDSL.g:7878:2: ()
+            // InternalSignalDSL.g:7878:3: 
             {
             }
 
@@ -25228,14 +27152,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1"
-    // InternalSignalDSL.g:7299:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
+    // InternalSignalDSL.g:7886:1: rule__XRelationalExpression__Group_1_0_0_0__1 : rule__XRelationalExpression__Group_1_0_0_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7303:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
-            // InternalSignalDSL.g:7304:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
+            // InternalSignalDSL.g:7890:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalSignalDSL.g:7891:2: rule__XRelationalExpression__Group_1_0_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_0_0_0__1__Impl();
@@ -25261,22 +27185,22 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_0_0_0__1__Impl"
-    // InternalSignalDSL.g:7310:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
+    // InternalSignalDSL.g:7897:1: rule__XRelationalExpression__Group_1_0_0_0__1__Impl : ( 'instanceof' ) ;
     public final void rule__XRelationalExpression__Group_1_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7314:1: ( ( 'instanceof' ) )
-            // InternalSignalDSL.g:7315:1: ( 'instanceof' )
+            // InternalSignalDSL.g:7901:1: ( ( 'instanceof' ) )
+            // InternalSignalDSL.g:7902:1: ( 'instanceof' )
             {
-            // InternalSignalDSL.g:7315:1: ( 'instanceof' )
-            // InternalSignalDSL.g:7316:2: 'instanceof'
+            // InternalSignalDSL.g:7902:1: ( 'instanceof' )
+            // InternalSignalDSL.g:7903:2: 'instanceof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
-            match(input,77,FOLLOW_2); if (state.failed) return ;
+            match(input,86,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
             }
@@ -25302,14 +27226,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0"
-    // InternalSignalDSL.g:7326:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
+    // InternalSignalDSL.g:7913:1: rule__XRelationalExpression__Group_1_1__0 : rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 ;
     public final void rule__XRelationalExpression__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7330:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
-            // InternalSignalDSL.g:7331:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            // InternalSignalDSL.g:7917:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalSignalDSL.g:7918:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XRelationalExpression__Group_1_1__0__Impl();
@@ -25340,23 +27264,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:7338:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
+    // InternalSignalDSL.g:7925:1: rule__XRelationalExpression__Group_1_1__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7342:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
-            // InternalSignalDSL.g:7343:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:7929:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalSignalDSL.g:7930:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7343:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
-            // InternalSignalDSL.g:7344:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalSignalDSL.g:7930:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:7931:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
             }
-            // InternalSignalDSL.g:7345:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
-            // InternalSignalDSL.g:7345:3: rule__XRelationalExpression__Group_1_1_0__0
+            // InternalSignalDSL.g:7932:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalSignalDSL.g:7932:3: rule__XRelationalExpression__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0();
@@ -25391,14 +27315,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1"
-    // InternalSignalDSL.g:7353:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:7940:1: rule__XRelationalExpression__Group_1_1__1 : rule__XRelationalExpression__Group_1_1__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7357:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:7358:2: rule__XRelationalExpression__Group_1_1__1__Impl
+            // InternalSignalDSL.g:7944:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:7945:2: rule__XRelationalExpression__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1__1__Impl();
@@ -25424,23 +27348,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:7364:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
+    // InternalSignalDSL.g:7951:1: rule__XRelationalExpression__Group_1_1__1__Impl : ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7368:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
-            // InternalSignalDSL.g:7369:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:7955:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalSignalDSL.g:7956:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
             {
-            // InternalSignalDSL.g:7369:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
-            // InternalSignalDSL.g:7370:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:7956:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalSignalDSL.g:7957:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
             }
-            // InternalSignalDSL.g:7371:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
-            // InternalSignalDSL.g:7371:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
+            // InternalSignalDSL.g:7958:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalSignalDSL.g:7958:3: rule__XRelationalExpression__RightOperandAssignment_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__RightOperandAssignment_1_1_1();
@@ -25475,14 +27399,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0"
-    // InternalSignalDSL.g:7380:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
+    // InternalSignalDSL.g:7967:1: rule__XRelationalExpression__Group_1_1_0__0 : rule__XRelationalExpression__Group_1_1_0__0__Impl ;
     public final void rule__XRelationalExpression__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7384:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
-            // InternalSignalDSL.g:7385:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
+            // InternalSignalDSL.g:7971:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalSignalDSL.g:7972:2: rule__XRelationalExpression__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0__0__Impl();
@@ -25508,23 +27432,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0__0__Impl"
-    // InternalSignalDSL.g:7391:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:7978:1: rule__XRelationalExpression__Group_1_1_0__0__Impl : ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7395:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7396:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:7982:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:7983:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7396:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
-            // InternalSignalDSL.g:7397:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:7983:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:7984:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
             }
-            // InternalSignalDSL.g:7398:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
-            // InternalSignalDSL.g:7398:3: rule__XRelationalExpression__Group_1_1_0_0__0
+            // InternalSignalDSL.g:7985:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:7985:3: rule__XRelationalExpression__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__0();
@@ -25559,14 +27483,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0"
-    // InternalSignalDSL.g:7407:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
+    // InternalSignalDSL.g:7994:1: rule__XRelationalExpression__Group_1_1_0_0__0 : rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7411:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
-            // InternalSignalDSL.g:7412:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            // InternalSignalDSL.g:7998:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalSignalDSL.g:7999:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
             {
             pushFollow(FOLLOW_50);
             rule__XRelationalExpression__Group_1_1_0_0__0__Impl();
@@ -25597,23 +27521,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7419:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8006:1: rule__XRelationalExpression__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7423:1: ( ( () ) )
-            // InternalSignalDSL.g:7424:1: ( () )
+            // InternalSignalDSL.g:8010:1: ( ( () ) )
+            // InternalSignalDSL.g:8011:1: ( () )
             {
-            // InternalSignalDSL.g:7424:1: ( () )
-            // InternalSignalDSL.g:7425:2: ()
+            // InternalSignalDSL.g:8011:1: ( () )
+            // InternalSignalDSL.g:8012:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7426:2: ()
-            // InternalSignalDSL.g:7426:3: 
+            // InternalSignalDSL.g:8013:2: ()
+            // InternalSignalDSL.g:8013:3: 
             {
             }
 
@@ -25638,14 +27562,14 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1"
-    // InternalSignalDSL.g:7434:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8021:1: rule__XRelationalExpression__Group_1_1_0_0__1 : rule__XRelationalExpression__Group_1_1_0_0__1__Impl ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7438:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7439:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
+            // InternalSignalDSL.g:8025:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8026:2: rule__XRelationalExpression__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__Group_1_1_0_0__1__Impl();
@@ -25671,23 +27595,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__Group_1_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7445:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8032:1: rule__XRelationalExpression__Group_1_1_0_0__1__Impl : ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) ;
     public final void rule__XRelationalExpression__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7449:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:7450:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:8036:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8037:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:7450:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
-            // InternalSignalDSL.g:7451:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:8037:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:8038:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:7452:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
-            // InternalSignalDSL.g:7452:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
+            // InternalSignalDSL.g:8039:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalSignalDSL.g:8039:3: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1();
@@ -25722,14 +27646,14 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0"
-    // InternalSignalDSL.g:7461:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
+    // InternalSignalDSL.g:8048:1: rule__OpCompare__Group_1__0 : rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 ;
     public final void rule__OpCompare__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7465:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
-            // InternalSignalDSL.g:7466:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            // InternalSignalDSL.g:8052:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalSignalDSL.g:8053:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
             {
             pushFollow(FOLLOW_36);
             rule__OpCompare__Group_1__0__Impl();
@@ -25760,17 +27684,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__0__Impl"
-    // InternalSignalDSL.g:7473:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8060:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
     public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7477:1: ( ( '<' ) )
-            // InternalSignalDSL.g:7478:1: ( '<' )
+            // InternalSignalDSL.g:8064:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8065:1: ( '<' )
             {
-            // InternalSignalDSL.g:7478:1: ( '<' )
-            // InternalSignalDSL.g:7479:2: '<'
+            // InternalSignalDSL.g:8065:1: ( '<' )
+            // InternalSignalDSL.g:8066:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
@@ -25801,14 +27725,14 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1"
-    // InternalSignalDSL.g:7488:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8075:1: rule__OpCompare__Group_1__1 : rule__OpCompare__Group_1__1__Impl ;
     public final void rule__OpCompare__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7492:1: ( rule__OpCompare__Group_1__1__Impl )
-            // InternalSignalDSL.g:7493:2: rule__OpCompare__Group_1__1__Impl
+            // InternalSignalDSL.g:8079:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalSignalDSL.g:8080:2: rule__OpCompare__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpCompare__Group_1__1__Impl();
@@ -25834,17 +27758,17 @@
 
 
     // $ANTLR start "rule__OpCompare__Group_1__1__Impl"
-    // InternalSignalDSL.g:7499:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:8086:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
     public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7503:1: ( ( '=' ) )
-            // InternalSignalDSL.g:7504:1: ( '=' )
+            // InternalSignalDSL.g:8090:1: ( ( '=' ) )
+            // InternalSignalDSL.g:8091:1: ( '=' )
             {
-            // InternalSignalDSL.g:7504:1: ( '=' )
-            // InternalSignalDSL.g:7505:2: '='
+            // InternalSignalDSL.g:8091:1: ( '=' )
+            // InternalSignalDSL.g:8092:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1()); 
@@ -25875,14 +27799,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0"
-    // InternalSignalDSL.g:7515:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
+    // InternalSignalDSL.g:8102:1: rule__XOtherOperatorExpression__Group__0 : rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 ;
     public final void rule__XOtherOperatorExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7519:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
-            // InternalSignalDSL.g:7520:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            // InternalSignalDSL.g:8106:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalSignalDSL.g:8107:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
             {
             pushFollow(FOLLOW_54);
             rule__XOtherOperatorExpression__Group__0__Impl();
@@ -25913,17 +27837,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__0__Impl"
-    // InternalSignalDSL.g:7527:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    // InternalSignalDSL.g:8114:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7531:1: ( ( ruleXAdditiveExpression ) )
-            // InternalSignalDSL.g:7532:1: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:8118:1: ( ( ruleXAdditiveExpression ) )
+            // InternalSignalDSL.g:8119:1: ( ruleXAdditiveExpression )
             {
-            // InternalSignalDSL.g:7532:1: ( ruleXAdditiveExpression )
-            // InternalSignalDSL.g:7533:2: ruleXAdditiveExpression
+            // InternalSignalDSL.g:8119:1: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:8120:2: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
@@ -25958,14 +27882,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1"
-    // InternalSignalDSL.g:7542:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:8129:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7546:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
-            // InternalSignalDSL.g:7547:2: rule__XOtherOperatorExpression__Group__1__Impl
+            // InternalSignalDSL.g:8133:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalSignalDSL.g:8134:2: rule__XOtherOperatorExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group__1__Impl();
@@ -25991,29 +27915,29 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group__1__Impl"
-    // InternalSignalDSL.g:7553:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:8140:1: rule__XOtherOperatorExpression__Group__1__Impl : ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) ;
     public final void rule__XOtherOperatorExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7557:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:7558:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8144:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:8145:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:7558:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:7559:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            // InternalSignalDSL.g:8145:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8146:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:7560:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
-            loop75:
+            // InternalSignalDSL.g:8147:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            loop73:
             do {
-                int alt75=2;
-                alt75 = dfa75.predict(input);
-                switch (alt75) {
+                int alt73=2;
+                alt73 = dfa73.predict(input);
+                switch (alt73) {
             	case 1 :
-            	    // InternalSignalDSL.g:7560:3: rule__XOtherOperatorExpression__Group_1__0
+            	    // InternalSignalDSL.g:8147:3: rule__XOtherOperatorExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_55);
             	    rule__XOtherOperatorExpression__Group_1__0();
@@ -26025,7 +27949,7 @@
             	    break;
 
             	default :
-            	    break loop75;
+            	    break loop73;
                 }
             } while (true);
 
@@ -26054,14 +27978,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0"
-    // InternalSignalDSL.g:7569:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
+    // InternalSignalDSL.g:8156:1: rule__XOtherOperatorExpression__Group_1__0 : rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 ;
     public final void rule__XOtherOperatorExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7573:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
-            // InternalSignalDSL.g:7574:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            // InternalSignalDSL.g:8160:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalSignalDSL.g:8161:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XOtherOperatorExpression__Group_1__0__Impl();
@@ -26092,23 +28016,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:7581:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:8168:1: rule__XOtherOperatorExpression__Group_1__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7585:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:7586:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8172:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:8173:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:7586:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:7587:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8173:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8174:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:7588:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:7588:3: rule__XOtherOperatorExpression__Group_1_0__0
+            // InternalSignalDSL.g:8175:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8175:3: rule__XOtherOperatorExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0();
@@ -26143,14 +28067,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1"
-    // InternalSignalDSL.g:7596:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8183:1: rule__XOtherOperatorExpression__Group_1__1 : rule__XOtherOperatorExpression__Group_1__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7600:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:7601:2: rule__XOtherOperatorExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:8187:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:8188:2: rule__XOtherOperatorExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1__1__Impl();
@@ -26176,23 +28100,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:7607:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:8194:1: rule__XOtherOperatorExpression__Group_1__1__Impl : ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7611:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:7612:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8198:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:8199:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:7612:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:7613:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8199:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8200:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:7614:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:7614:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:8201:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8201:3: rule__XOtherOperatorExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__RightOperandAssignment_1_1();
@@ -26227,14 +28151,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0"
-    // InternalSignalDSL.g:7623:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:8210:1: rule__XOtherOperatorExpression__Group_1_0__0 : rule__XOtherOperatorExpression__Group_1_0__0__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7627:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:7628:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:8214:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:8215:2: rule__XOtherOperatorExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0__0__Impl();
@@ -26260,23 +28184,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:7634:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8221:1: rule__XOtherOperatorExpression__Group_1_0__0__Impl : ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7638:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7639:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8225:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8226:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7639:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:7640:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8226:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8227:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:7641:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:7641:3: rule__XOtherOperatorExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:8228:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8228:3: rule__XOtherOperatorExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__0();
@@ -26311,14 +28235,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:7650:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:8237:1: rule__XOtherOperatorExpression__Group_1_0_0__0 : rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7654:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:7655:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:8241:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:8242:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_54);
             rule__XOtherOperatorExpression__Group_1_0_0__0__Impl();
@@ -26349,23 +28273,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7662:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8249:1: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7666:1: ( ( () ) )
-            // InternalSignalDSL.g:7667:1: ( () )
+            // InternalSignalDSL.g:8253:1: ( ( () ) )
+            // InternalSignalDSL.g:8254:1: ( () )
             {
-            // InternalSignalDSL.g:7667:1: ( () )
-            // InternalSignalDSL.g:7668:2: ()
+            // InternalSignalDSL.g:8254:1: ( () )
+            // InternalSignalDSL.g:8255:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:7669:2: ()
-            // InternalSignalDSL.g:7669:3: 
+            // InternalSignalDSL.g:8256:2: ()
+            // InternalSignalDSL.g:8256:3: 
             {
             }
 
@@ -26390,14 +28314,14 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:7677:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8264:1: rule__XOtherOperatorExpression__Group_1_0_0__1 : rule__XOtherOperatorExpression__Group_1_0_0__1__Impl ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7681:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7682:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:8268:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8269:2: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__Group_1_0_0__1__Impl();
@@ -26423,23 +28347,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7688:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8275:1: rule__XOtherOperatorExpression__Group_1_0_0__1__Impl : ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XOtherOperatorExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7692:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:7693:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8279:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8280:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:7693:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:7694:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8280:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8281:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:7695:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:7695:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:8282:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8282:3: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1();
@@ -26474,14 +28398,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0"
-    // InternalSignalDSL.g:7704:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
+    // InternalSignalDSL.g:8291:1: rule__OpOther__Group_2__0 : rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 ;
     public final void rule__OpOther__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7708:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
-            // InternalSignalDSL.g:7709:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            // InternalSignalDSL.g:8295:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalSignalDSL.g:8296:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
             {
             pushFollow(FOLLOW_56);
             rule__OpOther__Group_2__0__Impl();
@@ -26512,17 +28436,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__0__Impl"
-    // InternalSignalDSL.g:7716:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8303:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7720:1: ( ( '>' ) )
-            // InternalSignalDSL.g:7721:1: ( '>' )
+            // InternalSignalDSL.g:8307:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8308:1: ( '>' )
             {
-            // InternalSignalDSL.g:7721:1: ( '>' )
-            // InternalSignalDSL.g:7722:2: '>'
+            // InternalSignalDSL.g:8308:1: ( '>' )
+            // InternalSignalDSL.g:8309:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
@@ -26553,14 +28477,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1"
-    // InternalSignalDSL.g:7731:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
+    // InternalSignalDSL.g:8318:1: rule__OpOther__Group_2__1 : rule__OpOther__Group_2__1__Impl ;
     public final void rule__OpOther__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7735:1: ( rule__OpOther__Group_2__1__Impl )
-            // InternalSignalDSL.g:7736:2: rule__OpOther__Group_2__1__Impl
+            // InternalSignalDSL.g:8322:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalSignalDSL.g:8323:2: rule__OpOther__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_2__1__Impl();
@@ -26586,17 +28510,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_2__1__Impl"
-    // InternalSignalDSL.g:7742:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    // InternalSignalDSL.g:8329:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
     public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7746:1: ( ( '..' ) )
-            // InternalSignalDSL.g:7747:1: ( '..' )
+            // InternalSignalDSL.g:8333:1: ( ( '..' ) )
+            // InternalSignalDSL.g:8334:1: ( '..' )
             {
-            // InternalSignalDSL.g:7747:1: ( '..' )
-            // InternalSignalDSL.g:7748:2: '..'
+            // InternalSignalDSL.g:8334:1: ( '..' )
+            // InternalSignalDSL.g:8335:2: '..'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
@@ -26627,14 +28551,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0"
-    // InternalSignalDSL.g:7758:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
+    // InternalSignalDSL.g:8345:1: rule__OpOther__Group_5__0 : rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 ;
     public final void rule__OpOther__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7762:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
-            // InternalSignalDSL.g:7763:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            // InternalSignalDSL.g:8349:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalSignalDSL.g:8350:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
             {
             pushFollow(FOLLOW_57);
             rule__OpOther__Group_5__0__Impl();
@@ -26665,17 +28589,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__0__Impl"
-    // InternalSignalDSL.g:7770:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8357:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7774:1: ( ( '>' ) )
-            // InternalSignalDSL.g:7775:1: ( '>' )
+            // InternalSignalDSL.g:8361:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8362:1: ( '>' )
             {
-            // InternalSignalDSL.g:7775:1: ( '>' )
-            // InternalSignalDSL.g:7776:2: '>'
+            // InternalSignalDSL.g:8362:1: ( '>' )
+            // InternalSignalDSL.g:8363:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
@@ -26706,14 +28630,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1"
-    // InternalSignalDSL.g:7785:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
+    // InternalSignalDSL.g:8372:1: rule__OpOther__Group_5__1 : rule__OpOther__Group_5__1__Impl ;
     public final void rule__OpOther__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7789:1: ( rule__OpOther__Group_5__1__Impl )
-            // InternalSignalDSL.g:7790:2: rule__OpOther__Group_5__1__Impl
+            // InternalSignalDSL.g:8376:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalSignalDSL.g:8377:2: rule__OpOther__Group_5__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5__1__Impl();
@@ -26739,23 +28663,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5__1__Impl"
-    // InternalSignalDSL.g:7796:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
+    // InternalSignalDSL.g:8383:1: rule__OpOther__Group_5__1__Impl : ( ( rule__OpOther__Alternatives_5_1 ) ) ;
     public final void rule__OpOther__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7800:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
-            // InternalSignalDSL.g:7801:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalSignalDSL.g:8387:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalSignalDSL.g:8388:1: ( ( rule__OpOther__Alternatives_5_1 ) )
             {
-            // InternalSignalDSL.g:7801:1: ( ( rule__OpOther__Alternatives_5_1 ) )
-            // InternalSignalDSL.g:7802:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalSignalDSL.g:8388:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalSignalDSL.g:8389:2: ( rule__OpOther__Alternatives_5_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
             }
-            // InternalSignalDSL.g:7803:2: ( rule__OpOther__Alternatives_5_1 )
-            // InternalSignalDSL.g:7803:3: rule__OpOther__Alternatives_5_1
+            // InternalSignalDSL.g:8390:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalSignalDSL.g:8390:3: rule__OpOther__Alternatives_5_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_5_1();
@@ -26790,14 +28714,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0"
-    // InternalSignalDSL.g:7812:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
+    // InternalSignalDSL.g:8399:1: rule__OpOther__Group_5_1_0__0 : rule__OpOther__Group_5_1_0__0__Impl ;
     public final void rule__OpOther__Group_5_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7816:1: ( rule__OpOther__Group_5_1_0__0__Impl )
-            // InternalSignalDSL.g:7817:2: rule__OpOther__Group_5_1_0__0__Impl
+            // InternalSignalDSL.g:8403:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalSignalDSL.g:8404:2: rule__OpOther__Group_5_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0__0__Impl();
@@ -26823,23 +28747,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0__0__Impl"
-    // InternalSignalDSL.g:7823:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8410:1: rule__OpOther__Group_5_1_0__0__Impl : ( ( rule__OpOther__Group_5_1_0_0__0 ) ) ;
     public final void rule__OpOther__Group_5_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7827:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7828:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalSignalDSL.g:8414:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8415:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7828:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
-            // InternalSignalDSL.g:7829:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalSignalDSL.g:8415:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalSignalDSL.g:8416:2: ( rule__OpOther__Group_5_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
             }
-            // InternalSignalDSL.g:7830:2: ( rule__OpOther__Group_5_1_0_0__0 )
-            // InternalSignalDSL.g:7830:3: rule__OpOther__Group_5_1_0_0__0
+            // InternalSignalDSL.g:8417:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalSignalDSL.g:8417:3: rule__OpOther__Group_5_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__0();
@@ -26874,14 +28798,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0"
-    // InternalSignalDSL.g:7839:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
+    // InternalSignalDSL.g:8426:1: rule__OpOther__Group_5_1_0_0__0 : rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 ;
     public final void rule__OpOther__Group_5_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7843:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
-            // InternalSignalDSL.g:7844:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            // InternalSignalDSL.g:8430:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalSignalDSL.g:8431:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
             {
             pushFollow(FOLLOW_57);
             rule__OpOther__Group_5_1_0_0__0__Impl();
@@ -26912,17 +28836,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7851:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8438:1: rule__OpOther__Group_5_1_0_0__0__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7855:1: ( ( '>' ) )
-            // InternalSignalDSL.g:7856:1: ( '>' )
+            // InternalSignalDSL.g:8442:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8443:1: ( '>' )
             {
-            // InternalSignalDSL.g:7856:1: ( '>' )
-            // InternalSignalDSL.g:7857:2: '>'
+            // InternalSignalDSL.g:8443:1: ( '>' )
+            // InternalSignalDSL.g:8444:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
@@ -26953,14 +28877,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1"
-    // InternalSignalDSL.g:7866:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8453:1: rule__OpOther__Group_5_1_0_0__1 : rule__OpOther__Group_5_1_0_0__1__Impl ;
     public final void rule__OpOther__Group_5_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7870:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
-            // InternalSignalDSL.g:7871:2: rule__OpOther__Group_5_1_0_0__1__Impl
+            // InternalSignalDSL.g:8457:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8458:2: rule__OpOther__Group_5_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_5_1_0_0__1__Impl();
@@ -26986,17 +28910,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_5_1_0_0__1__Impl"
-    // InternalSignalDSL.g:7877:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:8464:1: rule__OpOther__Group_5_1_0_0__1__Impl : ( '>' ) ;
     public final void rule__OpOther__Group_5_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7881:1: ( ( '>' ) )
-            // InternalSignalDSL.g:7882:1: ( '>' )
+            // InternalSignalDSL.g:8468:1: ( ( '>' ) )
+            // InternalSignalDSL.g:8469:1: ( '>' )
             {
-            // InternalSignalDSL.g:7882:1: ( '>' )
-            // InternalSignalDSL.g:7883:2: '>'
+            // InternalSignalDSL.g:8469:1: ( '>' )
+            // InternalSignalDSL.g:8470:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
@@ -27027,14 +28951,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0"
-    // InternalSignalDSL.g:7893:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
+    // InternalSignalDSL.g:8480:1: rule__OpOther__Group_6__0 : rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 ;
     public final void rule__OpOther__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7897:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
-            // InternalSignalDSL.g:7898:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            // InternalSignalDSL.g:8484:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalSignalDSL.g:8485:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
             {
             pushFollow(FOLLOW_58);
             rule__OpOther__Group_6__0__Impl();
@@ -27065,17 +28989,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__0__Impl"
-    // InternalSignalDSL.g:7905:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8492:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7909:1: ( ( '<' ) )
-            // InternalSignalDSL.g:7910:1: ( '<' )
+            // InternalSignalDSL.g:8496:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8497:1: ( '<' )
             {
-            // InternalSignalDSL.g:7910:1: ( '<' )
-            // InternalSignalDSL.g:7911:2: '<'
+            // InternalSignalDSL.g:8497:1: ( '<' )
+            // InternalSignalDSL.g:8498:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
@@ -27106,14 +29030,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1"
-    // InternalSignalDSL.g:7920:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
+    // InternalSignalDSL.g:8507:1: rule__OpOther__Group_6__1 : rule__OpOther__Group_6__1__Impl ;
     public final void rule__OpOther__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7924:1: ( rule__OpOther__Group_6__1__Impl )
-            // InternalSignalDSL.g:7925:2: rule__OpOther__Group_6__1__Impl
+            // InternalSignalDSL.g:8511:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalSignalDSL.g:8512:2: rule__OpOther__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6__1__Impl();
@@ -27139,23 +29063,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6__1__Impl"
-    // InternalSignalDSL.g:7931:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
+    // InternalSignalDSL.g:8518:1: rule__OpOther__Group_6__1__Impl : ( ( rule__OpOther__Alternatives_6_1 ) ) ;
     public final void rule__OpOther__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7935:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
-            // InternalSignalDSL.g:7936:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalSignalDSL.g:8522:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalSignalDSL.g:8523:1: ( ( rule__OpOther__Alternatives_6_1 ) )
             {
-            // InternalSignalDSL.g:7936:1: ( ( rule__OpOther__Alternatives_6_1 ) )
-            // InternalSignalDSL.g:7937:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalSignalDSL.g:8523:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalSignalDSL.g:8524:2: ( rule__OpOther__Alternatives_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
             }
-            // InternalSignalDSL.g:7938:2: ( rule__OpOther__Alternatives_6_1 )
-            // InternalSignalDSL.g:7938:3: rule__OpOther__Alternatives_6_1
+            // InternalSignalDSL.g:8525:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalSignalDSL.g:8525:3: rule__OpOther__Alternatives_6_1
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Alternatives_6_1();
@@ -27190,14 +29114,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0"
-    // InternalSignalDSL.g:7947:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
+    // InternalSignalDSL.g:8534:1: rule__OpOther__Group_6_1_0__0 : rule__OpOther__Group_6_1_0__0__Impl ;
     public final void rule__OpOther__Group_6_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7951:1: ( rule__OpOther__Group_6_1_0__0__Impl )
-            // InternalSignalDSL.g:7952:2: rule__OpOther__Group_6_1_0__0__Impl
+            // InternalSignalDSL.g:8538:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalSignalDSL.g:8539:2: rule__OpOther__Group_6_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0__0__Impl();
@@ -27223,23 +29147,23 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0__0__Impl"
-    // InternalSignalDSL.g:7958:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8545:1: rule__OpOther__Group_6_1_0__0__Impl : ( ( rule__OpOther__Group_6_1_0_0__0 ) ) ;
     public final void rule__OpOther__Group_6_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7962:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:7963:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalSignalDSL.g:8549:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8550:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:7963:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
-            // InternalSignalDSL.g:7964:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalSignalDSL.g:8550:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalSignalDSL.g:8551:2: ( rule__OpOther__Group_6_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
             }
-            // InternalSignalDSL.g:7965:2: ( rule__OpOther__Group_6_1_0_0__0 )
-            // InternalSignalDSL.g:7965:3: rule__OpOther__Group_6_1_0_0__0
+            // InternalSignalDSL.g:8552:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalSignalDSL.g:8552:3: rule__OpOther__Group_6_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__0();
@@ -27274,14 +29198,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0"
-    // InternalSignalDSL.g:7974:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
+    // InternalSignalDSL.g:8561:1: rule__OpOther__Group_6_1_0_0__0 : rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 ;
     public final void rule__OpOther__Group_6_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7978:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
-            // InternalSignalDSL.g:7979:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            // InternalSignalDSL.g:8565:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalSignalDSL.g:8566:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
             {
             pushFollow(FOLLOW_42);
             rule__OpOther__Group_6_1_0_0__0__Impl();
@@ -27312,17 +29236,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__0__Impl"
-    // InternalSignalDSL.g:7986:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8573:1: rule__OpOther__Group_6_1_0_0__0__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:7990:1: ( ( '<' ) )
-            // InternalSignalDSL.g:7991:1: ( '<' )
+            // InternalSignalDSL.g:8577:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8578:1: ( '<' )
             {
-            // InternalSignalDSL.g:7991:1: ( '<' )
-            // InternalSignalDSL.g:7992:2: '<'
+            // InternalSignalDSL.g:8578:1: ( '<' )
+            // InternalSignalDSL.g:8579:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
@@ -27353,14 +29277,14 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1"
-    // InternalSignalDSL.g:8001:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8588:1: rule__OpOther__Group_6_1_0_0__1 : rule__OpOther__Group_6_1_0_0__1__Impl ;
     public final void rule__OpOther__Group_6_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8005:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8006:2: rule__OpOther__Group_6_1_0_0__1__Impl
+            // InternalSignalDSL.g:8592:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8593:2: rule__OpOther__Group_6_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__OpOther__Group_6_1_0_0__1__Impl();
@@ -27386,17 +29310,17 @@
 
 
     // $ANTLR start "rule__OpOther__Group_6_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8012:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:8599:1: rule__OpOther__Group_6_1_0_0__1__Impl : ( '<' ) ;
     public final void rule__OpOther__Group_6_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8016:1: ( ( '<' ) )
-            // InternalSignalDSL.g:8017:1: ( '<' )
+            // InternalSignalDSL.g:8603:1: ( ( '<' ) )
+            // InternalSignalDSL.g:8604:1: ( '<' )
             {
-            // InternalSignalDSL.g:8017:1: ( '<' )
-            // InternalSignalDSL.g:8018:2: '<'
+            // InternalSignalDSL.g:8604:1: ( '<' )
+            // InternalSignalDSL.g:8605:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
@@ -27427,14 +29351,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0"
-    // InternalSignalDSL.g:8028:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
+    // InternalSignalDSL.g:8615:1: rule__XAdditiveExpression__Group__0 : rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 ;
     public final void rule__XAdditiveExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8032:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
-            // InternalSignalDSL.g:8033:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            // InternalSignalDSL.g:8619:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalSignalDSL.g:8620:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
             {
             pushFollow(FOLLOW_59);
             rule__XAdditiveExpression__Group__0__Impl();
@@ -27465,17 +29389,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__0__Impl"
-    // InternalSignalDSL.g:8040:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    // InternalSignalDSL.g:8627:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8044:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalSignalDSL.g:8045:1: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:8631:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalSignalDSL.g:8632:1: ( ruleXMultiplicativeExpression )
             {
-            // InternalSignalDSL.g:8045:1: ( ruleXMultiplicativeExpression )
-            // InternalSignalDSL.g:8046:2: ruleXMultiplicativeExpression
+            // InternalSignalDSL.g:8632:1: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:8633:2: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0()); 
@@ -27510,14 +29434,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1"
-    // InternalSignalDSL.g:8055:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:8642:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
     public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8059:1: ( rule__XAdditiveExpression__Group__1__Impl )
-            // InternalSignalDSL.g:8060:2: rule__XAdditiveExpression__Group__1__Impl
+            // InternalSignalDSL.g:8646:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalSignalDSL.g:8647:2: rule__XAdditiveExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group__1__Impl();
@@ -27543,50 +29467,50 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group__1__Impl"
-    // InternalSignalDSL.g:8066:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:8653:1: rule__XAdditiveExpression__Group__1__Impl : ( ( rule__XAdditiveExpression__Group_1__0 )* ) ;
     public final void rule__XAdditiveExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8070:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:8071:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8657:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:8658:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:8071:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:8072:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            // InternalSignalDSL.g:8658:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8659:2: ( rule__XAdditiveExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8073:2: ( rule__XAdditiveExpression__Group_1__0 )*
-            loop76:
+            // InternalSignalDSL.g:8660:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            loop74:
             do {
-                int alt76=2;
-                int LA76_0 = input.LA(1);
+                int alt74=2;
+                int LA74_0 = input.LA(1);
 
-                if ( (LA76_0==35) ) {
-                    int LA76_2 = input.LA(2);
+                if ( (LA74_0==35) ) {
+                    int LA74_2 = input.LA(2);
 
-                    if ( (synpred120_InternalSignalDSL()) ) {
-                        alt76=1;
+                    if ( (synpred126_InternalSignalDSL()) ) {
+                        alt74=1;
                     }
 
 
                 }
-                else if ( (LA76_0==34) ) {
-                    int LA76_3 = input.LA(2);
+                else if ( (LA74_0==34) ) {
+                    int LA74_3 = input.LA(2);
 
-                    if ( (synpred120_InternalSignalDSL()) ) {
-                        alt76=1;
+                    if ( (synpred126_InternalSignalDSL()) ) {
+                        alt74=1;
                     }
 
 
                 }
 
 
-                switch (alt76) {
+                switch (alt74) {
             	case 1 :
-            	    // InternalSignalDSL.g:8073:3: rule__XAdditiveExpression__Group_1__0
+            	    // InternalSignalDSL.g:8660:3: rule__XAdditiveExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_60);
             	    rule__XAdditiveExpression__Group_1__0();
@@ -27598,7 +29522,7 @@
             	    break;
 
             	default :
-            	    break loop76;
+            	    break loop74;
                 }
             } while (true);
 
@@ -27627,14 +29551,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0"
-    // InternalSignalDSL.g:8082:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
+    // InternalSignalDSL.g:8669:1: rule__XAdditiveExpression__Group_1__0 : rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 ;
     public final void rule__XAdditiveExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8086:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
-            // InternalSignalDSL.g:8087:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            // InternalSignalDSL.g:8673:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalSignalDSL.g:8674:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XAdditiveExpression__Group_1__0__Impl();
@@ -27665,23 +29589,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:8094:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:8681:1: rule__XAdditiveExpression__Group_1__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) ;
     public final void rule__XAdditiveExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8098:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8099:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8685:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:8686:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8099:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8100:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8686:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8687:2: ( rule__XAdditiveExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8101:2: ( rule__XAdditiveExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:8101:3: rule__XAdditiveExpression__Group_1_0__0
+            // InternalSignalDSL.g:8688:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8688:3: rule__XAdditiveExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0();
@@ -27716,14 +29640,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1"
-    // InternalSignalDSL.g:8109:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8696:1: rule__XAdditiveExpression__Group_1__1 : rule__XAdditiveExpression__Group_1__1__Impl ;
     public final void rule__XAdditiveExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8113:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:8114:2: rule__XAdditiveExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:8700:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:8701:2: rule__XAdditiveExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1__1__Impl();
@@ -27749,23 +29673,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:8120:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:8707:1: rule__XAdditiveExpression__Group_1__1__Impl : ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XAdditiveExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8124:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:8125:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8711:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:8712:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:8125:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:8126:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8712:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8713:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:8127:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:8127:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:8714:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8714:3: rule__XAdditiveExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__RightOperandAssignment_1_1();
@@ -27800,14 +29724,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0"
-    // InternalSignalDSL.g:8136:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:8723:1: rule__XAdditiveExpression__Group_1_0__0 : rule__XAdditiveExpression__Group_1_0__0__Impl ;
     public final void rule__XAdditiveExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8140:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:8141:2: rule__XAdditiveExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:8727:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:8728:2: rule__XAdditiveExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0__0__Impl();
@@ -27833,23 +29757,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8147:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8734:1: rule__XAdditiveExpression__Group_1_0__0__Impl : ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XAdditiveExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8151:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8152:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8738:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8739:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8152:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8153:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8739:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8740:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8154:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8154:3: rule__XAdditiveExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:8741:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8741:3: rule__XAdditiveExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__0();
@@ -27884,14 +29808,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:8163:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:8750:1: rule__XAdditiveExpression__Group_1_0_0__0 : rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 ;
     public final void rule__XAdditiveExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8167:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:8168:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:8754:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:8755:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_59);
             rule__XAdditiveExpression__Group_1_0_0__0__Impl();
@@ -27922,23 +29846,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8175:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8762:1: rule__XAdditiveExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XAdditiveExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8179:1: ( ( () ) )
-            // InternalSignalDSL.g:8180:1: ( () )
+            // InternalSignalDSL.g:8766:1: ( ( () ) )
+            // InternalSignalDSL.g:8767:1: ( () )
             {
-            // InternalSignalDSL.g:8180:1: ( () )
-            // InternalSignalDSL.g:8181:2: ()
+            // InternalSignalDSL.g:8767:1: ( () )
+            // InternalSignalDSL.g:8768:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8182:2: ()
-            // InternalSignalDSL.g:8182:3: 
+            // InternalSignalDSL.g:8769:2: ()
+            // InternalSignalDSL.g:8769:3: 
             {
             }
 
@@ -27963,14 +29887,14 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:8190:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8777:1: rule__XAdditiveExpression__Group_1_0_0__1 : rule__XAdditiveExpression__Group_1_0_0__1__Impl ;
     public final void rule__XAdditiveExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8194:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8195:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:8781:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8782:2: rule__XAdditiveExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__Group_1_0_0__1__Impl();
@@ -27996,23 +29920,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8201:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8788:1: rule__XAdditiveExpression__Group_1_0_0__1__Impl : ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XAdditiveExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8205:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:8206:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8792:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8793:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8206:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:8207:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8793:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8794:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:8208:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:8208:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:8795:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8795:3: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XAdditiveExpression__FeatureAssignment_1_0_0_1();
@@ -28047,14 +29971,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0"
-    // InternalSignalDSL.g:8217:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
+    // InternalSignalDSL.g:8804:1: rule__XMultiplicativeExpression__Group__0 : rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 ;
     public final void rule__XMultiplicativeExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8221:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
-            // InternalSignalDSL.g:8222:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            // InternalSignalDSL.g:8808:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalSignalDSL.g:8809:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
             {
             pushFollow(FOLLOW_61);
             rule__XMultiplicativeExpression__Group__0__Impl();
@@ -28085,17 +30009,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__0__Impl"
-    // InternalSignalDSL.g:8229:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    // InternalSignalDSL.g:8816:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8233:1: ( ( ruleXUnaryOperation ) )
-            // InternalSignalDSL.g:8234:1: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:8820:1: ( ( ruleXUnaryOperation ) )
+            // InternalSignalDSL.g:8821:1: ( ruleXUnaryOperation )
             {
-            // InternalSignalDSL.g:8234:1: ( ruleXUnaryOperation )
-            // InternalSignalDSL.g:8235:2: ruleXUnaryOperation
+            // InternalSignalDSL.g:8821:1: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:8822:2: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
@@ -28130,14 +30054,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1"
-    // InternalSignalDSL.g:8244:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:8831:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8248:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
-            // InternalSignalDSL.g:8249:2: rule__XMultiplicativeExpression__Group__1__Impl
+            // InternalSignalDSL.g:8835:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalSignalDSL.g:8836:2: rule__XMultiplicativeExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group__1__Impl();
@@ -28163,32 +30087,32 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group__1__Impl"
-    // InternalSignalDSL.g:8255:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:8842:1: rule__XMultiplicativeExpression__Group__1__Impl : ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) ;
     public final void rule__XMultiplicativeExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8259:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:8260:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8846:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:8847:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:8260:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:8261:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            // InternalSignalDSL.g:8847:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:8848:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8262:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
-            loop77:
+            // InternalSignalDSL.g:8849:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            loop75:
             do {
-                int alt77=2;
+                int alt75=2;
                 switch ( input.LA(1) ) {
                 case 36:
                     {
-                    int LA77_2 = input.LA(2);
+                    int LA75_2 = input.LA(2);
 
-                    if ( (synpred121_InternalSignalDSL()) ) {
-                        alt77=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -28196,10 +30120,10 @@
                     break;
                 case 37:
                     {
-                    int LA77_3 = input.LA(2);
+                    int LA75_3 = input.LA(2);
 
-                    if ( (synpred121_InternalSignalDSL()) ) {
-                        alt77=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -28207,10 +30131,10 @@
                     break;
                 case 38:
                     {
-                    int LA77_4 = input.LA(2);
+                    int LA75_4 = input.LA(2);
 
-                    if ( (synpred121_InternalSignalDSL()) ) {
-                        alt77=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -28218,10 +30142,10 @@
                     break;
                 case 39:
                     {
-                    int LA77_5 = input.LA(2);
+                    int LA75_5 = input.LA(2);
 
-                    if ( (synpred121_InternalSignalDSL()) ) {
-                        alt77=1;
+                    if ( (synpred127_InternalSignalDSL()) ) {
+                        alt75=1;
                     }
 
 
@@ -28230,9 +30154,9 @@
 
                 }
 
-                switch (alt77) {
+                switch (alt75) {
             	case 1 :
-            	    // InternalSignalDSL.g:8262:3: rule__XMultiplicativeExpression__Group_1__0
+            	    // InternalSignalDSL.g:8849:3: rule__XMultiplicativeExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_62);
             	    rule__XMultiplicativeExpression__Group_1__0();
@@ -28244,7 +30168,7 @@
             	    break;
 
             	default :
-            	    break loop77;
+            	    break loop75;
                 }
             } while (true);
 
@@ -28273,14 +30197,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0"
-    // InternalSignalDSL.g:8271:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
+    // InternalSignalDSL.g:8858:1: rule__XMultiplicativeExpression__Group_1__0 : rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 ;
     public final void rule__XMultiplicativeExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8275:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
-            // InternalSignalDSL.g:8276:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            // InternalSignalDSL.g:8862:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalSignalDSL.g:8863:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XMultiplicativeExpression__Group_1__0__Impl();
@@ -28311,23 +30235,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:8283:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:8870:1: rule__XMultiplicativeExpression__Group_1__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8287:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8288:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8874:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:8875:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8288:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8289:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8875:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:8876:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8290:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:8290:3: rule__XMultiplicativeExpression__Group_1_0__0
+            // InternalSignalDSL.g:8877:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:8877:3: rule__XMultiplicativeExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0();
@@ -28362,14 +30286,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1"
-    // InternalSignalDSL.g:8298:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:8885:1: rule__XMultiplicativeExpression__Group_1__1 : rule__XMultiplicativeExpression__Group_1__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8302:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:8303:2: rule__XMultiplicativeExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:8889:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:8890:2: rule__XMultiplicativeExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1__1__Impl();
@@ -28395,23 +30319,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:8309:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:8896:1: rule__XMultiplicativeExpression__Group_1__1__Impl : ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8313:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:8314:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8900:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:8901:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:8314:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
-            // InternalSignalDSL.g:8315:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8901:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalSignalDSL.g:8902:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:8316:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
-            // InternalSignalDSL.g:8316:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
+            // InternalSignalDSL.g:8903:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalSignalDSL.g:8903:3: rule__XMultiplicativeExpression__RightOperandAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__RightOperandAssignment_1_1();
@@ -28446,14 +30370,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0"
-    // InternalSignalDSL.g:8325:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:8912:1: rule__XMultiplicativeExpression__Group_1_0__0 : rule__XMultiplicativeExpression__Group_1_0__0__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8329:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:8330:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:8916:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:8917:2: rule__XMultiplicativeExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0__0__Impl();
@@ -28479,23 +30403,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8336:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:8923:1: rule__XMultiplicativeExpression__Group_1_0__0__Impl : ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8340:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8341:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8927:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:8928:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8341:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8342:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8928:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:8929:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8343:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8343:3: rule__XMultiplicativeExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:8930:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:8930:3: rule__XMultiplicativeExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__0();
@@ -28530,14 +30454,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:8352:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:8939:1: rule__XMultiplicativeExpression__Group_1_0_0__0 : rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8356:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:8357:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:8943:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:8944:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_61);
             rule__XMultiplicativeExpression__Group_1_0_0__0__Impl();
@@ -28568,23 +30492,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8364:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:8951:1: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8368:1: ( ( () ) )
-            // InternalSignalDSL.g:8369:1: ( () )
+            // InternalSignalDSL.g:8955:1: ( ( () ) )
+            // InternalSignalDSL.g:8956:1: ( () )
             {
-            // InternalSignalDSL.g:8369:1: ( () )
-            // InternalSignalDSL.g:8370:2: ()
+            // InternalSignalDSL.g:8956:1: ( () )
+            // InternalSignalDSL.g:8957:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8371:2: ()
-            // InternalSignalDSL.g:8371:3: 
+            // InternalSignalDSL.g:8958:2: ()
+            // InternalSignalDSL.g:8958:3: 
             {
             }
 
@@ -28609,14 +30533,14 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:8379:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:8966:1: rule__XMultiplicativeExpression__Group_1_0_0__1 : rule__XMultiplicativeExpression__Group_1_0_0__1__Impl ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8383:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8384:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:8970:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:8971:2: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__Group_1_0_0__1__Impl();
@@ -28642,23 +30566,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8390:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:8977:1: rule__XMultiplicativeExpression__Group_1_0_0__1__Impl : ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) ;
     public final void rule__XMultiplicativeExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8394:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:8395:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8981:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:8982:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8395:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
-            // InternalSignalDSL.g:8396:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8982:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalSignalDSL.g:8983:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:8397:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
-            // InternalSignalDSL.g:8397:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
+            // InternalSignalDSL.g:8984:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalSignalDSL.g:8984:3: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1();
@@ -28693,14 +30617,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0"
-    // InternalSignalDSL.g:8406:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
+    // InternalSignalDSL.g:8993:1: rule__XUnaryOperation__Group_0__0 : rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 ;
     public final void rule__XUnaryOperation__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8410:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
-            // InternalSignalDSL.g:8411:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            // InternalSignalDSL.g:8997:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalSignalDSL.g:8998:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
             {
             pushFollow(FOLLOW_63);
             rule__XUnaryOperation__Group_0__0__Impl();
@@ -28731,23 +30655,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__0__Impl"
-    // InternalSignalDSL.g:8418:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9005:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
     public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8422:1: ( ( () ) )
-            // InternalSignalDSL.g:8423:1: ( () )
+            // InternalSignalDSL.g:9009:1: ( ( () ) )
+            // InternalSignalDSL.g:9010:1: ( () )
             {
-            // InternalSignalDSL.g:8423:1: ( () )
-            // InternalSignalDSL.g:8424:2: ()
+            // InternalSignalDSL.g:9010:1: ( () )
+            // InternalSignalDSL.g:9011:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
             }
-            // InternalSignalDSL.g:8425:2: ()
-            // InternalSignalDSL.g:8425:3: 
+            // InternalSignalDSL.g:9012:2: ()
+            // InternalSignalDSL.g:9012:3: 
             {
             }
 
@@ -28772,14 +30696,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1"
-    // InternalSignalDSL.g:8433:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
+    // InternalSignalDSL.g:9020:1: rule__XUnaryOperation__Group_0__1 : rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 ;
     public final void rule__XUnaryOperation__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8437:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
-            // InternalSignalDSL.g:8438:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            // InternalSignalDSL.g:9024:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalSignalDSL.g:9025:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
             {
             pushFollow(FOLLOW_35);
             rule__XUnaryOperation__Group_0__1__Impl();
@@ -28810,23 +30734,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__1__Impl"
-    // InternalSignalDSL.g:8445:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
+    // InternalSignalDSL.g:9032:1: rule__XUnaryOperation__Group_0__1__Impl : ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) ;
     public final void rule__XUnaryOperation__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8449:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
-            // InternalSignalDSL.g:8450:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:9036:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalSignalDSL.g:9037:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
             {
-            // InternalSignalDSL.g:8450:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
-            // InternalSignalDSL.g:8451:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:9037:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalSignalDSL.g:9038:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
             }
-            // InternalSignalDSL.g:8452:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
-            // InternalSignalDSL.g:8452:3: rule__XUnaryOperation__FeatureAssignment_0_1
+            // InternalSignalDSL.g:9039:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalSignalDSL.g:9039:3: rule__XUnaryOperation__FeatureAssignment_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__FeatureAssignment_0_1();
@@ -28861,14 +30785,14 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2"
-    // InternalSignalDSL.g:8460:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
+    // InternalSignalDSL.g:9047:1: rule__XUnaryOperation__Group_0__2 : rule__XUnaryOperation__Group_0__2__Impl ;
     public final void rule__XUnaryOperation__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8464:1: ( rule__XUnaryOperation__Group_0__2__Impl )
-            // InternalSignalDSL.g:8465:2: rule__XUnaryOperation__Group_0__2__Impl
+            // InternalSignalDSL.g:9051:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalSignalDSL.g:9052:2: rule__XUnaryOperation__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__Group_0__2__Impl();
@@ -28894,23 +30818,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__Group_0__2__Impl"
-    // InternalSignalDSL.g:8471:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
+    // InternalSignalDSL.g:9058:1: rule__XUnaryOperation__Group_0__2__Impl : ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) ;
     public final void rule__XUnaryOperation__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8475:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
-            // InternalSignalDSL.g:8476:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalSignalDSL.g:9062:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalSignalDSL.g:9063:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
             {
-            // InternalSignalDSL.g:8476:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
-            // InternalSignalDSL.g:8477:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalSignalDSL.g:9063:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalSignalDSL.g:9064:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
             }
-            // InternalSignalDSL.g:8478:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
-            // InternalSignalDSL.g:8478:3: rule__XUnaryOperation__OperandAssignment_0_2
+            // InternalSignalDSL.g:9065:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalSignalDSL.g:9065:3: rule__XUnaryOperation__OperandAssignment_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XUnaryOperation__OperandAssignment_0_2();
@@ -28945,14 +30869,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0"
-    // InternalSignalDSL.g:8487:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
+    // InternalSignalDSL.g:9074:1: rule__XCastedExpression__Group__0 : rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 ;
     public final void rule__XCastedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8491:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
-            // InternalSignalDSL.g:8492:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            // InternalSignalDSL.g:9078:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalSignalDSL.g:9079:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
             {
             pushFollow(FOLLOW_64);
             rule__XCastedExpression__Group__0__Impl();
@@ -28983,17 +30907,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__0__Impl"
-    // InternalSignalDSL.g:8499:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    // InternalSignalDSL.g:9086:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
     public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8503:1: ( ( ruleXPostfixOperation ) )
-            // InternalSignalDSL.g:8504:1: ( ruleXPostfixOperation )
+            // InternalSignalDSL.g:9090:1: ( ( ruleXPostfixOperation ) )
+            // InternalSignalDSL.g:9091:1: ( ruleXPostfixOperation )
             {
-            // InternalSignalDSL.g:8504:1: ( ruleXPostfixOperation )
-            // InternalSignalDSL.g:8505:2: ruleXPostfixOperation
+            // InternalSignalDSL.g:9091:1: ( ruleXPostfixOperation )
+            // InternalSignalDSL.g:9092:2: ruleXPostfixOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
@@ -29028,14 +30952,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1"
-    // InternalSignalDSL.g:8514:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    // InternalSignalDSL.g:9101:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
     public final void rule__XCastedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8518:1: ( rule__XCastedExpression__Group__1__Impl )
-            // InternalSignalDSL.g:8519:2: rule__XCastedExpression__Group__1__Impl
+            // InternalSignalDSL.g:9105:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalSignalDSL.g:9106:2: rule__XCastedExpression__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group__1__Impl();
@@ -29061,41 +30985,41 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group__1__Impl"
-    // InternalSignalDSL.g:8525:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:9112:1: rule__XCastedExpression__Group__1__Impl : ( ( rule__XCastedExpression__Group_1__0 )* ) ;
     public final void rule__XCastedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8529:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
-            // InternalSignalDSL.g:8530:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9116:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalSignalDSL.g:9117:1: ( ( rule__XCastedExpression__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:8530:1: ( ( rule__XCastedExpression__Group_1__0 )* )
-            // InternalSignalDSL.g:8531:2: ( rule__XCastedExpression__Group_1__0 )*
+            // InternalSignalDSL.g:9117:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalSignalDSL.g:9118:2: ( rule__XCastedExpression__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8532:2: ( rule__XCastedExpression__Group_1__0 )*
-            loop78:
+            // InternalSignalDSL.g:9119:2: ( rule__XCastedExpression__Group_1__0 )*
+            loop76:
             do {
-                int alt78=2;
-                int LA78_0 = input.LA(1);
+                int alt76=2;
+                int LA76_0 = input.LA(1);
 
-                if ( (LA78_0==78) ) {
-                    int LA78_2 = input.LA(2);
+                if ( (LA76_0==87) ) {
+                    int LA76_2 = input.LA(2);
 
-                    if ( (synpred122_InternalSignalDSL()) ) {
-                        alt78=1;
+                    if ( (synpred128_InternalSignalDSL()) ) {
+                        alt76=1;
                     }
 
 
                 }
 
 
-                switch (alt78) {
+                switch (alt76) {
             	case 1 :
-            	    // InternalSignalDSL.g:8532:3: rule__XCastedExpression__Group_1__0
+            	    // InternalSignalDSL.g:9119:3: rule__XCastedExpression__Group_1__0
             	    {
             	    pushFollow(FOLLOW_65);
             	    rule__XCastedExpression__Group_1__0();
@@ -29107,7 +31031,7 @@
             	    break;
 
             	default :
-            	    break loop78;
+            	    break loop76;
                 }
             } while (true);
 
@@ -29136,14 +31060,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0"
-    // InternalSignalDSL.g:8541:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
+    // InternalSignalDSL.g:9128:1: rule__XCastedExpression__Group_1__0 : rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 ;
     public final void rule__XCastedExpression__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8545:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
-            // InternalSignalDSL.g:8546:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            // InternalSignalDSL.g:9132:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalSignalDSL.g:9133:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
             {
             pushFollow(FOLLOW_52);
             rule__XCastedExpression__Group_1__0__Impl();
@@ -29174,23 +31098,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__0__Impl"
-    // InternalSignalDSL.g:8553:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9140:1: rule__XCastedExpression__Group_1__0__Impl : ( ( rule__XCastedExpression__Group_1_0__0 ) ) ;
     public final void rule__XCastedExpression__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8557:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8558:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9144:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:9145:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8558:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8559:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9145:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9146:2: ( rule__XCastedExpression__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8560:2: ( rule__XCastedExpression__Group_1_0__0 )
-            // InternalSignalDSL.g:8560:3: rule__XCastedExpression__Group_1_0__0
+            // InternalSignalDSL.g:9147:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalSignalDSL.g:9147:3: rule__XCastedExpression__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0();
@@ -29225,14 +31149,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1"
-    // InternalSignalDSL.g:8568:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
+    // InternalSignalDSL.g:9155:1: rule__XCastedExpression__Group_1__1 : rule__XCastedExpression__Group_1__1__Impl ;
     public final void rule__XCastedExpression__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8572:1: ( rule__XCastedExpression__Group_1__1__Impl )
-            // InternalSignalDSL.g:8573:2: rule__XCastedExpression__Group_1__1__Impl
+            // InternalSignalDSL.g:9159:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalSignalDSL.g:9160:2: rule__XCastedExpression__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1__1__Impl();
@@ -29258,23 +31182,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1__1__Impl"
-    // InternalSignalDSL.g:8579:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:9166:1: rule__XCastedExpression__Group_1__1__Impl : ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) ;
     public final void rule__XCastedExpression__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8583:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:8584:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalSignalDSL.g:9170:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:9171:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:8584:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
-            // InternalSignalDSL.g:8585:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalSignalDSL.g:9171:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalSignalDSL.g:9172:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:8586:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
-            // InternalSignalDSL.g:8586:3: rule__XCastedExpression__TypeAssignment_1_1
+            // InternalSignalDSL.g:9173:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalSignalDSL.g:9173:3: rule__XCastedExpression__TypeAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__TypeAssignment_1_1();
@@ -29309,14 +31233,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0"
-    // InternalSignalDSL.g:8595:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
+    // InternalSignalDSL.g:9182:1: rule__XCastedExpression__Group_1_0__0 : rule__XCastedExpression__Group_1_0__0__Impl ;
     public final void rule__XCastedExpression__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8599:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
-            // InternalSignalDSL.g:8600:2: rule__XCastedExpression__Group_1_0__0__Impl
+            // InternalSignalDSL.g:9186:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalSignalDSL.g:9187:2: rule__XCastedExpression__Group_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0__0__Impl();
@@ -29342,23 +31266,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8606:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9193:1: rule__XCastedExpression__Group_1_0__0__Impl : ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) ;
     public final void rule__XCastedExpression__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8610:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8611:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9197:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9198:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8611:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8612:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9198:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9199:2: ( rule__XCastedExpression__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8613:2: ( rule__XCastedExpression__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8613:3: rule__XCastedExpression__Group_1_0_0__0
+            // InternalSignalDSL.g:9200:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9200:3: rule__XCastedExpression__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__0();
@@ -29393,14 +31317,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0"
-    // InternalSignalDSL.g:8622:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:9209:1: rule__XCastedExpression__Group_1_0_0__0 : rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 ;
     public final void rule__XCastedExpression__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8626:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
-            // InternalSignalDSL.g:8627:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            // InternalSignalDSL.g:9213:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalSignalDSL.g:9214:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
             {
             pushFollow(FOLLOW_64);
             rule__XCastedExpression__Group_1_0_0__0__Impl();
@@ -29431,23 +31355,23 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8634:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9221:1: rule__XCastedExpression__Group_1_0_0__0__Impl : ( () ) ;
     public final void rule__XCastedExpression__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8638:1: ( ( () ) )
-            // InternalSignalDSL.g:8639:1: ( () )
+            // InternalSignalDSL.g:9225:1: ( ( () ) )
+            // InternalSignalDSL.g:9226:1: ( () )
             {
-            // InternalSignalDSL.g:8639:1: ( () )
-            // InternalSignalDSL.g:8640:2: ()
+            // InternalSignalDSL.g:9226:1: ( () )
+            // InternalSignalDSL.g:9227:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8641:2: ()
-            // InternalSignalDSL.g:8641:3: 
+            // InternalSignalDSL.g:9228:2: ()
+            // InternalSignalDSL.g:9228:3: 
             {
             }
 
@@ -29472,14 +31396,14 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1"
-    // InternalSignalDSL.g:8649:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:9236:1: rule__XCastedExpression__Group_1_0_0__1 : rule__XCastedExpression__Group_1_0_0__1__Impl ;
     public final void rule__XCastedExpression__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8653:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:8654:2: rule__XCastedExpression__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:9240:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:9241:2: rule__XCastedExpression__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCastedExpression__Group_1_0_0__1__Impl();
@@ -29505,22 +31429,22 @@
 
 
     // $ANTLR start "rule__XCastedExpression__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:8660:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
+    // InternalSignalDSL.g:9247:1: rule__XCastedExpression__Group_1_0_0__1__Impl : ( 'as' ) ;
     public final void rule__XCastedExpression__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8664:1: ( ( 'as' ) )
-            // InternalSignalDSL.g:8665:1: ( 'as' )
+            // InternalSignalDSL.g:9251:1: ( ( 'as' ) )
+            // InternalSignalDSL.g:9252:1: ( 'as' )
             {
-            // InternalSignalDSL.g:8665:1: ( 'as' )
-            // InternalSignalDSL.g:8666:2: 'as'
+            // InternalSignalDSL.g:9252:1: ( 'as' )
+            // InternalSignalDSL.g:9253:2: 'as'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
-            match(input,78,FOLLOW_2); if (state.failed) return ;
+            match(input,87,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
             }
@@ -29546,14 +31470,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0"
-    // InternalSignalDSL.g:8676:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
+    // InternalSignalDSL.g:9263:1: rule__XPostfixOperation__Group__0 : rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 ;
     public final void rule__XPostfixOperation__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8680:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
-            // InternalSignalDSL.g:8681:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            // InternalSignalDSL.g:9267:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalSignalDSL.g:9268:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
             {
             pushFollow(FOLLOW_66);
             rule__XPostfixOperation__Group__0__Impl();
@@ -29584,17 +31508,17 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__0__Impl"
-    // InternalSignalDSL.g:8688:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    // InternalSignalDSL.g:9275:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
     public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8692:1: ( ( ruleXMemberFeatureCall ) )
-            // InternalSignalDSL.g:8693:1: ( ruleXMemberFeatureCall )
+            // InternalSignalDSL.g:9279:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalSignalDSL.g:9280:1: ( ruleXMemberFeatureCall )
             {
-            // InternalSignalDSL.g:8693:1: ( ruleXMemberFeatureCall )
-            // InternalSignalDSL.g:8694:2: ruleXMemberFeatureCall
+            // InternalSignalDSL.g:9280:1: ( ruleXMemberFeatureCall )
+            // InternalSignalDSL.g:9281:2: ruleXMemberFeatureCall
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0()); 
@@ -29629,14 +31553,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1"
-    // InternalSignalDSL.g:8703:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    // InternalSignalDSL.g:9290:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
     public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8707:1: ( rule__XPostfixOperation__Group__1__Impl )
-            // InternalSignalDSL.g:8708:2: rule__XPostfixOperation__Group__1__Impl
+            // InternalSignalDSL.g:9294:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalSignalDSL.g:9295:2: rule__XPostfixOperation__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group__1__Impl();
@@ -29662,42 +31586,42 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group__1__Impl"
-    // InternalSignalDSL.g:8714:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:9301:1: rule__XPostfixOperation__Group__1__Impl : ( ( rule__XPostfixOperation__Group_1__0 )? ) ;
     public final void rule__XPostfixOperation__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8718:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
-            // InternalSignalDSL.g:8719:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalSignalDSL.g:9305:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalSignalDSL.g:9306:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:8719:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
-            // InternalSignalDSL.g:8720:2: ( rule__XPostfixOperation__Group_1__0 )?
+            // InternalSignalDSL.g:9306:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalSignalDSL.g:9307:2: ( rule__XPostfixOperation__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:8721:2: ( rule__XPostfixOperation__Group_1__0 )?
-            int alt79=2;
-            int LA79_0 = input.LA(1);
+            // InternalSignalDSL.g:9308:2: ( rule__XPostfixOperation__Group_1__0 )?
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA79_0==41) ) {
-                int LA79_1 = input.LA(2);
+            if ( (LA77_0==41) ) {
+                int LA77_1 = input.LA(2);
 
-                if ( (synpred123_InternalSignalDSL()) ) {
-                    alt79=1;
+                if ( (synpred129_InternalSignalDSL()) ) {
+                    alt77=1;
                 }
             }
-            else if ( (LA79_0==42) ) {
-                int LA79_2 = input.LA(2);
+            else if ( (LA77_0==42) ) {
+                int LA77_2 = input.LA(2);
 
-                if ( (synpred123_InternalSignalDSL()) ) {
-                    alt79=1;
+                if ( (synpred129_InternalSignalDSL()) ) {
+                    alt77=1;
                 }
             }
-            switch (alt79) {
+            switch (alt77) {
                 case 1 :
-                    // InternalSignalDSL.g:8721:3: rule__XPostfixOperation__Group_1__0
+                    // InternalSignalDSL.g:9308:3: rule__XPostfixOperation__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XPostfixOperation__Group_1__0();
@@ -29735,14 +31659,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0"
-    // InternalSignalDSL.g:8730:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
+    // InternalSignalDSL.g:9317:1: rule__XPostfixOperation__Group_1__0 : rule__XPostfixOperation__Group_1__0__Impl ;
     public final void rule__XPostfixOperation__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8734:1: ( rule__XPostfixOperation__Group_1__0__Impl )
-            // InternalSignalDSL.g:8735:2: rule__XPostfixOperation__Group_1__0__Impl
+            // InternalSignalDSL.g:9321:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalSignalDSL.g:9322:2: rule__XPostfixOperation__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1__0__Impl();
@@ -29768,23 +31692,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1__0__Impl"
-    // InternalSignalDSL.g:8741:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9328:1: rule__XPostfixOperation__Group_1__0__Impl : ( ( rule__XPostfixOperation__Group_1_0__0 ) ) ;
     public final void rule__XPostfixOperation__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8745:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:8746:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9332:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:9333:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:8746:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
-            // InternalSignalDSL.g:8747:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalSignalDSL.g:9333:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalSignalDSL.g:9334:2: ( rule__XPostfixOperation__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:8748:2: ( rule__XPostfixOperation__Group_1_0__0 )
-            // InternalSignalDSL.g:8748:3: rule__XPostfixOperation__Group_1_0__0
+            // InternalSignalDSL.g:9335:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalSignalDSL.g:9335:3: rule__XPostfixOperation__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__0();
@@ -29819,14 +31743,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0"
-    // InternalSignalDSL.g:8757:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
+    // InternalSignalDSL.g:9344:1: rule__XPostfixOperation__Group_1_0__0 : rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 ;
     public final void rule__XPostfixOperation__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8761:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
-            // InternalSignalDSL.g:8762:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            // InternalSignalDSL.g:9348:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalSignalDSL.g:9349:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
             {
             pushFollow(FOLLOW_66);
             rule__XPostfixOperation__Group_1_0__0__Impl();
@@ -29857,23 +31781,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8769:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9356:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
     public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8773:1: ( ( () ) )
-            // InternalSignalDSL.g:8774:1: ( () )
+            // InternalSignalDSL.g:9360:1: ( ( () ) )
+            // InternalSignalDSL.g:9361:1: ( () )
             {
-            // InternalSignalDSL.g:8774:1: ( () )
-            // InternalSignalDSL.g:8775:2: ()
+            // InternalSignalDSL.g:9361:1: ( () )
+            // InternalSignalDSL.g:9362:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
             }
-            // InternalSignalDSL.g:8776:2: ()
-            // InternalSignalDSL.g:8776:3: 
+            // InternalSignalDSL.g:9363:2: ()
+            // InternalSignalDSL.g:9363:3: 
             {
             }
 
@@ -29898,14 +31822,14 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1"
-    // InternalSignalDSL.g:8784:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:9371:1: rule__XPostfixOperation__Group_1_0__1 : rule__XPostfixOperation__Group_1_0__1__Impl ;
     public final void rule__XPostfixOperation__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8788:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:8789:2: rule__XPostfixOperation__Group_1_0__1__Impl
+            // InternalSignalDSL.g:9375:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:9376:2: rule__XPostfixOperation__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__Group_1_0__1__Impl();
@@ -29931,23 +31855,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:8795:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:9382:1: rule__XPostfixOperation__Group_1_0__1__Impl : ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) ;
     public final void rule__XPostfixOperation__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8799:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:8800:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9386:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:9387:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:8800:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:8801:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalSignalDSL.g:9387:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9388:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:8802:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
-            // InternalSignalDSL.g:8802:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
+            // InternalSignalDSL.g:9389:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalSignalDSL.g:9389:3: rule__XPostfixOperation__FeatureAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XPostfixOperation__FeatureAssignment_1_0_1();
@@ -29982,14 +31906,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0"
-    // InternalSignalDSL.g:8811:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
+    // InternalSignalDSL.g:9398:1: rule__XMemberFeatureCall__Group__0 : rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 ;
     public final void rule__XMemberFeatureCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8815:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
-            // InternalSignalDSL.g:8816:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            // InternalSignalDSL.g:9402:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalSignalDSL.g:9403:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
             {
             pushFollow(FOLLOW_67);
             rule__XMemberFeatureCall__Group__0__Impl();
@@ -30020,17 +31944,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__0__Impl"
-    // InternalSignalDSL.g:8823:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    // InternalSignalDSL.g:9410:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
     public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8827:1: ( ( ruleXPrimaryExpression ) )
-            // InternalSignalDSL.g:8828:1: ( ruleXPrimaryExpression )
+            // InternalSignalDSL.g:9414:1: ( ( ruleXPrimaryExpression ) )
+            // InternalSignalDSL.g:9415:1: ( ruleXPrimaryExpression )
             {
-            // InternalSignalDSL.g:8828:1: ( ruleXPrimaryExpression )
-            // InternalSignalDSL.g:8829:2: ruleXPrimaryExpression
+            // InternalSignalDSL.g:9415:1: ( ruleXPrimaryExpression )
+            // InternalSignalDSL.g:9416:2: ruleXPrimaryExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0()); 
@@ -30065,14 +31989,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1"
-    // InternalSignalDSL.g:8838:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    // InternalSignalDSL.g:9425:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
     public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8842:1: ( rule__XMemberFeatureCall__Group__1__Impl )
-            // InternalSignalDSL.g:8843:2: rule__XMemberFeatureCall__Group__1__Impl
+            // InternalSignalDSL.g:9429:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalSignalDSL.g:9430:2: rule__XMemberFeatureCall__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group__1__Impl();
@@ -30098,54 +32022,54 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group__1__Impl"
-    // InternalSignalDSL.g:8849:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    // InternalSignalDSL.g:9436:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
     public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8853:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
-            // InternalSignalDSL.g:8854:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalSignalDSL.g:9440:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalSignalDSL.g:9441:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
             {
-            // InternalSignalDSL.g:8854:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
-            // InternalSignalDSL.g:8855:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            // InternalSignalDSL.g:9441:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalSignalDSL.g:9442:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:8856:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
-            loop80:
+            // InternalSignalDSL.g:9443:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            loop78:
             do {
-                int alt80=2;
+                int alt78=2;
                 switch ( input.LA(1) ) {
                 case 43:
                     {
-                    int LA80_2 = input.LA(2);
+                    int LA78_2 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt80=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
                     }
                     break;
-                case 99:
+                case 108:
                     {
-                    int LA80_3 = input.LA(2);
+                    int LA78_3 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt80=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
                     }
                     break;
-                case 100:
+                case 109:
                     {
-                    int LA80_4 = input.LA(2);
+                    int LA78_4 = input.LA(2);
 
-                    if ( (synpred124_InternalSignalDSL()) ) {
-                        alt80=1;
+                    if ( (synpred130_InternalSignalDSL()) ) {
+                        alt78=1;
                     }
 
 
@@ -30154,9 +32078,9 @@
 
                 }
 
-                switch (alt80) {
+                switch (alt78) {
             	case 1 :
-            	    // InternalSignalDSL.g:8856:3: rule__XMemberFeatureCall__Alternatives_1
+            	    // InternalSignalDSL.g:9443:3: rule__XMemberFeatureCall__Alternatives_1
             	    {
             	    pushFollow(FOLLOW_68);
             	    rule__XMemberFeatureCall__Alternatives_1();
@@ -30168,7 +32092,7 @@
             	    break;
 
             	default :
-            	    break loop80;
+            	    break loop78;
                 }
             } while (true);
 
@@ -30197,14 +32121,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0"
-    // InternalSignalDSL.g:8865:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
+    // InternalSignalDSL.g:9452:1: rule__XMemberFeatureCall__Group_1_0__0 : rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8869:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
-            // InternalSignalDSL.g:8870:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            // InternalSignalDSL.g:9456:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalSignalDSL.g:9457:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
             {
             pushFollow(FOLLOW_35);
             rule__XMemberFeatureCall__Group_1_0__0__Impl();
@@ -30235,23 +32159,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:8877:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9464:1: rule__XMemberFeatureCall__Group_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8881:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:8882:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9468:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9469:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8882:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
-            // InternalSignalDSL.g:8883:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9469:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalSignalDSL.g:9470:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:8884:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
-            // InternalSignalDSL.g:8884:3: rule__XMemberFeatureCall__Group_1_0_0__0
+            // InternalSignalDSL.g:9471:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalSignalDSL.g:9471:3: rule__XMemberFeatureCall__Group_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0();
@@ -30286,14 +32210,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1"
-    // InternalSignalDSL.g:8892:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:9479:1: rule__XMemberFeatureCall__Group_1_0__1 : rule__XMemberFeatureCall__Group_1_0__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8896:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:8897:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
+            // InternalSignalDSL.g:9483:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:9484:2: rule__XMemberFeatureCall__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0__1__Impl();
@@ -30319,23 +32243,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:8903:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:9490:1: rule__XMemberFeatureCall__Group_1_0__1__Impl : ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8907:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:8908:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9494:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:9495:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:8908:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:8909:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalSignalDSL.g:9495:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:9496:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:8910:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
-            // InternalSignalDSL.g:8910:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
+            // InternalSignalDSL.g:9497:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalSignalDSL.g:9497:3: rule__XMemberFeatureCall__ValueAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ValueAssignment_1_0_1();
@@ -30370,14 +32294,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0"
-    // InternalSignalDSL.g:8919:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
+    // InternalSignalDSL.g:9506:1: rule__XMemberFeatureCall__Group_1_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0__0__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8923:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
-            // InternalSignalDSL.g:8924:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
+            // InternalSignalDSL.g:9510:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalSignalDSL.g:9511:2: rule__XMemberFeatureCall__Group_1_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0__0__Impl();
@@ -30403,23 +32327,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:8930:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9517:1: rule__XMemberFeatureCall__Group_1_0_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8934:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:8935:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:9521:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:9522:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:8935:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
-            // InternalSignalDSL.g:8936:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:9522:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalSignalDSL.g:9523:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:8937:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
-            // InternalSignalDSL.g:8937:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
+            // InternalSignalDSL.g:9524:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalSignalDSL.g:9524:3: rule__XMemberFeatureCall__Group_1_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__0();
@@ -30454,14 +32378,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0"
-    // InternalSignalDSL.g:8946:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
+    // InternalSignalDSL.g:9533:1: rule__XMemberFeatureCall__Group_1_0_0_0__0 : rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8950:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
-            // InternalSignalDSL.g:8951:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            // InternalSignalDSL.g:9537:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalSignalDSL.g:9538:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
             {
             pushFollow(FOLLOW_69);
             rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl();
@@ -30492,23 +32416,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl"
-    // InternalSignalDSL.g:8958:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9545:1: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl : ( () ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8962:1: ( ( () ) )
-            // InternalSignalDSL.g:8963:1: ( () )
+            // InternalSignalDSL.g:9549:1: ( ( () ) )
+            // InternalSignalDSL.g:9550:1: ( () )
             {
-            // InternalSignalDSL.g:8963:1: ( () )
-            // InternalSignalDSL.g:8964:2: ()
+            // InternalSignalDSL.g:9550:1: ( () )
+            // InternalSignalDSL.g:9551:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:8965:2: ()
-            // InternalSignalDSL.g:8965:3: 
+            // InternalSignalDSL.g:9552:2: ()
+            // InternalSignalDSL.g:9552:3: 
             {
             }
 
@@ -30533,14 +32457,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1"
-    // InternalSignalDSL.g:8973:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
+    // InternalSignalDSL.g:9560:1: rule__XMemberFeatureCall__Group_1_0_0_0__1 : rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8977:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
-            // InternalSignalDSL.g:8978:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            // InternalSignalDSL.g:9564:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalSignalDSL.g:9565:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
             {
             pushFollow(FOLLOW_40);
             rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl();
@@ -30571,23 +32495,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl"
-    // InternalSignalDSL.g:8985:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
+    // InternalSignalDSL.g:9572:1: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:8989:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
-            // InternalSignalDSL.g:8990:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalSignalDSL.g:9576:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalSignalDSL.g:9577:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
             {
-            // InternalSignalDSL.g:8990:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
-            // InternalSignalDSL.g:8991:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalSignalDSL.g:9577:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalSignalDSL.g:9578:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
             }
-            // InternalSignalDSL.g:8992:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
-            // InternalSignalDSL.g:8992:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
+            // InternalSignalDSL.g:9579:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalSignalDSL.g:9579:3: rule__XMemberFeatureCall__Alternatives_1_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_0_0_0_1();
@@ -30622,14 +32546,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2"
-    // InternalSignalDSL.g:9000:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
+    // InternalSignalDSL.g:9587:1: rule__XMemberFeatureCall__Group_1_0_0_0__2 : rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9004:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
-            // InternalSignalDSL.g:9005:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            // InternalSignalDSL.g:9591:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalSignalDSL.g:9592:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
             {
             pushFollow(FOLLOW_36);
             rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl();
@@ -30660,23 +32584,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl"
-    // InternalSignalDSL.g:9012:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
+    // InternalSignalDSL.g:9599:1: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9016:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
-            // InternalSignalDSL.g:9017:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalSignalDSL.g:9603:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalSignalDSL.g:9604:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
             {
-            // InternalSignalDSL.g:9017:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
-            // InternalSignalDSL.g:9018:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalSignalDSL.g:9604:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalSignalDSL.g:9605:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
             }
-            // InternalSignalDSL.g:9019:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
-            // InternalSignalDSL.g:9019:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
+            // InternalSignalDSL.g:9606:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalSignalDSL.g:9606:3: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2();
@@ -30711,14 +32635,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3"
-    // InternalSignalDSL.g:9027:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
+    // InternalSignalDSL.g:9614:1: rule__XMemberFeatureCall__Group_1_0_0_0__3 : rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9031:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
-            // InternalSignalDSL.g:9032:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
+            // InternalSignalDSL.g:9618:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalSignalDSL.g:9619:2: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl();
@@ -30744,17 +32668,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl"
-    // InternalSignalDSL.g:9038:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
+    // InternalSignalDSL.g:9625:1: rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl : ( ruleOpSingleAssign ) ;
     public final void rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9042:1: ( ( ruleOpSingleAssign ) )
-            // InternalSignalDSL.g:9043:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:9629:1: ( ( ruleOpSingleAssign ) )
+            // InternalSignalDSL.g:9630:1: ( ruleOpSingleAssign )
             {
-            // InternalSignalDSL.g:9043:1: ( ruleOpSingleAssign )
-            // InternalSignalDSL.g:9044:2: ruleOpSingleAssign
+            // InternalSignalDSL.g:9630:1: ( ruleOpSingleAssign )
+            // InternalSignalDSL.g:9631:2: ruleOpSingleAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3()); 
@@ -30789,14 +32713,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0"
-    // InternalSignalDSL.g:9054:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
+    // InternalSignalDSL.g:9641:1: rule__XMemberFeatureCall__Group_1_1__0 : rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9058:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
-            // InternalSignalDSL.g:9059:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            // InternalSignalDSL.g:9645:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalSignalDSL.g:9646:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
             {
             pushFollow(FOLLOW_70);
             rule__XMemberFeatureCall__Group_1_1__0__Impl();
@@ -30827,23 +32751,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:9066:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
+    // InternalSignalDSL.g:9653:1: rule__XMemberFeatureCall__Group_1_1__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9070:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
-            // InternalSignalDSL.g:9071:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:9657:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalSignalDSL.g:9658:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
             {
-            // InternalSignalDSL.g:9071:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
-            // InternalSignalDSL.g:9072:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalSignalDSL.g:9658:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalSignalDSL.g:9659:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
             }
-            // InternalSignalDSL.g:9073:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
-            // InternalSignalDSL.g:9073:3: rule__XMemberFeatureCall__Group_1_1_0__0
+            // InternalSignalDSL.g:9660:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalSignalDSL.g:9660:3: rule__XMemberFeatureCall__Group_1_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0();
@@ -30878,14 +32802,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1"
-    // InternalSignalDSL.g:9081:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
+    // InternalSignalDSL.g:9668:1: rule__XMemberFeatureCall__Group_1_1__1 : rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9085:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
-            // InternalSignalDSL.g:9086:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            // InternalSignalDSL.g:9672:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalSignalDSL.g:9673:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
             {
             pushFollow(FOLLOW_70);
             rule__XMemberFeatureCall__Group_1_1__1__Impl();
@@ -30916,31 +32840,31 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:9093:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
+    // InternalSignalDSL.g:9680:1: rule__XMemberFeatureCall__Group_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9097:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
-            // InternalSignalDSL.g:9098:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalSignalDSL.g:9684:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalSignalDSL.g:9685:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
             {
-            // InternalSignalDSL.g:9098:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
-            // InternalSignalDSL.g:9099:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            // InternalSignalDSL.g:9685:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalSignalDSL.g:9686:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
             }
-            // InternalSignalDSL.g:9100:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
-            int alt81=2;
-            int LA81_0 = input.LA(1);
+            // InternalSignalDSL.g:9687:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( (LA81_0==27) ) {
-                alt81=1;
+            if ( (LA79_0==27) ) {
+                alt79=1;
             }
-            switch (alt81) {
+            switch (alt79) {
                 case 1 :
-                    // InternalSignalDSL.g:9100:3: rule__XMemberFeatureCall__Group_1_1_1__0
+                    // InternalSignalDSL.g:9687:3: rule__XMemberFeatureCall__Group_1_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_1__0();
@@ -30978,14 +32902,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2"
-    // InternalSignalDSL.g:9108:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
+    // InternalSignalDSL.g:9695:1: rule__XMemberFeatureCall__Group_1_1__2 : rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 ;
     public final void rule__XMemberFeatureCall__Group_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9112:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
-            // InternalSignalDSL.g:9113:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            // InternalSignalDSL.g:9699:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalSignalDSL.g:9700:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
             {
             pushFollow(FOLLOW_71);
             rule__XMemberFeatureCall__Group_1_1__2__Impl();
@@ -31016,23 +32940,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__2__Impl"
-    // InternalSignalDSL.g:9120:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
+    // InternalSignalDSL.g:9707:1: rule__XMemberFeatureCall__Group_1_1__2__Impl : ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9124:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
-            // InternalSignalDSL.g:9125:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalSignalDSL.g:9711:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalSignalDSL.g:9712:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
             {
-            // InternalSignalDSL.g:9125:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
-            // InternalSignalDSL.g:9126:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalSignalDSL.g:9712:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalSignalDSL.g:9713:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
             }
-            // InternalSignalDSL.g:9127:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
-            // InternalSignalDSL.g:9127:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
+            // InternalSignalDSL.g:9714:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalSignalDSL.g:9714:3: rule__XMemberFeatureCall__FeatureAssignment_1_1_2
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__FeatureAssignment_1_1_2();
@@ -31067,14 +32991,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3"
-    // InternalSignalDSL.g:9135:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
+    // InternalSignalDSL.g:9722:1: rule__XMemberFeatureCall__Group_1_1__3 : rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 ;
     public final void rule__XMemberFeatureCall__Group_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9139:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
-            // InternalSignalDSL.g:9140:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            // InternalSignalDSL.g:9726:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalSignalDSL.g:9727:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
             {
             pushFollow(FOLLOW_71);
             rule__XMemberFeatureCall__Group_1_1__3__Impl();
@@ -31105,27 +33029,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__3__Impl"
-    // InternalSignalDSL.g:9147:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
+    // InternalSignalDSL.g:9734:1: rule__XMemberFeatureCall__Group_1_1__3__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9151:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
-            // InternalSignalDSL.g:9152:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalSignalDSL.g:9738:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalSignalDSL.g:9739:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
             {
-            // InternalSignalDSL.g:9152:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
-            // InternalSignalDSL.g:9153:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            // InternalSignalDSL.g:9739:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalSignalDSL.g:9740:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
             }
-            // InternalSignalDSL.g:9154:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
-            int alt82=2;
-            alt82 = dfa82.predict(input);
-            switch (alt82) {
+            // InternalSignalDSL.g:9741:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            int alt80=2;
+            alt80 = dfa80.predict(input);
+            switch (alt80) {
                 case 1 :
-                    // InternalSignalDSL.g:9154:3: rule__XMemberFeatureCall__Group_1_1_3__0
+                    // InternalSignalDSL.g:9741:3: rule__XMemberFeatureCall__Group_1_1_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Group_1_1_3__0();
@@ -31163,14 +33087,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4"
-    // InternalSignalDSL.g:9162:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
+    // InternalSignalDSL.g:9749:1: rule__XMemberFeatureCall__Group_1_1__4 : rule__XMemberFeatureCall__Group_1_1__4__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9166:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
-            // InternalSignalDSL.g:9167:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
+            // InternalSignalDSL.g:9753:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalSignalDSL.g:9754:2: rule__XMemberFeatureCall__Group_1_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1__4__Impl();
@@ -31196,27 +33120,27 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1__4__Impl"
-    // InternalSignalDSL.g:9173:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
+    // InternalSignalDSL.g:9760:1: rule__XMemberFeatureCall__Group_1_1__4__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9177:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
-            // InternalSignalDSL.g:9178:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalSignalDSL.g:9764:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalSignalDSL.g:9765:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
             {
-            // InternalSignalDSL.g:9178:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
-            // InternalSignalDSL.g:9179:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            // InternalSignalDSL.g:9765:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalSignalDSL.g:9766:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
             }
-            // InternalSignalDSL.g:9180:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
-            int alt83=2;
-            alt83 = dfa83.predict(input);
-            switch (alt83) {
+            // InternalSignalDSL.g:9767:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            int alt81=2;
+            alt81 = dfa81.predict(input);
+            switch (alt81) {
                 case 1 :
-                    // InternalSignalDSL.g:9180:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+                    // InternalSignalDSL.g:9767:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -31254,14 +33178,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0"
-    // InternalSignalDSL.g:9189:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
+    // InternalSignalDSL.g:9776:1: rule__XMemberFeatureCall__Group_1_1_0__0 : rule__XMemberFeatureCall__Group_1_1_0__0__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9193:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
-            // InternalSignalDSL.g:9194:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
+            // InternalSignalDSL.g:9780:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalSignalDSL.g:9781:2: rule__XMemberFeatureCall__Group_1_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0__0__Impl();
@@ -31287,23 +33211,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0__0__Impl"
-    // InternalSignalDSL.g:9200:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:9787:1: rule__XMemberFeatureCall__Group_1_1_0__0__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9204:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:9205:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:9791:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:9792:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:9205:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
-            // InternalSignalDSL.g:9206:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:9792:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalSignalDSL.g:9793:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
             }
-            // InternalSignalDSL.g:9207:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
-            // InternalSignalDSL.g:9207:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
+            // InternalSignalDSL.g:9794:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalSignalDSL.g:9794:3: rule__XMemberFeatureCall__Group_1_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__0();
@@ -31338,14 +33262,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0"
-    // InternalSignalDSL.g:9216:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
+    // InternalSignalDSL.g:9803:1: rule__XMemberFeatureCall__Group_1_1_0_0__0 : rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9220:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
-            // InternalSignalDSL.g:9221:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            // InternalSignalDSL.g:9807:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalSignalDSL.g:9808:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
             {
             pushFollow(FOLLOW_67);
             rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl();
@@ -31376,23 +33300,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl"
-    // InternalSignalDSL.g:9228:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:9815:1: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl : ( () ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9232:1: ( ( () ) )
-            // InternalSignalDSL.g:9233:1: ( () )
+            // InternalSignalDSL.g:9819:1: ( ( () ) )
+            // InternalSignalDSL.g:9820:1: ( () )
             {
-            // InternalSignalDSL.g:9233:1: ( () )
-            // InternalSignalDSL.g:9234:2: ()
+            // InternalSignalDSL.g:9820:1: ( () )
+            // InternalSignalDSL.g:9821:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:9235:2: ()
-            // InternalSignalDSL.g:9235:3: 
+            // InternalSignalDSL.g:9822:2: ()
+            // InternalSignalDSL.g:9822:3: 
             {
             }
 
@@ -31417,14 +33341,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1"
-    // InternalSignalDSL.g:9243:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:9830:1: rule__XMemberFeatureCall__Group_1_1_0_0__1 : rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9247:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
-            // InternalSignalDSL.g:9248:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
+            // InternalSignalDSL.g:9834:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalSignalDSL.g:9835:2: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl();
@@ -31450,23 +33374,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl"
-    // InternalSignalDSL.g:9254:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
+    // InternalSignalDSL.g:9841:1: rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9258:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
-            // InternalSignalDSL.g:9259:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:9845:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalSignalDSL.g:9846:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
             {
-            // InternalSignalDSL.g:9259:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
-            // InternalSignalDSL.g:9260:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalSignalDSL.g:9846:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalSignalDSL.g:9847:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:9261:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
-            // InternalSignalDSL.g:9261:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
+            // InternalSignalDSL.g:9848:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalSignalDSL.g:9848:3: rule__XMemberFeatureCall__Alternatives_1_1_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Alternatives_1_1_0_0_1();
@@ -31501,14 +33425,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0"
-    // InternalSignalDSL.g:9270:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
+    // InternalSignalDSL.g:9857:1: rule__XMemberFeatureCall__Group_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9274:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
-            // InternalSignalDSL.g:9275:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            // InternalSignalDSL.g:9861:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalSignalDSL.g:9862:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
             {
             pushFollow(FOLLOW_72);
             rule__XMemberFeatureCall__Group_1_1_1__0__Impl();
@@ -31539,17 +33463,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__0__Impl"
-    // InternalSignalDSL.g:9282:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:9869:1: rule__XMemberFeatureCall__Group_1_1_1__0__Impl : ( '<' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9286:1: ( ( '<' ) )
-            // InternalSignalDSL.g:9287:1: ( '<' )
+            // InternalSignalDSL.g:9873:1: ( ( '<' ) )
+            // InternalSignalDSL.g:9874:1: ( '<' )
             {
-            // InternalSignalDSL.g:9287:1: ( '<' )
-            // InternalSignalDSL.g:9288:2: '<'
+            // InternalSignalDSL.g:9874:1: ( '<' )
+            // InternalSignalDSL.g:9875:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
@@ -31580,14 +33504,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1"
-    // InternalSignalDSL.g:9297:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
+    // InternalSignalDSL.g:9884:1: rule__XMemberFeatureCall__Group_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9301:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
-            // InternalSignalDSL.g:9302:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            // InternalSignalDSL.g:9888:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalSignalDSL.g:9889:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
             {
             pushFollow(FOLLOW_73);
             rule__XMemberFeatureCall__Group_1_1_1__1__Impl();
@@ -31618,23 +33542,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__1__Impl"
-    // InternalSignalDSL.g:9309:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:9896:1: rule__XMemberFeatureCall__Group_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9313:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:9314:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:9900:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:9901:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:9314:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
-            // InternalSignalDSL.g:9315:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:9901:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalSignalDSL.g:9902:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:9316:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
-            // InternalSignalDSL.g:9316:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
+            // InternalSignalDSL.g:9903:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalSignalDSL.g:9903:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1();
@@ -31669,14 +33593,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2"
-    // InternalSignalDSL.g:9324:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
+    // InternalSignalDSL.g:9911:1: rule__XMemberFeatureCall__Group_1_1_1__2 : rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9328:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
-            // InternalSignalDSL.g:9329:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            // InternalSignalDSL.g:9915:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalSignalDSL.g:9916:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
             {
             pushFollow(FOLLOW_73);
             rule__XMemberFeatureCall__Group_1_1_1__2__Impl();
@@ -31707,35 +33631,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__2__Impl"
-    // InternalSignalDSL.g:9336:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
+    // InternalSignalDSL.g:9923:1: rule__XMemberFeatureCall__Group_1_1_1__2__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9340:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
-            // InternalSignalDSL.g:9341:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalSignalDSL.g:9927:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalSignalDSL.g:9928:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
             {
-            // InternalSignalDSL.g:9341:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
-            // InternalSignalDSL.g:9342:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            // InternalSignalDSL.g:9928:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalSignalDSL.g:9929:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
             }
-            // InternalSignalDSL.g:9343:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
-            loop84:
+            // InternalSignalDSL.g:9930:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            loop82:
             do {
-                int alt84=2;
-                int LA84_0 = input.LA(1);
+                int alt82=2;
+                int LA82_0 = input.LA(1);
 
-                if ( (LA84_0==73) ) {
-                    alt84=1;
+                if ( (LA82_0==82) ) {
+                    alt82=1;
                 }
 
 
-                switch (alt84) {
+                switch (alt82) {
             	case 1 :
-            	    // InternalSignalDSL.g:9343:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    // InternalSignalDSL.g:9930:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
@@ -31747,7 +33671,7 @@
             	    break;
 
             	default :
-            	    break loop84;
+            	    break loop82;
                 }
             } while (true);
 
@@ -31776,14 +33700,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3"
-    // InternalSignalDSL.g:9351:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
+    // InternalSignalDSL.g:9938:1: rule__XMemberFeatureCall__Group_1_1_1__3 : rule__XMemberFeatureCall__Group_1_1_1__3__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9355:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
-            // InternalSignalDSL.g:9356:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
+            // InternalSignalDSL.g:9942:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalSignalDSL.g:9943:2: rule__XMemberFeatureCall__Group_1_1_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1__3__Impl();
@@ -31809,17 +33733,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1__3__Impl"
-    // InternalSignalDSL.g:9362:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:9949:1: rule__XMemberFeatureCall__Group_1_1_1__3__Impl : ( '>' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9366:1: ( ( '>' ) )
-            // InternalSignalDSL.g:9367:1: ( '>' )
+            // InternalSignalDSL.g:9953:1: ( ( '>' ) )
+            // InternalSignalDSL.g:9954:1: ( '>' )
             {
-            // InternalSignalDSL.g:9367:1: ( '>' )
-            // InternalSignalDSL.g:9368:2: '>'
+            // InternalSignalDSL.g:9954:1: ( '>' )
+            // InternalSignalDSL.g:9955:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
@@ -31850,14 +33774,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0"
-    // InternalSignalDSL.g:9378:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
+    // InternalSignalDSL.g:9965:1: rule__XMemberFeatureCall__Group_1_1_1_2__0 : rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9382:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
-            // InternalSignalDSL.g:9383:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            // InternalSignalDSL.g:9969:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalSignalDSL.g:9970:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
             {
             pushFollow(FOLLOW_72);
             rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl();
@@ -31888,22 +33812,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl"
-    // InternalSignalDSL.g:9390:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:9977:1: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl : ( ',' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9394:1: ( ( ',' ) )
-            // InternalSignalDSL.g:9395:1: ( ',' )
+            // InternalSignalDSL.g:9981:1: ( ( ',' ) )
+            // InternalSignalDSL.g:9982:1: ( ',' )
             {
-            // InternalSignalDSL.g:9395:1: ( ',' )
-            // InternalSignalDSL.g:9396:2: ','
+            // InternalSignalDSL.g:9982:1: ( ',' )
+            // InternalSignalDSL.g:9983:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
             }
@@ -31929,14 +33853,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1"
-    // InternalSignalDSL.g:9405:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
+    // InternalSignalDSL.g:9992:1: rule__XMemberFeatureCall__Group_1_1_1_2__1 : rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9409:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
-            // InternalSignalDSL.g:9410:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
+            // InternalSignalDSL.g:9996:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalSignalDSL.g:9997:2: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl();
@@ -31962,23 +33886,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl"
-    // InternalSignalDSL.g:9416:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
+    // InternalSignalDSL.g:10003:1: rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl : ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9420:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
-            // InternalSignalDSL.g:9421:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalSignalDSL.g:10007:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalSignalDSL.g:10008:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
             {
-            // InternalSignalDSL.g:9421:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
-            // InternalSignalDSL.g:9422:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalSignalDSL.g:10008:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalSignalDSL.g:10009:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
             }
-            // InternalSignalDSL.g:9423:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
-            // InternalSignalDSL.g:9423:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
+            // InternalSignalDSL.g:10010:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalSignalDSL.g:10010:3: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1();
@@ -32013,14 +33937,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0"
-    // InternalSignalDSL.g:9432:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
+    // InternalSignalDSL.g:10019:1: rule__XMemberFeatureCall__Group_1_1_3__0 : rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9436:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
-            // InternalSignalDSL.g:9437:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            // InternalSignalDSL.g:10023:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalSignalDSL.g:10024:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
             {
             pushFollow(FOLLOW_74);
             rule__XMemberFeatureCall__Group_1_1_3__0__Impl();
@@ -32051,23 +33975,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__0__Impl"
-    // InternalSignalDSL.g:9444:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
+    // InternalSignalDSL.g:10031:1: rule__XMemberFeatureCall__Group_1_1_3__0__Impl : ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9448:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
-            // InternalSignalDSL.g:9449:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalSignalDSL.g:10035:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalSignalDSL.g:10036:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
             {
-            // InternalSignalDSL.g:9449:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
-            // InternalSignalDSL.g:9450:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalSignalDSL.g:10036:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalSignalDSL.g:10037:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
             }
-            // InternalSignalDSL.g:9451:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
-            // InternalSignalDSL.g:9451:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
+            // InternalSignalDSL.g:10038:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalSignalDSL.g:10038:3: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0();
@@ -32102,14 +34026,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1"
-    // InternalSignalDSL.g:9459:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
+    // InternalSignalDSL.g:10046:1: rule__XMemberFeatureCall__Group_1_1_3__1 : rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9463:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
-            // InternalSignalDSL.g:9464:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            // InternalSignalDSL.g:10050:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalSignalDSL.g:10051:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
             {
             pushFollow(FOLLOW_74);
             rule__XMemberFeatureCall__Group_1_1_3__1__Impl();
@@ -32140,31 +34064,31 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__1__Impl"
-    // InternalSignalDSL.g:9471:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
+    // InternalSignalDSL.g:10058:1: rule__XMemberFeatureCall__Group_1_1_3__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9475:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
-            // InternalSignalDSL.g:9476:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalSignalDSL.g:10062:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalSignalDSL.g:10063:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
             {
-            // InternalSignalDSL.g:9476:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
-            // InternalSignalDSL.g:9477:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            // InternalSignalDSL.g:10063:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalSignalDSL.g:10064:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
             }
-            // InternalSignalDSL.g:9478:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
-            int alt85=2;
-            int LA85_0 = input.LA(1);
+            // InternalSignalDSL.g:10065:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
 
-            if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_STRING)||LA85_0==27||LA85_0==31||(LA85_0>=34 && LA85_0<=35)||LA85_0==40||(LA85_0>=45 && LA85_0<=50)||LA85_0==60||LA85_0==64||LA85_0==71||(LA85_0>=75 && LA85_0<=76)||LA85_0==79||LA85_0==81||(LA85_0>=85 && LA85_0<=92)||LA85_0==94||LA85_0==101||LA85_0==103) ) {
-                alt85=1;
+            if ( ((LA83_0>=RULE_ID && LA83_0<=RULE_STRING)||LA83_0==27||LA83_0==31||(LA83_0>=34 && LA83_0<=35)||LA83_0==40||(LA83_0>=45 && LA83_0<=50)||LA83_0==63||LA83_0==80||(LA83_0>=84 && LA83_0<=85)||LA83_0==88||LA83_0==90||(LA83_0>=93 && LA83_0<=101)||LA83_0==103||LA83_0==110||LA83_0==112) ) {
+                alt83=1;
             }
-            switch (alt85) {
+            switch (alt83) {
                 case 1 :
-                    // InternalSignalDSL.g:9478:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
+                    // InternalSignalDSL.g:10065:3: rule__XMemberFeatureCall__Alternatives_1_1_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XMemberFeatureCall__Alternatives_1_1_3_1();
@@ -32202,14 +34126,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2"
-    // InternalSignalDSL.g:9486:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
+    // InternalSignalDSL.g:10073:1: rule__XMemberFeatureCall__Group_1_1_3__2 : rule__XMemberFeatureCall__Group_1_1_3__2__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9490:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
-            // InternalSignalDSL.g:9491:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
+            // InternalSignalDSL.g:10077:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalSignalDSL.g:10078:2: rule__XMemberFeatureCall__Group_1_1_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3__2__Impl();
@@ -32235,22 +34159,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3__2__Impl"
-    // InternalSignalDSL.g:9497:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:10084:1: rule__XMemberFeatureCall__Group_1_1_3__2__Impl : ( ')' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9501:1: ( ( ')' ) )
-            // InternalSignalDSL.g:9502:1: ( ')' )
+            // InternalSignalDSL.g:10088:1: ( ( ')' ) )
+            // InternalSignalDSL.g:10089:1: ( ')' )
             {
-            // InternalSignalDSL.g:9502:1: ( ')' )
-            // InternalSignalDSL.g:9503:2: ')'
+            // InternalSignalDSL.g:10089:1: ( ')' )
+            // InternalSignalDSL.g:10090:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
             }
@@ -32276,14 +34200,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0"
-    // InternalSignalDSL.g:9513:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
+    // InternalSignalDSL.g:10100:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9517:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
-            // InternalSignalDSL.g:9518:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            // InternalSignalDSL.g:10104:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalSignalDSL.g:10105:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl();
@@ -32314,23 +34238,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl"
-    // InternalSignalDSL.g:9525:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
+    // InternalSignalDSL.g:10112:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9529:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
-            // InternalSignalDSL.g:9530:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalSignalDSL.g:10116:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalSignalDSL.g:10117:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
             {
-            // InternalSignalDSL.g:9530:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
-            // InternalSignalDSL.g:9531:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalSignalDSL.g:10117:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalSignalDSL.g:10118:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
             }
-            // InternalSignalDSL.g:9532:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
-            // InternalSignalDSL.g:9532:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
+            // InternalSignalDSL.g:10119:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalSignalDSL.g:10119:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0();
@@ -32365,14 +34289,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1"
-    // InternalSignalDSL.g:9540:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
+    // InternalSignalDSL.g:10127:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9544:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
-            // InternalSignalDSL.g:9545:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
+            // InternalSignalDSL.g:10131:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalSignalDSL.g:10132:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl();
@@ -32398,35 +34322,35 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl"
-    // InternalSignalDSL.g:9551:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
+    // InternalSignalDSL.g:10138:1: rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl : ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9555:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:9556:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:10142:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:10143:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:9556:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
-            // InternalSignalDSL.g:9557:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            // InternalSignalDSL.g:10143:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:10144:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1()); 
             }
-            // InternalSignalDSL.g:9558:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
-            loop86:
+            // InternalSignalDSL.g:10145:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            loop84:
             do {
-                int alt86=2;
-                int LA86_0 = input.LA(1);
+                int alt84=2;
+                int LA84_0 = input.LA(1);
 
-                if ( (LA86_0==73) ) {
-                    alt86=1;
+                if ( (LA84_0==82) ) {
+                    alt84=1;
                 }
 
 
-                switch (alt86) {
+                switch (alt84) {
             	case 1 :
-            	    // InternalSignalDSL.g:9558:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    // InternalSignalDSL.g:10145:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
@@ -32438,7 +34362,7 @@
             	    break;
 
             	default :
-            	    break loop86;
+            	    break loop84;
                 }
             } while (true);
 
@@ -32467,14 +34391,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0"
-    // InternalSignalDSL.g:9567:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
+    // InternalSignalDSL.g:10154:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9571:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
-            // InternalSignalDSL.g:9572:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            // InternalSignalDSL.g:10158:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalSignalDSL.g:10159:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl();
@@ -32505,22 +34429,22 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl"
-    // InternalSignalDSL.g:9579:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:10166:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9583:1: ( ( ',' ) )
-            // InternalSignalDSL.g:9584:1: ( ',' )
+            // InternalSignalDSL.g:10170:1: ( ( ',' ) )
+            // InternalSignalDSL.g:10171:1: ( ',' )
             {
-            // InternalSignalDSL.g:9584:1: ( ',' )
-            // InternalSignalDSL.g:9585:2: ','
+            // InternalSignalDSL.g:10171:1: ( ',' )
+            // InternalSignalDSL.g:10172:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
             }
@@ -32546,14 +34470,14 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1"
-    // InternalSignalDSL.g:9594:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:10181:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 : rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9598:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
-            // InternalSignalDSL.g:9599:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
+            // InternalSignalDSL.g:10185:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalSignalDSL.g:10186:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl();
@@ -32579,23 +34503,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl"
-    // InternalSignalDSL.g:9605:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:10192:1: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl : ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) ;
     public final void rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9609:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:9610:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:10196:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:10197:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:9610:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
-            // InternalSignalDSL.g:9611:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalSignalDSL.g:10197:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:10198:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:9612:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
-            // InternalSignalDSL.g:9612:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
+            // InternalSignalDSL.g:10199:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalSignalDSL.g:10199:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1();
@@ -32630,14 +34554,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0"
-    // InternalSignalDSL.g:9621:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
+    // InternalSignalDSL.g:10208:1: rule__XSetLiteral__Group__0 : rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 ;
     public final void rule__XSetLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9625:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
-            // InternalSignalDSL.g:9626:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            // InternalSignalDSL.g:10212:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalSignalDSL.g:10213:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
             {
             pushFollow(FOLLOW_38);
             rule__XSetLiteral__Group__0__Impl();
@@ -32668,23 +34592,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:9633:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:10220:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9637:1: ( ( () ) )
-            // InternalSignalDSL.g:9638:1: ( () )
+            // InternalSignalDSL.g:10224:1: ( ( () ) )
+            // InternalSignalDSL.g:10225:1: ( () )
             {
-            // InternalSignalDSL.g:9638:1: ( () )
-            // InternalSignalDSL.g:9639:2: ()
+            // InternalSignalDSL.g:10225:1: ( () )
+            // InternalSignalDSL.g:10226:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:9640:2: ()
-            // InternalSignalDSL.g:9640:3: 
+            // InternalSignalDSL.g:10227:2: ()
+            // InternalSignalDSL.g:10227:3: 
             {
             }
 
@@ -32709,16 +34633,16 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1"
-    // InternalSignalDSL.g:9648:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
+    // InternalSignalDSL.g:10235:1: rule__XSetLiteral__Group__1 : rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 ;
     public final void rule__XSetLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9652:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
-            // InternalSignalDSL.g:9653:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            // InternalSignalDSL.g:10239:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalSignalDSL.g:10240:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
             {
-            pushFollow(FOLLOW_8);
+            pushFollow(FOLLOW_7);
             rule__XSetLiteral__Group__1__Impl();
 
             state._fsp--;
@@ -32747,22 +34671,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:9660:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:10247:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9664:1: ( ( '#' ) )
-            // InternalSignalDSL.g:9665:1: ( '#' )
+            // InternalSignalDSL.g:10251:1: ( ( '#' ) )
+            // InternalSignalDSL.g:10252:1: ( '#' )
             {
-            // InternalSignalDSL.g:9665:1: ( '#' )
-            // InternalSignalDSL.g:9666:2: '#'
+            // InternalSignalDSL.g:10252:1: ( '#' )
+            // InternalSignalDSL.g:10253:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,84,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -32788,14 +34712,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2"
-    // InternalSignalDSL.g:9675:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
+    // InternalSignalDSL.g:10262:1: rule__XSetLiteral__Group__2 : rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 ;
     public final void rule__XSetLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9679:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
-            // InternalSignalDSL.g:9680:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            // InternalSignalDSL.g:10266:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalSignalDSL.g:10267:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
             {
             pushFollow(FOLLOW_75);
             rule__XSetLiteral__Group__2__Impl();
@@ -32826,22 +34750,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__2__Impl"
-    // InternalSignalDSL.g:9687:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:10274:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
     public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9691:1: ( ( '{' ) )
-            // InternalSignalDSL.g:9692:1: ( '{' )
+            // InternalSignalDSL.g:10278:1: ( ( '{' ) )
+            // InternalSignalDSL.g:10279:1: ( '{' )
             {
-            // InternalSignalDSL.g:9692:1: ( '{' )
-            // InternalSignalDSL.g:9693:2: '{'
+            // InternalSignalDSL.g:10279:1: ( '{' )
+            // InternalSignalDSL.g:10280:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
             }
@@ -32867,14 +34791,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3"
-    // InternalSignalDSL.g:9702:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
+    // InternalSignalDSL.g:10289:1: rule__XSetLiteral__Group__3 : rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 ;
     public final void rule__XSetLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9706:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
-            // InternalSignalDSL.g:9707:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            // InternalSignalDSL.g:10293:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalSignalDSL.g:10294:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
             {
             pushFollow(FOLLOW_75);
             rule__XSetLiteral__Group__3__Impl();
@@ -32905,31 +34829,31 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__3__Impl"
-    // InternalSignalDSL.g:9714:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:10301:1: rule__XSetLiteral__Group__3__Impl : ( ( rule__XSetLiteral__Group_3__0 )? ) ;
     public final void rule__XSetLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9718:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
-            // InternalSignalDSL.g:9719:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10305:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalSignalDSL.g:10306:1: ( ( rule__XSetLiteral__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:9719:1: ( ( rule__XSetLiteral__Group_3__0 )? )
-            // InternalSignalDSL.g:9720:2: ( rule__XSetLiteral__Group_3__0 )?
+            // InternalSignalDSL.g:10306:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10307:2: ( rule__XSetLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:9721:2: ( rule__XSetLiteral__Group_3__0 )?
-            int alt87=2;
-            int LA87_0 = input.LA(1);
+            // InternalSignalDSL.g:10308:2: ( rule__XSetLiteral__Group_3__0 )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
 
-            if ( ((LA87_0>=RULE_ID && LA87_0<=RULE_STRING)||LA87_0==27||(LA87_0>=34 && LA87_0<=35)||LA87_0==40||(LA87_0>=45 && LA87_0<=50)||LA87_0==60||LA87_0==64||LA87_0==71||(LA87_0>=75 && LA87_0<=76)||LA87_0==79||LA87_0==81||(LA87_0>=85 && LA87_0<=92)||LA87_0==94||LA87_0==103) ) {
-                alt87=1;
+            if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_STRING)||LA85_0==27||(LA85_0>=34 && LA85_0<=35)||LA85_0==40||(LA85_0>=45 && LA85_0<=50)||LA85_0==63||LA85_0==80||(LA85_0>=84 && LA85_0<=85)||LA85_0==88||LA85_0==90||(LA85_0>=93 && LA85_0<=101)||LA85_0==103||LA85_0==112) ) {
+                alt85=1;
             }
-            switch (alt87) {
+            switch (alt85) {
                 case 1 :
-                    // InternalSignalDSL.g:9721:3: rule__XSetLiteral__Group_3__0
+                    // InternalSignalDSL.g:10308:3: rule__XSetLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSetLiteral__Group_3__0();
@@ -32967,14 +34891,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4"
-    // InternalSignalDSL.g:9729:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    // InternalSignalDSL.g:10316:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
     public final void rule__XSetLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9733:1: ( rule__XSetLiteral__Group__4__Impl )
-            // InternalSignalDSL.g:9734:2: rule__XSetLiteral__Group__4__Impl
+            // InternalSignalDSL.g:10320:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalSignalDSL.g:10321:2: rule__XSetLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group__4__Impl();
@@ -33000,22 +34924,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group__4__Impl"
-    // InternalSignalDSL.g:9740:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:10327:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
     public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9744:1: ( ( '}' ) )
-            // InternalSignalDSL.g:9745:1: ( '}' )
+            // InternalSignalDSL.g:10331:1: ( ( '}' ) )
+            // InternalSignalDSL.g:10332:1: ( '}' )
             {
-            // InternalSignalDSL.g:9745:1: ( '}' )
-            // InternalSignalDSL.g:9746:2: '}'
+            // InternalSignalDSL.g:10332:1: ( '}' )
+            // InternalSignalDSL.g:10333:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
             }
-            match(input,61,FOLLOW_2); if (state.failed) return ;
+            match(input,64,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
             }
@@ -33041,14 +34965,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0"
-    // InternalSignalDSL.g:9756:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
+    // InternalSignalDSL.g:10343:1: rule__XSetLiteral__Group_3__0 : rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 ;
     public final void rule__XSetLiteral__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9760:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
-            // InternalSignalDSL.g:9761:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            // InternalSignalDSL.g:10347:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalSignalDSL.g:10348:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
             {
             pushFollow(FOLLOW_33);
             rule__XSetLiteral__Group_3__0__Impl();
@@ -33079,23 +35003,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__0__Impl"
-    // InternalSignalDSL.g:9768:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:10355:1: rule__XSetLiteral__Group_3__0__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) ;
     public final void rule__XSetLiteral__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9772:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:9773:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:10359:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:10360:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:9773:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
-            // InternalSignalDSL.g:9774:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:10360:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:10361:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:9775:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
-            // InternalSignalDSL.g:9775:3: rule__XSetLiteral__ElementsAssignment_3_0
+            // InternalSignalDSL.g:10362:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:10362:3: rule__XSetLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_0();
@@ -33130,14 +35054,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1"
-    // InternalSignalDSL.g:9783:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
+    // InternalSignalDSL.g:10370:1: rule__XSetLiteral__Group_3__1 : rule__XSetLiteral__Group_3__1__Impl ;
     public final void rule__XSetLiteral__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9787:1: ( rule__XSetLiteral__Group_3__1__Impl )
-            // InternalSignalDSL.g:9788:2: rule__XSetLiteral__Group_3__1__Impl
+            // InternalSignalDSL.g:10374:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalSignalDSL.g:10375:2: rule__XSetLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3__1__Impl();
@@ -33163,35 +35087,35 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3__1__Impl"
-    // InternalSignalDSL.g:9794:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
+    // InternalSignalDSL.g:10381:1: rule__XSetLiteral__Group_3__1__Impl : ( ( rule__XSetLiteral__Group_3_1__0 )* ) ;
     public final void rule__XSetLiteral__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9798:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
-            // InternalSignalDSL.g:9799:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:10385:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalSignalDSL.g:10386:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
             {
-            // InternalSignalDSL.g:9799:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
-            // InternalSignalDSL.g:9800:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            // InternalSignalDSL.g:10386:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:10387:2: ( rule__XSetLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
             }
-            // InternalSignalDSL.g:9801:2: ( rule__XSetLiteral__Group_3_1__0 )*
-            loop88:
+            // InternalSignalDSL.g:10388:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            loop86:
             do {
-                int alt88=2;
-                int LA88_0 = input.LA(1);
+                int alt86=2;
+                int LA86_0 = input.LA(1);
 
-                if ( (LA88_0==73) ) {
-                    alt88=1;
+                if ( (LA86_0==82) ) {
+                    alt86=1;
                 }
 
 
-                switch (alt88) {
+                switch (alt86) {
             	case 1 :
-            	    // InternalSignalDSL.g:9801:3: rule__XSetLiteral__Group_3_1__0
+            	    // InternalSignalDSL.g:10388:3: rule__XSetLiteral__Group_3_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XSetLiteral__Group_3_1__0();
@@ -33203,7 +35127,7 @@
             	    break;
 
             	default :
-            	    break loop88;
+            	    break loop86;
                 }
             } while (true);
 
@@ -33232,14 +35156,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0"
-    // InternalSignalDSL.g:9810:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
+    // InternalSignalDSL.g:10397:1: rule__XSetLiteral__Group_3_1__0 : rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 ;
     public final void rule__XSetLiteral__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9814:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
-            // InternalSignalDSL.g:9815:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            // InternalSignalDSL.g:10401:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalSignalDSL.g:10402:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XSetLiteral__Group_3_1__0__Impl();
@@ -33270,22 +35194,22 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:9822:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:10409:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9826:1: ( ( ',' ) )
-            // InternalSignalDSL.g:9827:1: ( ',' )
+            // InternalSignalDSL.g:10413:1: ( ( ',' ) )
+            // InternalSignalDSL.g:10414:1: ( ',' )
             {
-            // InternalSignalDSL.g:9827:1: ( ',' )
-            // InternalSignalDSL.g:9828:2: ','
+            // InternalSignalDSL.g:10414:1: ( ',' )
+            // InternalSignalDSL.g:10415:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -33311,14 +35235,14 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1"
-    // InternalSignalDSL.g:9837:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:10424:1: rule__XSetLiteral__Group_3_1__1 : rule__XSetLiteral__Group_3_1__1__Impl ;
     public final void rule__XSetLiteral__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9841:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:9842:2: rule__XSetLiteral__Group_3_1__1__Impl
+            // InternalSignalDSL.g:10428:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:10429:2: rule__XSetLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__Group_3_1__1__Impl();
@@ -33344,23 +35268,23 @@
 
 
     // $ANTLR start "rule__XSetLiteral__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:9848:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:10435:1: rule__XSetLiteral__Group_3_1__1__Impl : ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) ;
     public final void rule__XSetLiteral__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9852:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:9853:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:10439:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:10440:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:9853:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:9854:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:10440:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:10441:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:9855:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
-            // InternalSignalDSL.g:9855:3: rule__XSetLiteral__ElementsAssignment_3_1_1
+            // InternalSignalDSL.g:10442:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:10442:3: rule__XSetLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSetLiteral__ElementsAssignment_3_1_1();
@@ -33395,14 +35319,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0"
-    // InternalSignalDSL.g:9864:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
+    // InternalSignalDSL.g:10451:1: rule__XListLiteral__Group__0 : rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 ;
     public final void rule__XListLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9868:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
-            // InternalSignalDSL.g:9869:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            // InternalSignalDSL.g:10455:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalSignalDSL.g:10456:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
             {
             pushFollow(FOLLOW_38);
             rule__XListLiteral__Group__0__Impl();
@@ -33433,23 +35357,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:9876:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:10463:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9880:1: ( ( () ) )
-            // InternalSignalDSL.g:9881:1: ( () )
+            // InternalSignalDSL.g:10467:1: ( ( () ) )
+            // InternalSignalDSL.g:10468:1: ( () )
             {
-            // InternalSignalDSL.g:9881:1: ( () )
-            // InternalSignalDSL.g:9882:2: ()
+            // InternalSignalDSL.g:10468:1: ( () )
+            // InternalSignalDSL.g:10469:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:9883:2: ()
-            // InternalSignalDSL.g:9883:3: 
+            // InternalSignalDSL.g:10470:2: ()
+            // InternalSignalDSL.g:10470:3: 
             {
             }
 
@@ -33474,14 +35398,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1"
-    // InternalSignalDSL.g:9891:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
+    // InternalSignalDSL.g:10478:1: rule__XListLiteral__Group__1 : rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 ;
     public final void rule__XListLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9895:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
-            // InternalSignalDSL.g:9896:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            // InternalSignalDSL.g:10482:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalSignalDSL.g:10483:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
             {
             pushFollow(FOLLOW_39);
             rule__XListLiteral__Group__1__Impl();
@@ -33512,22 +35436,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:9903:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    // InternalSignalDSL.g:10490:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
     public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9907:1: ( ( '#' ) )
-            // InternalSignalDSL.g:9908:1: ( '#' )
+            // InternalSignalDSL.g:10494:1: ( ( '#' ) )
+            // InternalSignalDSL.g:10495:1: ( '#' )
             {
-            // InternalSignalDSL.g:9908:1: ( '#' )
-            // InternalSignalDSL.g:9909:2: '#'
+            // InternalSignalDSL.g:10495:1: ( '#' )
+            // InternalSignalDSL.g:10496:2: '#'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
-            match(input,75,FOLLOW_2); if (state.failed) return ;
+            match(input,84,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
             }
@@ -33553,14 +35477,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2"
-    // InternalSignalDSL.g:9918:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
+    // InternalSignalDSL.g:10505:1: rule__XListLiteral__Group__2 : rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 ;
     public final void rule__XListLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9922:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
-            // InternalSignalDSL.g:9923:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            // InternalSignalDSL.g:10509:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalSignalDSL.g:10510:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
             {
             pushFollow(FOLLOW_37);
             rule__XListLiteral__Group__2__Impl();
@@ -33591,22 +35515,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__2__Impl"
-    // InternalSignalDSL.g:9930:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:10517:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
     public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9934:1: ( ( '[' ) )
-            // InternalSignalDSL.g:9935:1: ( '[' )
+            // InternalSignalDSL.g:10521:1: ( ( '[' ) )
+            // InternalSignalDSL.g:10522:1: ( '[' )
             {
-            // InternalSignalDSL.g:9935:1: ( '[' )
-            // InternalSignalDSL.g:9936:2: '['
+            // InternalSignalDSL.g:10522:1: ( '[' )
+            // InternalSignalDSL.g:10523:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
             }
@@ -33632,14 +35556,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3"
-    // InternalSignalDSL.g:9945:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
+    // InternalSignalDSL.g:10532:1: rule__XListLiteral__Group__3 : rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 ;
     public final void rule__XListLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9949:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
-            // InternalSignalDSL.g:9950:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            // InternalSignalDSL.g:10536:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalSignalDSL.g:10537:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
             {
             pushFollow(FOLLOW_37);
             rule__XListLiteral__Group__3__Impl();
@@ -33670,31 +35594,31 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__3__Impl"
-    // InternalSignalDSL.g:9957:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:10544:1: rule__XListLiteral__Group__3__Impl : ( ( rule__XListLiteral__Group_3__0 )? ) ;
     public final void rule__XListLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9961:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
-            // InternalSignalDSL.g:9962:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10548:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalSignalDSL.g:10549:1: ( ( rule__XListLiteral__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:9962:1: ( ( rule__XListLiteral__Group_3__0 )? )
-            // InternalSignalDSL.g:9963:2: ( rule__XListLiteral__Group_3__0 )?
+            // InternalSignalDSL.g:10549:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalSignalDSL.g:10550:2: ( rule__XListLiteral__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:9964:2: ( rule__XListLiteral__Group_3__0 )?
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            // InternalSignalDSL.g:10551:2: ( rule__XListLiteral__Group_3__0 )?
+            int alt87=2;
+            int LA87_0 = input.LA(1);
 
-            if ( ((LA89_0>=RULE_ID && LA89_0<=RULE_STRING)||LA89_0==27||(LA89_0>=34 && LA89_0<=35)||LA89_0==40||(LA89_0>=45 && LA89_0<=50)||LA89_0==60||LA89_0==64||LA89_0==71||(LA89_0>=75 && LA89_0<=76)||LA89_0==79||LA89_0==81||(LA89_0>=85 && LA89_0<=92)||LA89_0==94||LA89_0==103) ) {
-                alt89=1;
+            if ( ((LA87_0>=RULE_ID && LA87_0<=RULE_STRING)||LA87_0==27||(LA87_0>=34 && LA87_0<=35)||LA87_0==40||(LA87_0>=45 && LA87_0<=50)||LA87_0==63||LA87_0==80||(LA87_0>=84 && LA87_0<=85)||LA87_0==88||LA87_0==90||(LA87_0>=93 && LA87_0<=101)||LA87_0==103||LA87_0==112) ) {
+                alt87=1;
             }
-            switch (alt89) {
+            switch (alt87) {
                 case 1 :
-                    // InternalSignalDSL.g:9964:3: rule__XListLiteral__Group_3__0
+                    // InternalSignalDSL.g:10551:3: rule__XListLiteral__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XListLiteral__Group_3__0();
@@ -33732,14 +35656,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4"
-    // InternalSignalDSL.g:9972:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    // InternalSignalDSL.g:10559:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
     public final void rule__XListLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9976:1: ( rule__XListLiteral__Group__4__Impl )
-            // InternalSignalDSL.g:9977:2: rule__XListLiteral__Group__4__Impl
+            // InternalSignalDSL.g:10563:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalSignalDSL.g:10564:2: rule__XListLiteral__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group__4__Impl();
@@ -33765,22 +35689,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group__4__Impl"
-    // InternalSignalDSL.g:9983:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:10570:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
     public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:9987:1: ( ( ']' ) )
-            // InternalSignalDSL.g:9988:1: ( ']' )
+            // InternalSignalDSL.g:10574:1: ( ( ']' ) )
+            // InternalSignalDSL.g:10575:1: ( ']' )
             {
-            // InternalSignalDSL.g:9988:1: ( ']' )
-            // InternalSignalDSL.g:9989:2: ']'
+            // InternalSignalDSL.g:10575:1: ( ']' )
+            // InternalSignalDSL.g:10576:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
             }
@@ -33806,14 +35730,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0"
-    // InternalSignalDSL.g:9999:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
+    // InternalSignalDSL.g:10586:1: rule__XListLiteral__Group_3__0 : rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 ;
     public final void rule__XListLiteral__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10003:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
-            // InternalSignalDSL.g:10004:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            // InternalSignalDSL.g:10590:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalSignalDSL.g:10591:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
             {
             pushFollow(FOLLOW_33);
             rule__XListLiteral__Group_3__0__Impl();
@@ -33844,23 +35768,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__0__Impl"
-    // InternalSignalDSL.g:10011:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:10598:1: rule__XListLiteral__Group_3__0__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) ;
     public final void rule__XListLiteral__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10015:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:10016:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:10602:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:10603:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:10016:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
-            // InternalSignalDSL.g:10017:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:10603:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalSignalDSL.g:10604:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:10018:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
-            // InternalSignalDSL.g:10018:3: rule__XListLiteral__ElementsAssignment_3_0
+            // InternalSignalDSL.g:10605:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalSignalDSL.g:10605:3: rule__XListLiteral__ElementsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_0();
@@ -33895,14 +35819,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1"
-    // InternalSignalDSL.g:10026:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
+    // InternalSignalDSL.g:10613:1: rule__XListLiteral__Group_3__1 : rule__XListLiteral__Group_3__1__Impl ;
     public final void rule__XListLiteral__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10030:1: ( rule__XListLiteral__Group_3__1__Impl )
-            // InternalSignalDSL.g:10031:2: rule__XListLiteral__Group_3__1__Impl
+            // InternalSignalDSL.g:10617:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalSignalDSL.g:10618:2: rule__XListLiteral__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3__1__Impl();
@@ -33928,35 +35852,35 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3__1__Impl"
-    // InternalSignalDSL.g:10037:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
+    // InternalSignalDSL.g:10624:1: rule__XListLiteral__Group_3__1__Impl : ( ( rule__XListLiteral__Group_3_1__0 )* ) ;
     public final void rule__XListLiteral__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10041:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
-            // InternalSignalDSL.g:10042:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:10628:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalSignalDSL.g:10629:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
             {
-            // InternalSignalDSL.g:10042:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
-            // InternalSignalDSL.g:10043:2: ( rule__XListLiteral__Group_3_1__0 )*
+            // InternalSignalDSL.g:10629:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalSignalDSL.g:10630:2: ( rule__XListLiteral__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
             }
-            // InternalSignalDSL.g:10044:2: ( rule__XListLiteral__Group_3_1__0 )*
-            loop90:
+            // InternalSignalDSL.g:10631:2: ( rule__XListLiteral__Group_3_1__0 )*
+            loop88:
             do {
-                int alt90=2;
-                int LA90_0 = input.LA(1);
+                int alt88=2;
+                int LA88_0 = input.LA(1);
 
-                if ( (LA90_0==73) ) {
-                    alt90=1;
+                if ( (LA88_0==82) ) {
+                    alt88=1;
                 }
 
 
-                switch (alt90) {
+                switch (alt88) {
             	case 1 :
-            	    // InternalSignalDSL.g:10044:3: rule__XListLiteral__Group_3_1__0
+            	    // InternalSignalDSL.g:10631:3: rule__XListLiteral__Group_3_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XListLiteral__Group_3_1__0();
@@ -33968,7 +35892,7 @@
             	    break;
 
             	default :
-            	    break loop90;
+            	    break loop88;
                 }
             } while (true);
 
@@ -33997,14 +35921,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0"
-    // InternalSignalDSL.g:10053:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
+    // InternalSignalDSL.g:10640:1: rule__XListLiteral__Group_3_1__0 : rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 ;
     public final void rule__XListLiteral__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10057:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
-            // InternalSignalDSL.g:10058:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            // InternalSignalDSL.g:10644:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalSignalDSL.g:10645:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XListLiteral__Group_3_1__0__Impl();
@@ -34035,22 +35959,22 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:10065:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:10652:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10069:1: ( ( ',' ) )
-            // InternalSignalDSL.g:10070:1: ( ',' )
+            // InternalSignalDSL.g:10656:1: ( ( ',' ) )
+            // InternalSignalDSL.g:10657:1: ( ',' )
             {
-            // InternalSignalDSL.g:10070:1: ( ',' )
-            // InternalSignalDSL.g:10071:2: ','
+            // InternalSignalDSL.g:10657:1: ( ',' )
+            // InternalSignalDSL.g:10658:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
             }
@@ -34076,14 +36000,14 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1"
-    // InternalSignalDSL.g:10080:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:10667:1: rule__XListLiteral__Group_3_1__1 : rule__XListLiteral__Group_3_1__1__Impl ;
     public final void rule__XListLiteral__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10084:1: ( rule__XListLiteral__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:10085:2: rule__XListLiteral__Group_3_1__1__Impl
+            // InternalSignalDSL.g:10671:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:10672:2: rule__XListLiteral__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__Group_3_1__1__Impl();
@@ -34109,23 +36033,23 @@
 
 
     // $ANTLR start "rule__XListLiteral__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:10091:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:10678:1: rule__XListLiteral__Group_3_1__1__Impl : ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) ;
     public final void rule__XListLiteral__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10095:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:10096:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:10682:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:10683:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:10096:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:10097:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:10683:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:10684:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:10098:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
-            // InternalSignalDSL.g:10098:3: rule__XListLiteral__ElementsAssignment_3_1_1
+            // InternalSignalDSL.g:10685:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalSignalDSL.g:10685:3: rule__XListLiteral__ElementsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XListLiteral__ElementsAssignment_3_1_1();
@@ -34160,14 +36084,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0"
-    // InternalSignalDSL.g:10107:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
+    // InternalSignalDSL.g:10694:1: rule__XClosure__Group__0 : rule__XClosure__Group__0__Impl rule__XClosure__Group__1 ;
     public final void rule__XClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10111:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
-            // InternalSignalDSL.g:10112:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            // InternalSignalDSL.g:10698:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalSignalDSL.g:10699:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
             {
             pushFollow(FOLLOW_76);
             rule__XClosure__Group__0__Impl();
@@ -34198,23 +36122,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__0__Impl"
-    // InternalSignalDSL.g:10119:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:10706:1: rule__XClosure__Group__0__Impl : ( ( rule__XClosure__Group_0__0 ) ) ;
     public final void rule__XClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10123:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
-            // InternalSignalDSL.g:10124:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:10710:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalSignalDSL.g:10711:1: ( ( rule__XClosure__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:10124:1: ( ( rule__XClosure__Group_0__0 ) )
-            // InternalSignalDSL.g:10125:2: ( rule__XClosure__Group_0__0 )
+            // InternalSignalDSL.g:10711:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:10712:2: ( rule__XClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:10126:2: ( rule__XClosure__Group_0__0 )
-            // InternalSignalDSL.g:10126:3: rule__XClosure__Group_0__0
+            // InternalSignalDSL.g:10713:2: ( rule__XClosure__Group_0__0 )
+            // InternalSignalDSL.g:10713:3: rule__XClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0();
@@ -34249,14 +36173,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1"
-    // InternalSignalDSL.g:10134:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
+    // InternalSignalDSL.g:10721:1: rule__XClosure__Group__1 : rule__XClosure__Group__1__Impl rule__XClosure__Group__2 ;
     public final void rule__XClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10138:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
-            // InternalSignalDSL.g:10139:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            // InternalSignalDSL.g:10725:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalSignalDSL.g:10726:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
             {
             pushFollow(FOLLOW_76);
             rule__XClosure__Group__1__Impl();
@@ -34287,27 +36211,27 @@
 
 
     // $ANTLR start "rule__XClosure__Group__1__Impl"
-    // InternalSignalDSL.g:10146:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:10733:1: rule__XClosure__Group__1__Impl : ( ( rule__XClosure__Group_1__0 )? ) ;
     public final void rule__XClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10150:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
-            // InternalSignalDSL.g:10151:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalSignalDSL.g:10737:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalSignalDSL.g:10738:1: ( ( rule__XClosure__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:10151:1: ( ( rule__XClosure__Group_1__0 )? )
-            // InternalSignalDSL.g:10152:2: ( rule__XClosure__Group_1__0 )?
+            // InternalSignalDSL.g:10738:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalSignalDSL.g:10739:2: ( rule__XClosure__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:10153:2: ( rule__XClosure__Group_1__0 )?
-            int alt91=2;
-            alt91 = dfa91.predict(input);
-            switch (alt91) {
+            // InternalSignalDSL.g:10740:2: ( rule__XClosure__Group_1__0 )?
+            int alt89=2;
+            alt89 = dfa89.predict(input);
+            switch (alt89) {
                 case 1 :
-                    // InternalSignalDSL.g:10153:3: rule__XClosure__Group_1__0
+                    // InternalSignalDSL.g:10740:3: rule__XClosure__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1__0();
@@ -34345,14 +36269,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2"
-    // InternalSignalDSL.g:10161:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
+    // InternalSignalDSL.g:10748:1: rule__XClosure__Group__2 : rule__XClosure__Group__2__Impl rule__XClosure__Group__3 ;
     public final void rule__XClosure__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10165:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
-            // InternalSignalDSL.g:10166:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            // InternalSignalDSL.g:10752:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalSignalDSL.g:10753:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
             {
             pushFollow(FOLLOW_77);
             rule__XClosure__Group__2__Impl();
@@ -34383,23 +36307,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group__2__Impl"
-    // InternalSignalDSL.g:10173:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    // InternalSignalDSL.g:10760:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
     public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10177:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
-            // InternalSignalDSL.g:10178:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:10764:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalSignalDSL.g:10765:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
             {
-            // InternalSignalDSL.g:10178:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
-            // InternalSignalDSL.g:10179:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:10765:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:10766:2: ( rule__XClosure__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:10180:2: ( rule__XClosure__ExpressionAssignment_2 )
-            // InternalSignalDSL.g:10180:3: rule__XClosure__ExpressionAssignment_2
+            // InternalSignalDSL.g:10767:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:10767:3: rule__XClosure__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExpressionAssignment_2();
@@ -34434,14 +36358,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3"
-    // InternalSignalDSL.g:10188:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    // InternalSignalDSL.g:10775:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
     public final void rule__XClosure__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10192:1: ( rule__XClosure__Group__3__Impl )
-            // InternalSignalDSL.g:10193:2: rule__XClosure__Group__3__Impl
+            // InternalSignalDSL.g:10779:1: ( rule__XClosure__Group__3__Impl )
+            // InternalSignalDSL.g:10780:2: rule__XClosure__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group__3__Impl();
@@ -34467,22 +36391,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group__3__Impl"
-    // InternalSignalDSL.g:10199:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:10786:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
     public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10203:1: ( ( ']' ) )
-            // InternalSignalDSL.g:10204:1: ( ']' )
+            // InternalSignalDSL.g:10790:1: ( ( ']' ) )
+            // InternalSignalDSL.g:10791:1: ( ']' )
             {
-            // InternalSignalDSL.g:10204:1: ( ']' )
-            // InternalSignalDSL.g:10205:2: ']'
+            // InternalSignalDSL.g:10791:1: ( ']' )
+            // InternalSignalDSL.g:10792:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
             }
@@ -34508,14 +36432,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0"
-    // InternalSignalDSL.g:10215:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
+    // InternalSignalDSL.g:10802:1: rule__XClosure__Group_0__0 : rule__XClosure__Group_0__0__Impl ;
     public final void rule__XClosure__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10219:1: ( rule__XClosure__Group_0__0__Impl )
-            // InternalSignalDSL.g:10220:2: rule__XClosure__Group_0__0__Impl
+            // InternalSignalDSL.g:10806:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalSignalDSL.g:10807:2: rule__XClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0__0__Impl();
@@ -34541,23 +36465,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0__0__Impl"
-    // InternalSignalDSL.g:10226:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:10813:1: rule__XClosure__Group_0__0__Impl : ( ( rule__XClosure__Group_0_0__0 ) ) ;
     public final void rule__XClosure__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10230:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:10231:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:10817:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:10818:1: ( ( rule__XClosure__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:10231:1: ( ( rule__XClosure__Group_0_0__0 ) )
-            // InternalSignalDSL.g:10232:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:10818:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:10819:2: ( rule__XClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:10233:2: ( rule__XClosure__Group_0_0__0 )
-            // InternalSignalDSL.g:10233:3: rule__XClosure__Group_0_0__0
+            // InternalSignalDSL.g:10820:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:10820:3: rule__XClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__0();
@@ -34592,14 +36516,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0"
-    // InternalSignalDSL.g:10242:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
+    // InternalSignalDSL.g:10829:1: rule__XClosure__Group_0_0__0 : rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 ;
     public final void rule__XClosure__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10246:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
-            // InternalSignalDSL.g:10247:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            // InternalSignalDSL.g:10833:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalSignalDSL.g:10834:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
             {
             pushFollow(FOLLOW_39);
             rule__XClosure__Group_0_0__0__Impl();
@@ -34630,23 +36554,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:10254:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:10841:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10258:1: ( ( () ) )
-            // InternalSignalDSL.g:10259:1: ( () )
+            // InternalSignalDSL.g:10845:1: ( ( () ) )
+            // InternalSignalDSL.g:10846:1: ( () )
             {
-            // InternalSignalDSL.g:10259:1: ( () )
-            // InternalSignalDSL.g:10260:2: ()
+            // InternalSignalDSL.g:10846:1: ( () )
+            // InternalSignalDSL.g:10847:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:10261:2: ()
-            // InternalSignalDSL.g:10261:3: 
+            // InternalSignalDSL.g:10848:2: ()
+            // InternalSignalDSL.g:10848:3: 
             {
             }
 
@@ -34671,14 +36595,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1"
-    // InternalSignalDSL.g:10269:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
+    // InternalSignalDSL.g:10856:1: rule__XClosure__Group_0_0__1 : rule__XClosure__Group_0_0__1__Impl ;
     public final void rule__XClosure__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10273:1: ( rule__XClosure__Group_0_0__1__Impl )
-            // InternalSignalDSL.g:10274:2: rule__XClosure__Group_0_0__1__Impl
+            // InternalSignalDSL.g:10860:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalSignalDSL.g:10861:2: rule__XClosure__Group_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_0_0__1__Impl();
@@ -34704,22 +36628,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:10280:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:10867:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
     public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10284:1: ( ( '[' ) )
-            // InternalSignalDSL.g:10285:1: ( '[' )
+            // InternalSignalDSL.g:10871:1: ( ( '[' ) )
+            // InternalSignalDSL.g:10872:1: ( '[' )
             {
-            // InternalSignalDSL.g:10285:1: ( '[' )
-            // InternalSignalDSL.g:10286:2: '['
+            // InternalSignalDSL.g:10872:1: ( '[' )
+            // InternalSignalDSL.g:10873:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
             }
@@ -34745,14 +36669,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0"
-    // InternalSignalDSL.g:10296:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
+    // InternalSignalDSL.g:10883:1: rule__XClosure__Group_1__0 : rule__XClosure__Group_1__0__Impl ;
     public final void rule__XClosure__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10300:1: ( rule__XClosure__Group_1__0__Impl )
-            // InternalSignalDSL.g:10301:2: rule__XClosure__Group_1__0__Impl
+            // InternalSignalDSL.g:10887:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalSignalDSL.g:10888:2: rule__XClosure__Group_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1__0__Impl();
@@ -34778,23 +36702,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1__0__Impl"
-    // InternalSignalDSL.g:10307:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
+    // InternalSignalDSL.g:10894:1: rule__XClosure__Group_1__0__Impl : ( ( rule__XClosure__Group_1_0__0 ) ) ;
     public final void rule__XClosure__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10311:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
-            // InternalSignalDSL.g:10312:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalSignalDSL.g:10898:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalSignalDSL.g:10899:1: ( ( rule__XClosure__Group_1_0__0 ) )
             {
-            // InternalSignalDSL.g:10312:1: ( ( rule__XClosure__Group_1_0__0 ) )
-            // InternalSignalDSL.g:10313:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalSignalDSL.g:10899:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalSignalDSL.g:10900:2: ( rule__XClosure__Group_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
             }
-            // InternalSignalDSL.g:10314:2: ( rule__XClosure__Group_1_0__0 )
-            // InternalSignalDSL.g:10314:3: rule__XClosure__Group_1_0__0
+            // InternalSignalDSL.g:10901:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalSignalDSL.g:10901:3: rule__XClosure__Group_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__0();
@@ -34829,14 +36753,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0"
-    // InternalSignalDSL.g:10323:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
+    // InternalSignalDSL.g:10910:1: rule__XClosure__Group_1_0__0 : rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 ;
     public final void rule__XClosure__Group_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10327:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
-            // InternalSignalDSL.g:10328:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            // InternalSignalDSL.g:10914:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalSignalDSL.g:10915:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
             {
             pushFollow(FOLLOW_78);
             rule__XClosure__Group_1_0__0__Impl();
@@ -34867,31 +36791,31 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__0__Impl"
-    // InternalSignalDSL.g:10335:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
+    // InternalSignalDSL.g:10922:1: rule__XClosure__Group_1_0__0__Impl : ( ( rule__XClosure__Group_1_0_0__0 )? ) ;
     public final void rule__XClosure__Group_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10339:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
-            // InternalSignalDSL.g:10340:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalSignalDSL.g:10926:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalSignalDSL.g:10927:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
             {
-            // InternalSignalDSL.g:10340:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
-            // InternalSignalDSL.g:10341:2: ( rule__XClosure__Group_1_0_0__0 )?
+            // InternalSignalDSL.g:10927:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalSignalDSL.g:10928:2: ( rule__XClosure__Group_1_0_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
             }
-            // InternalSignalDSL.g:10342:2: ( rule__XClosure__Group_1_0_0__0 )?
-            int alt92=2;
-            int LA92_0 = input.LA(1);
+            // InternalSignalDSL.g:10929:2: ( rule__XClosure__Group_1_0_0__0 )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
 
-            if ( (LA92_0==RULE_ID||LA92_0==31||LA92_0==71) ) {
-                alt92=1;
+            if ( (LA90_0==RULE_ID||LA90_0==31||LA90_0==80) ) {
+                alt90=1;
             }
-            switch (alt92) {
+            switch (alt90) {
                 case 1 :
-                    // InternalSignalDSL.g:10342:3: rule__XClosure__Group_1_0_0__0
+                    // InternalSignalDSL.g:10929:3: rule__XClosure__Group_1_0_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XClosure__Group_1_0_0__0();
@@ -34929,14 +36853,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1"
-    // InternalSignalDSL.g:10350:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
+    // InternalSignalDSL.g:10937:1: rule__XClosure__Group_1_0__1 : rule__XClosure__Group_1_0__1__Impl ;
     public final void rule__XClosure__Group_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10354:1: ( rule__XClosure__Group_1_0__1__Impl )
-            // InternalSignalDSL.g:10355:2: rule__XClosure__Group_1_0__1__Impl
+            // InternalSignalDSL.g:10941:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalSignalDSL.g:10942:2: rule__XClosure__Group_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0__1__Impl();
@@ -34962,23 +36886,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0__1__Impl"
-    // InternalSignalDSL.g:10361:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
+    // InternalSignalDSL.g:10948:1: rule__XClosure__Group_1_0__1__Impl : ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) ;
     public final void rule__XClosure__Group_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10365:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
-            // InternalSignalDSL.g:10366:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:10952:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalSignalDSL.g:10953:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
             {
-            // InternalSignalDSL.g:10366:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
-            // InternalSignalDSL.g:10367:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalSignalDSL.g:10953:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalSignalDSL.g:10954:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
             }
-            // InternalSignalDSL.g:10368:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
-            // InternalSignalDSL.g:10368:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
+            // InternalSignalDSL.g:10955:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalSignalDSL.g:10955:3: rule__XClosure__ExplicitSyntaxAssignment_1_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__ExplicitSyntaxAssignment_1_0_1();
@@ -35013,14 +36937,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0"
-    // InternalSignalDSL.g:10377:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
+    // InternalSignalDSL.g:10964:1: rule__XClosure__Group_1_0_0__0 : rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 ;
     public final void rule__XClosure__Group_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10381:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
-            // InternalSignalDSL.g:10382:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            // InternalSignalDSL.g:10968:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalSignalDSL.g:10969:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
             {
             pushFollow(FOLLOW_33);
             rule__XClosure__Group_1_0_0__0__Impl();
@@ -35051,23 +36975,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__0__Impl"
-    // InternalSignalDSL.g:10389:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
+    // InternalSignalDSL.g:10976:1: rule__XClosure__Group_1_0_0__0__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) ;
     public final void rule__XClosure__Group_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10393:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
-            // InternalSignalDSL.g:10394:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalSignalDSL.g:10980:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalSignalDSL.g:10981:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
             {
-            // InternalSignalDSL.g:10394:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
-            // InternalSignalDSL.g:10395:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalSignalDSL.g:10981:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalSignalDSL.g:10982:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:10396:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
-            // InternalSignalDSL.g:10396:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
+            // InternalSignalDSL.g:10983:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalSignalDSL.g:10983:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0();
@@ -35102,14 +37026,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1"
-    // InternalSignalDSL.g:10404:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:10991:1: rule__XClosure__Group_1_0_0__1 : rule__XClosure__Group_1_0_0__1__Impl ;
     public final void rule__XClosure__Group_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10408:1: ( rule__XClosure__Group_1_0_0__1__Impl )
-            // InternalSignalDSL.g:10409:2: rule__XClosure__Group_1_0_0__1__Impl
+            // InternalSignalDSL.g:10995:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalSignalDSL.g:10996:2: rule__XClosure__Group_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0__1__Impl();
@@ -35135,35 +37059,35 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0__1__Impl"
-    // InternalSignalDSL.g:10415:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
+    // InternalSignalDSL.g:11002:1: rule__XClosure__Group_1_0_0__1__Impl : ( ( rule__XClosure__Group_1_0_0_1__0 )* ) ;
     public final void rule__XClosure__Group_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10419:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
-            // InternalSignalDSL.g:10420:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalSignalDSL.g:11006:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalSignalDSL.g:11007:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
             {
-            // InternalSignalDSL.g:10420:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
-            // InternalSignalDSL.g:10421:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            // InternalSignalDSL.g:11007:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalSignalDSL.g:11008:2: ( rule__XClosure__Group_1_0_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
             }
-            // InternalSignalDSL.g:10422:2: ( rule__XClosure__Group_1_0_0_1__0 )*
-            loop93:
+            // InternalSignalDSL.g:11009:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            loop91:
             do {
-                int alt93=2;
-                int LA93_0 = input.LA(1);
+                int alt91=2;
+                int LA91_0 = input.LA(1);
 
-                if ( (LA93_0==73) ) {
-                    alt93=1;
+                if ( (LA91_0==82) ) {
+                    alt91=1;
                 }
 
 
-                switch (alt93) {
+                switch (alt91) {
             	case 1 :
-            	    // InternalSignalDSL.g:10422:3: rule__XClosure__Group_1_0_0_1__0
+            	    // InternalSignalDSL.g:11009:3: rule__XClosure__Group_1_0_0_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XClosure__Group_1_0_0_1__0();
@@ -35175,7 +37099,7 @@
             	    break;
 
             	default :
-            	    break loop93;
+            	    break loop91;
                 }
             } while (true);
 
@@ -35204,14 +37128,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0"
-    // InternalSignalDSL.g:10431:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
+    // InternalSignalDSL.g:11018:1: rule__XClosure__Group_1_0_0_1__0 : rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 ;
     public final void rule__XClosure__Group_1_0_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10435:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
-            // InternalSignalDSL.g:10436:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            // InternalSignalDSL.g:11022:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalSignalDSL.g:11023:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
             {
             pushFollow(FOLLOW_52);
             rule__XClosure__Group_1_0_0_1__0__Impl();
@@ -35242,22 +37166,22 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__0__Impl"
-    // InternalSignalDSL.g:10443:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:11030:1: rule__XClosure__Group_1_0_0_1__0__Impl : ( ',' ) ;
     public final void rule__XClosure__Group_1_0_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10447:1: ( ( ',' ) )
-            // InternalSignalDSL.g:10448:1: ( ',' )
+            // InternalSignalDSL.g:11034:1: ( ( ',' ) )
+            // InternalSignalDSL.g:11035:1: ( ',' )
             {
-            // InternalSignalDSL.g:10448:1: ( ',' )
-            // InternalSignalDSL.g:10449:2: ','
+            // InternalSignalDSL.g:11035:1: ( ',' )
+            // InternalSignalDSL.g:11036:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
             }
@@ -35283,14 +37207,14 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1"
-    // InternalSignalDSL.g:10458:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
+    // InternalSignalDSL.g:11045:1: rule__XClosure__Group_1_0_0_1__1 : rule__XClosure__Group_1_0_0_1__1__Impl ;
     public final void rule__XClosure__Group_1_0_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10462:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
-            // InternalSignalDSL.g:10463:2: rule__XClosure__Group_1_0_0_1__1__Impl
+            // InternalSignalDSL.g:11049:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalSignalDSL.g:11050:2: rule__XClosure__Group_1_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__Group_1_0_0_1__1__Impl();
@@ -35316,23 +37240,23 @@
 
 
     // $ANTLR start "rule__XClosure__Group_1_0_0_1__1__Impl"
-    // InternalSignalDSL.g:10469:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
+    // InternalSignalDSL.g:11056:1: rule__XClosure__Group_1_0_0_1__1__Impl : ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) ;
     public final void rule__XClosure__Group_1_0_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10473:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
-            // InternalSignalDSL.g:10474:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalSignalDSL.g:11060:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalSignalDSL.g:11061:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
             {
-            // InternalSignalDSL.g:10474:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
-            // InternalSignalDSL.g:10475:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalSignalDSL.g:11061:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalSignalDSL.g:11062:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
             }
-            // InternalSignalDSL.g:10476:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
-            // InternalSignalDSL.g:10476:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
+            // InternalSignalDSL.g:11063:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalSignalDSL.g:11063:3: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1();
@@ -35367,14 +37291,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0"
-    // InternalSignalDSL.g:10485:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
+    // InternalSignalDSL.g:11072:1: rule__XExpressionInClosure__Group__0 : rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 ;
     public final void rule__XExpressionInClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10489:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
-            // InternalSignalDSL.g:10490:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            // InternalSignalDSL.g:11076:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalSignalDSL.g:11077:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
             {
             pushFollow(FOLLOW_76);
             rule__XExpressionInClosure__Group__0__Impl();
@@ -35405,23 +37329,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__0__Impl"
-    // InternalSignalDSL.g:10497:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11084:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
     public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10501:1: ( ( () ) )
-            // InternalSignalDSL.g:10502:1: ( () )
+            // InternalSignalDSL.g:11088:1: ( ( () ) )
+            // InternalSignalDSL.g:11089:1: ( () )
             {
-            // InternalSignalDSL.g:10502:1: ( () )
-            // InternalSignalDSL.g:10503:2: ()
+            // InternalSignalDSL.g:11089:1: ( () )
+            // InternalSignalDSL.g:11090:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:10504:2: ()
-            // InternalSignalDSL.g:10504:3: 
+            // InternalSignalDSL.g:11091:2: ()
+            // InternalSignalDSL.g:11091:3: 
             {
             }
 
@@ -35446,14 +37370,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1"
-    // InternalSignalDSL.g:10512:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    // InternalSignalDSL.g:11099:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
     public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10516:1: ( rule__XExpressionInClosure__Group__1__Impl )
-            // InternalSignalDSL.g:10517:2: rule__XExpressionInClosure__Group__1__Impl
+            // InternalSignalDSL.g:11103:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalSignalDSL.g:11104:2: rule__XExpressionInClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group__1__Impl();
@@ -35479,35 +37403,35 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group__1__Impl"
-    // InternalSignalDSL.g:10523:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:11110:1: rule__XExpressionInClosure__Group__1__Impl : ( ( rule__XExpressionInClosure__Group_1__0 )* ) ;
     public final void rule__XExpressionInClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10527:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
-            // InternalSignalDSL.g:10528:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalSignalDSL.g:11114:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalSignalDSL.g:11115:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:10528:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
-            // InternalSignalDSL.g:10529:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            // InternalSignalDSL.g:11115:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalSignalDSL.g:11116:2: ( rule__XExpressionInClosure__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:10530:2: ( rule__XExpressionInClosure__Group_1__0 )*
-            loop94:
+            // InternalSignalDSL.g:11117:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            loop92:
             do {
-                int alt94=2;
-                int LA94_0 = input.LA(1);
+                int alt92=2;
+                int LA92_0 = input.LA(1);
 
-                if ( ((LA94_0>=RULE_ID && LA94_0<=RULE_STRING)||LA94_0==27||(LA94_0>=34 && LA94_0<=35)||LA94_0==40||(LA94_0>=44 && LA94_0<=50)||LA94_0==60||LA94_0==64||LA94_0==71||(LA94_0>=75 && LA94_0<=76)||LA94_0==79||LA94_0==81||(LA94_0>=85 && LA94_0<=92)||LA94_0==94||(LA94_0>=102 && LA94_0<=103)) ) {
-                    alt94=1;
+                if ( ((LA92_0>=RULE_ID && LA92_0<=RULE_STRING)||LA92_0==27||(LA92_0>=34 && LA92_0<=35)||LA92_0==40||(LA92_0>=44 && LA92_0<=50)||LA92_0==63||LA92_0==80||(LA92_0>=84 && LA92_0<=85)||LA92_0==88||LA92_0==90||(LA92_0>=93 && LA92_0<=101)||LA92_0==103||(LA92_0>=111 && LA92_0<=112)) ) {
+                    alt92=1;
                 }
 
 
-                switch (alt94) {
+                switch (alt92) {
             	case 1 :
-            	    // InternalSignalDSL.g:10530:3: rule__XExpressionInClosure__Group_1__0
+            	    // InternalSignalDSL.g:11117:3: rule__XExpressionInClosure__Group_1__0
             	    {
             	    pushFollow(FOLLOW_79);
             	    rule__XExpressionInClosure__Group_1__0();
@@ -35519,7 +37443,7 @@
             	    break;
 
             	default :
-            	    break loop94;
+            	    break loop92;
                 }
             } while (true);
 
@@ -35548,14 +37472,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0"
-    // InternalSignalDSL.g:10539:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
+    // InternalSignalDSL.g:11126:1: rule__XExpressionInClosure__Group_1__0 : rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 ;
     public final void rule__XExpressionInClosure__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10543:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
-            // InternalSignalDSL.g:10544:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            // InternalSignalDSL.g:11130:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalSignalDSL.g:11131:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
             {
             pushFollow(FOLLOW_27);
             rule__XExpressionInClosure__Group_1__0__Impl();
@@ -35586,23 +37510,23 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__0__Impl"
-    // InternalSignalDSL.g:10551:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
+    // InternalSignalDSL.g:11138:1: rule__XExpressionInClosure__Group_1__0__Impl : ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) ;
     public final void rule__XExpressionInClosure__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10555:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
-            // InternalSignalDSL.g:10556:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalSignalDSL.g:11142:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalSignalDSL.g:11143:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
             {
-            // InternalSignalDSL.g:10556:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
-            // InternalSignalDSL.g:10557:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalSignalDSL.g:11143:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalSignalDSL.g:11144:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
             }
-            // InternalSignalDSL.g:10558:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
-            // InternalSignalDSL.g:10558:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
+            // InternalSignalDSL.g:11145:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalSignalDSL.g:11145:3: rule__XExpressionInClosure__ExpressionsAssignment_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__ExpressionsAssignment_1_0();
@@ -35637,14 +37561,14 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1"
-    // InternalSignalDSL.g:10566:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
+    // InternalSignalDSL.g:11153:1: rule__XExpressionInClosure__Group_1__1 : rule__XExpressionInClosure__Group_1__1__Impl ;
     public final void rule__XExpressionInClosure__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10570:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
-            // InternalSignalDSL.g:10571:2: rule__XExpressionInClosure__Group_1__1__Impl
+            // InternalSignalDSL.g:11157:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalSignalDSL.g:11158:2: rule__XExpressionInClosure__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XExpressionInClosure__Group_1__1__Impl();
@@ -35670,33 +37594,33 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__Group_1__1__Impl"
-    // InternalSignalDSL.g:10577:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    // InternalSignalDSL.g:11164:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
     public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10581:1: ( ( ( ';' )? ) )
-            // InternalSignalDSL.g:10582:1: ( ( ';' )? )
+            // InternalSignalDSL.g:11168:1: ( ( ( ';' )? ) )
+            // InternalSignalDSL.g:11169:1: ( ( ';' )? )
             {
-            // InternalSignalDSL.g:10582:1: ( ( ';' )? )
-            // InternalSignalDSL.g:10583:2: ( ';' )?
+            // InternalSignalDSL.g:11169:1: ( ( ';' )? )
+            // InternalSignalDSL.g:11170:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
             }
-            // InternalSignalDSL.g:10584:2: ( ';' )?
-            int alt95=2;
-            int LA95_0 = input.LA(1);
+            // InternalSignalDSL.g:11171:2: ( ';' )?
+            int alt93=2;
+            int LA93_0 = input.LA(1);
 
-            if ( (LA95_0==69) ) {
-                alt95=1;
+            if ( (LA93_0==78) ) {
+                alt93=1;
             }
-            switch (alt95) {
+            switch (alt93) {
                 case 1 :
-                    // InternalSignalDSL.g:10584:3: ';'
+                    // InternalSignalDSL.g:11171:3: ';'
                     {
-                    match(input,69,FOLLOW_2); if (state.failed) return ;
+                    match(input,78,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -35728,14 +37652,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0"
-    // InternalSignalDSL.g:10593:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
+    // InternalSignalDSL.g:11180:1: rule__XShortClosure__Group__0 : rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 ;
     public final void rule__XShortClosure__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10597:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
-            // InternalSignalDSL.g:10598:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            // InternalSignalDSL.g:11184:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalSignalDSL.g:11185:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
             {
             pushFollow(FOLLOW_35);
             rule__XShortClosure__Group__0__Impl();
@@ -35766,23 +37690,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__0__Impl"
-    // InternalSignalDSL.g:10605:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:11192:1: rule__XShortClosure__Group__0__Impl : ( ( rule__XShortClosure__Group_0__0 ) ) ;
     public final void rule__XShortClosure__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10609:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
-            // InternalSignalDSL.g:10610:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:11196:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalSignalDSL.g:11197:1: ( ( rule__XShortClosure__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:10610:1: ( ( rule__XShortClosure__Group_0__0 ) )
-            // InternalSignalDSL.g:10611:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalSignalDSL.g:11197:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalSignalDSL.g:11198:2: ( rule__XShortClosure__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:10612:2: ( rule__XShortClosure__Group_0__0 )
-            // InternalSignalDSL.g:10612:3: rule__XShortClosure__Group_0__0
+            // InternalSignalDSL.g:11199:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalSignalDSL.g:11199:3: rule__XShortClosure__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0();
@@ -35817,14 +37741,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1"
-    // InternalSignalDSL.g:10620:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    // InternalSignalDSL.g:11207:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
     public final void rule__XShortClosure__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10624:1: ( rule__XShortClosure__Group__1__Impl )
-            // InternalSignalDSL.g:10625:2: rule__XShortClosure__Group__1__Impl
+            // InternalSignalDSL.g:11211:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalSignalDSL.g:11212:2: rule__XShortClosure__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group__1__Impl();
@@ -35850,23 +37774,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group__1__Impl"
-    // InternalSignalDSL.g:10631:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    // InternalSignalDSL.g:11218:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
     public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10635:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
-            // InternalSignalDSL.g:10636:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:11222:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalSignalDSL.g:11223:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
             {
-            // InternalSignalDSL.g:10636:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
-            // InternalSignalDSL.g:10637:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:11223:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:11224:2: ( rule__XShortClosure__ExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
             }
-            // InternalSignalDSL.g:10638:2: ( rule__XShortClosure__ExpressionAssignment_1 )
-            // InternalSignalDSL.g:10638:3: rule__XShortClosure__ExpressionAssignment_1
+            // InternalSignalDSL.g:11225:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalSignalDSL.g:11225:3: rule__XShortClosure__ExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExpressionAssignment_1();
@@ -35901,14 +37825,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0"
-    // InternalSignalDSL.g:10647:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
+    // InternalSignalDSL.g:11234:1: rule__XShortClosure__Group_0__0 : rule__XShortClosure__Group_0__0__Impl ;
     public final void rule__XShortClosure__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10651:1: ( rule__XShortClosure__Group_0__0__Impl )
-            // InternalSignalDSL.g:10652:2: rule__XShortClosure__Group_0__0__Impl
+            // InternalSignalDSL.g:11238:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalSignalDSL.g:11239:2: rule__XShortClosure__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0__0__Impl();
@@ -35934,23 +37858,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0__0__Impl"
-    // InternalSignalDSL.g:10658:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:11245:1: rule__XShortClosure__Group_0__0__Impl : ( ( rule__XShortClosure__Group_0_0__0 ) ) ;
     public final void rule__XShortClosure__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10662:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:10663:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:11249:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:11250:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:10663:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
-            // InternalSignalDSL.g:10664:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:11250:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalSignalDSL.g:11251:2: ( rule__XShortClosure__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:10665:2: ( rule__XShortClosure__Group_0_0__0 )
-            // InternalSignalDSL.g:10665:3: rule__XShortClosure__Group_0_0__0
+            // InternalSignalDSL.g:11252:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalSignalDSL.g:11252:3: rule__XShortClosure__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__0();
@@ -35985,14 +37909,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0"
-    // InternalSignalDSL.g:10674:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
+    // InternalSignalDSL.g:11261:1: rule__XShortClosure__Group_0_0__0 : rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 ;
     public final void rule__XShortClosure__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10678:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
-            // InternalSignalDSL.g:10679:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            // InternalSignalDSL.g:11265:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalSignalDSL.g:11266:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
             {
             pushFollow(FOLLOW_78);
             rule__XShortClosure__Group_0_0__0__Impl();
@@ -36023,23 +37947,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:10686:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11273:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10690:1: ( ( () ) )
-            // InternalSignalDSL.g:10691:1: ( () )
+            // InternalSignalDSL.g:11277:1: ( ( () ) )
+            // InternalSignalDSL.g:11278:1: ( () )
             {
-            // InternalSignalDSL.g:10691:1: ( () )
-            // InternalSignalDSL.g:10692:2: ()
+            // InternalSignalDSL.g:11278:1: ( () )
+            // InternalSignalDSL.g:11279:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:10693:2: ()
-            // InternalSignalDSL.g:10693:3: 
+            // InternalSignalDSL.g:11280:2: ()
+            // InternalSignalDSL.g:11280:3: 
             {
             }
 
@@ -36064,14 +37988,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1"
-    // InternalSignalDSL.g:10701:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
+    // InternalSignalDSL.g:11288:1: rule__XShortClosure__Group_0_0__1 : rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 ;
     public final void rule__XShortClosure__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10705:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
-            // InternalSignalDSL.g:10706:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            // InternalSignalDSL.g:11292:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalSignalDSL.g:11293:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
             {
             pushFollow(FOLLOW_78);
             rule__XShortClosure__Group_0_0__1__Impl();
@@ -36102,31 +38026,31 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:10713:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
+    // InternalSignalDSL.g:11300:1: rule__XShortClosure__Group_0_0__1__Impl : ( ( rule__XShortClosure__Group_0_0_1__0 )? ) ;
     public final void rule__XShortClosure__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10717:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
-            // InternalSignalDSL.g:10718:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalSignalDSL.g:11304:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalSignalDSL.g:11305:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
             {
-            // InternalSignalDSL.g:10718:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
-            // InternalSignalDSL.g:10719:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            // InternalSignalDSL.g:11305:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalSignalDSL.g:11306:2: ( rule__XShortClosure__Group_0_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
             }
-            // InternalSignalDSL.g:10720:2: ( rule__XShortClosure__Group_0_0_1__0 )?
-            int alt96=2;
-            int LA96_0 = input.LA(1);
+            // InternalSignalDSL.g:11307:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            int alt94=2;
+            int LA94_0 = input.LA(1);
 
-            if ( (LA96_0==RULE_ID||LA96_0==31||LA96_0==71) ) {
-                alt96=1;
+            if ( (LA94_0==RULE_ID||LA94_0==31||LA94_0==80) ) {
+                alt94=1;
             }
-            switch (alt96) {
+            switch (alt94) {
                 case 1 :
-                    // InternalSignalDSL.g:10720:3: rule__XShortClosure__Group_0_0_1__0
+                    // InternalSignalDSL.g:11307:3: rule__XShortClosure__Group_0_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XShortClosure__Group_0_0_1__0();
@@ -36164,14 +38088,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2"
-    // InternalSignalDSL.g:10728:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
+    // InternalSignalDSL.g:11315:1: rule__XShortClosure__Group_0_0__2 : rule__XShortClosure__Group_0_0__2__Impl ;
     public final void rule__XShortClosure__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10732:1: ( rule__XShortClosure__Group_0_0__2__Impl )
-            // InternalSignalDSL.g:10733:2: rule__XShortClosure__Group_0_0__2__Impl
+            // InternalSignalDSL.g:11319:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalSignalDSL.g:11320:2: rule__XShortClosure__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0__2__Impl();
@@ -36197,23 +38121,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0__2__Impl"
-    // InternalSignalDSL.g:10739:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
+    // InternalSignalDSL.g:11326:1: rule__XShortClosure__Group_0_0__2__Impl : ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) ;
     public final void rule__XShortClosure__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10743:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
-            // InternalSignalDSL.g:10744:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalSignalDSL.g:11330:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalSignalDSL.g:11331:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
             {
-            // InternalSignalDSL.g:10744:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
-            // InternalSignalDSL.g:10745:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalSignalDSL.g:11331:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalSignalDSL.g:11332:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
             }
-            // InternalSignalDSL.g:10746:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
-            // InternalSignalDSL.g:10746:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
+            // InternalSignalDSL.g:11333:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalSignalDSL.g:11333:3: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2();
@@ -36248,14 +38172,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0"
-    // InternalSignalDSL.g:10755:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
+    // InternalSignalDSL.g:11342:1: rule__XShortClosure__Group_0_0_1__0 : rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 ;
     public final void rule__XShortClosure__Group_0_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10759:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
-            // InternalSignalDSL.g:10760:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            // InternalSignalDSL.g:11346:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalSignalDSL.g:11347:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XShortClosure__Group_0_0_1__0__Impl();
@@ -36286,23 +38210,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__0__Impl"
-    // InternalSignalDSL.g:10767:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
+    // InternalSignalDSL.g:11354:1: rule__XShortClosure__Group_0_0_1__0__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) ;
     public final void rule__XShortClosure__Group_0_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10771:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
-            // InternalSignalDSL.g:10772:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalSignalDSL.g:11358:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalSignalDSL.g:11359:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
             {
-            // InternalSignalDSL.g:10772:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
-            // InternalSignalDSL.g:10773:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalSignalDSL.g:11359:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalSignalDSL.g:11360:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:10774:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
-            // InternalSignalDSL.g:10774:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
+            // InternalSignalDSL.g:11361:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalSignalDSL.g:11361:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0();
@@ -36337,14 +38261,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1"
-    // InternalSignalDSL.g:10782:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
+    // InternalSignalDSL.g:11369:1: rule__XShortClosure__Group_0_0_1__1 : rule__XShortClosure__Group_0_0_1__1__Impl ;
     public final void rule__XShortClosure__Group_0_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10786:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
-            // InternalSignalDSL.g:10787:2: rule__XShortClosure__Group_0_0_1__1__Impl
+            // InternalSignalDSL.g:11373:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalSignalDSL.g:11374:2: rule__XShortClosure__Group_0_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1__1__Impl();
@@ -36370,35 +38294,35 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1__1__Impl"
-    // InternalSignalDSL.g:10793:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:11380:1: rule__XShortClosure__Group_0_0_1__1__Impl : ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) ;
     public final void rule__XShortClosure__Group_0_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10797:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:10798:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalSignalDSL.g:11384:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:11385:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:10798:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
-            // InternalSignalDSL.g:10799:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            // InternalSignalDSL.g:11385:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalSignalDSL.g:11386:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
             }
-            // InternalSignalDSL.g:10800:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
-            loop97:
+            // InternalSignalDSL.g:11387:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            loop95:
             do {
-                int alt97=2;
-                int LA97_0 = input.LA(1);
+                int alt95=2;
+                int LA95_0 = input.LA(1);
 
-                if ( (LA97_0==73) ) {
-                    alt97=1;
+                if ( (LA95_0==82) ) {
+                    alt95=1;
                 }
 
 
-                switch (alt97) {
+                switch (alt95) {
             	case 1 :
-            	    // InternalSignalDSL.g:10800:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    // InternalSignalDSL.g:11387:3: rule__XShortClosure__Group_0_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XShortClosure__Group_0_0_1_1__0();
@@ -36410,7 +38334,7 @@
             	    break;
 
             	default :
-            	    break loop97;
+            	    break loop95;
                 }
             } while (true);
 
@@ -36439,14 +38363,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0"
-    // InternalSignalDSL.g:10809:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
+    // InternalSignalDSL.g:11396:1: rule__XShortClosure__Group_0_0_1_1__0 : rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 ;
     public final void rule__XShortClosure__Group_0_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10813:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
-            // InternalSignalDSL.g:10814:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            // InternalSignalDSL.g:11400:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalSignalDSL.g:11401:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
             {
             pushFollow(FOLLOW_52);
             rule__XShortClosure__Group_0_0_1_1__0__Impl();
@@ -36477,22 +38401,22 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__0__Impl"
-    // InternalSignalDSL.g:10821:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:11408:1: rule__XShortClosure__Group_0_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XShortClosure__Group_0_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10825:1: ( ( ',' ) )
-            // InternalSignalDSL.g:10826:1: ( ',' )
+            // InternalSignalDSL.g:11412:1: ( ( ',' ) )
+            // InternalSignalDSL.g:11413:1: ( ',' )
             {
-            // InternalSignalDSL.g:10826:1: ( ',' )
-            // InternalSignalDSL.g:10827:2: ','
+            // InternalSignalDSL.g:11413:1: ( ',' )
+            // InternalSignalDSL.g:11414:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
             }
@@ -36518,14 +38442,14 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1"
-    // InternalSignalDSL.g:10836:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:11423:1: rule__XShortClosure__Group_0_0_1_1__1 : rule__XShortClosure__Group_0_0_1_1__1__Impl ;
     public final void rule__XShortClosure__Group_0_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10840:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
-            // InternalSignalDSL.g:10841:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
+            // InternalSignalDSL.g:11427:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalSignalDSL.g:11428:2: rule__XShortClosure__Group_0_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__Group_0_0_1_1__1__Impl();
@@ -36551,23 +38475,23 @@
 
 
     // $ANTLR start "rule__XShortClosure__Group_0_0_1_1__1__Impl"
-    // InternalSignalDSL.g:10847:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:11434:1: rule__XShortClosure__Group_0_0_1_1__1__Impl : ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) ;
     public final void rule__XShortClosure__Group_0_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10851:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:10852:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalSignalDSL.g:11438:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:11439:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:10852:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
-            // InternalSignalDSL.g:10853:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalSignalDSL.g:11439:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalSignalDSL.g:11440:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:10854:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
-            // InternalSignalDSL.g:10854:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
+            // InternalSignalDSL.g:11441:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalSignalDSL.g:11441:3: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1();
@@ -36602,14 +38526,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0"
-    // InternalSignalDSL.g:10863:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
+    // InternalSignalDSL.g:11450:1: rule__XParenthesizedExpression__Group__0 : rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 ;
     public final void rule__XParenthesizedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10867:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
-            // InternalSignalDSL.g:10868:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            // InternalSignalDSL.g:11454:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalSignalDSL.g:11455:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
             {
             pushFollow(FOLLOW_35);
             rule__XParenthesizedExpression__Group__0__Impl();
@@ -36640,22 +38564,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__0__Impl"
-    // InternalSignalDSL.g:10875:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:11462:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
     public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10879:1: ( ( '(' ) )
-            // InternalSignalDSL.g:10880:1: ( '(' )
+            // InternalSignalDSL.g:11466:1: ( ( '(' ) )
+            // InternalSignalDSL.g:11467:1: ( '(' )
             {
-            // InternalSignalDSL.g:10880:1: ( '(' )
-            // InternalSignalDSL.g:10881:2: '('
+            // InternalSignalDSL.g:11467:1: ( '(' )
+            // InternalSignalDSL.g:11468:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
             }
@@ -36681,14 +38605,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1"
-    // InternalSignalDSL.g:10890:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
+    // InternalSignalDSL.g:11477:1: rule__XParenthesizedExpression__Group__1 : rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 ;
     public final void rule__XParenthesizedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10894:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
-            // InternalSignalDSL.g:10895:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            // InternalSignalDSL.g:11481:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalSignalDSL.g:11482:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
             {
             pushFollow(FOLLOW_80);
             rule__XParenthesizedExpression__Group__1__Impl();
@@ -36719,17 +38643,17 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__1__Impl"
-    // InternalSignalDSL.g:10902:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:11489:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
     public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10906:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:10907:1: ( ruleXExpression )
+            // InternalSignalDSL.g:11493:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:11494:1: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:10907:1: ( ruleXExpression )
-            // InternalSignalDSL.g:10908:2: ruleXExpression
+            // InternalSignalDSL.g:11494:1: ( ruleXExpression )
+            // InternalSignalDSL.g:11495:2: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getXExpressionParserRuleCall_1()); 
@@ -36764,14 +38688,14 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2"
-    // InternalSignalDSL.g:10917:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    // InternalSignalDSL.g:11504:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
     public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10921:1: ( rule__XParenthesizedExpression__Group__2__Impl )
-            // InternalSignalDSL.g:10922:2: rule__XParenthesizedExpression__Group__2__Impl
+            // InternalSignalDSL.g:11508:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalSignalDSL.g:11509:2: rule__XParenthesizedExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XParenthesizedExpression__Group__2__Impl();
@@ -36797,22 +38721,22 @@
 
 
     // $ANTLR start "rule__XParenthesizedExpression__Group__2__Impl"
-    // InternalSignalDSL.g:10928:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:11515:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10932:1: ( ( ')' ) )
-            // InternalSignalDSL.g:10933:1: ( ')' )
+            // InternalSignalDSL.g:11519:1: ( ( ')' ) )
+            // InternalSignalDSL.g:11520:1: ( ')' )
             {
-            // InternalSignalDSL.g:10933:1: ( ')' )
-            // InternalSignalDSL.g:10934:2: ')'
+            // InternalSignalDSL.g:11520:1: ( ')' )
+            // InternalSignalDSL.g:11521:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -36838,14 +38762,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0"
-    // InternalSignalDSL.g:10944:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
+    // InternalSignalDSL.g:11531:1: rule__XIfExpression__Group__0 : rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 ;
     public final void rule__XIfExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10948:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
-            // InternalSignalDSL.g:10949:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            // InternalSignalDSL.g:11535:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalSignalDSL.g:11536:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
             {
             pushFollow(FOLLOW_81);
             rule__XIfExpression__Group__0__Impl();
@@ -36876,23 +38800,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__0__Impl"
-    // InternalSignalDSL.g:10956:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11543:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
     public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10960:1: ( ( () ) )
-            // InternalSignalDSL.g:10961:1: ( () )
+            // InternalSignalDSL.g:11547:1: ( ( () ) )
+            // InternalSignalDSL.g:11548:1: ( () )
             {
-            // InternalSignalDSL.g:10961:1: ( () )
-            // InternalSignalDSL.g:10962:2: ()
+            // InternalSignalDSL.g:11548:1: ( () )
+            // InternalSignalDSL.g:11549:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:10963:2: ()
-            // InternalSignalDSL.g:10963:3: 
+            // InternalSignalDSL.g:11550:2: ()
+            // InternalSignalDSL.g:11550:3: 
             {
             }
 
@@ -36917,14 +38841,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1"
-    // InternalSignalDSL.g:10971:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
+    // InternalSignalDSL.g:11558:1: rule__XIfExpression__Group__1 : rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 ;
     public final void rule__XIfExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10975:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
-            // InternalSignalDSL.g:10976:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            // InternalSignalDSL.g:11562:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalSignalDSL.g:11563:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
             {
             pushFollow(FOLLOW_31);
             rule__XIfExpression__Group__1__Impl();
@@ -36955,22 +38879,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__1__Impl"
-    // InternalSignalDSL.g:10983:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    // InternalSignalDSL.g:11570:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
     public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:10987:1: ( ( 'if' ) )
-            // InternalSignalDSL.g:10988:1: ( 'if' )
+            // InternalSignalDSL.g:11574:1: ( ( 'if' ) )
+            // InternalSignalDSL.g:11575:1: ( 'if' )
             {
-            // InternalSignalDSL.g:10988:1: ( 'if' )
-            // InternalSignalDSL.g:10989:2: 'if'
+            // InternalSignalDSL.g:11575:1: ( 'if' )
+            // InternalSignalDSL.g:11576:2: 'if'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
-            match(input,79,FOLLOW_2); if (state.failed) return ;
+            match(input,88,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
             }
@@ -36996,14 +38920,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2"
-    // InternalSignalDSL.g:10998:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
+    // InternalSignalDSL.g:11585:1: rule__XIfExpression__Group__2 : rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 ;
     public final void rule__XIfExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11002:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
-            // InternalSignalDSL.g:11003:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            // InternalSignalDSL.g:11589:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalSignalDSL.g:11590:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
             {
             pushFollow(FOLLOW_35);
             rule__XIfExpression__Group__2__Impl();
@@ -37034,22 +38958,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__2__Impl"
-    // InternalSignalDSL.g:11010:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:11597:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11014:1: ( ( '(' ) )
-            // InternalSignalDSL.g:11015:1: ( '(' )
+            // InternalSignalDSL.g:11601:1: ( ( '(' ) )
+            // InternalSignalDSL.g:11602:1: ( '(' )
             {
-            // InternalSignalDSL.g:11015:1: ( '(' )
-            // InternalSignalDSL.g:11016:2: '('
+            // InternalSignalDSL.g:11602:1: ( '(' )
+            // InternalSignalDSL.g:11603:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -37075,14 +38999,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3"
-    // InternalSignalDSL.g:11025:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
+    // InternalSignalDSL.g:11612:1: rule__XIfExpression__Group__3 : rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 ;
     public final void rule__XIfExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11029:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
-            // InternalSignalDSL.g:11030:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            // InternalSignalDSL.g:11616:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalSignalDSL.g:11617:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
             {
             pushFollow(FOLLOW_80);
             rule__XIfExpression__Group__3__Impl();
@@ -37113,23 +39037,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__3__Impl"
-    // InternalSignalDSL.g:11037:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    // InternalSignalDSL.g:11624:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
     public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11041:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
-            // InternalSignalDSL.g:11042:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalSignalDSL.g:11628:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalSignalDSL.g:11629:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
             {
-            // InternalSignalDSL.g:11042:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
-            // InternalSignalDSL.g:11043:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalSignalDSL.g:11629:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalSignalDSL.g:11630:2: ( rule__XIfExpression__IfAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
             }
-            // InternalSignalDSL.g:11044:2: ( rule__XIfExpression__IfAssignment_3 )
-            // InternalSignalDSL.g:11044:3: rule__XIfExpression__IfAssignment_3
+            // InternalSignalDSL.g:11631:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalSignalDSL.g:11631:3: rule__XIfExpression__IfAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__IfAssignment_3();
@@ -37164,14 +39088,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4"
-    // InternalSignalDSL.g:11052:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
+    // InternalSignalDSL.g:11639:1: rule__XIfExpression__Group__4 : rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 ;
     public final void rule__XIfExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11056:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
-            // InternalSignalDSL.g:11057:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            // InternalSignalDSL.g:11643:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalSignalDSL.g:11644:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
             {
             pushFollow(FOLLOW_35);
             rule__XIfExpression__Group__4__Impl();
@@ -37202,22 +39126,22 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__4__Impl"
-    // InternalSignalDSL.g:11064:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:11651:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11068:1: ( ( ')' ) )
-            // InternalSignalDSL.g:11069:1: ( ')' )
+            // InternalSignalDSL.g:11655:1: ( ( ')' ) )
+            // InternalSignalDSL.g:11656:1: ( ')' )
             {
-            // InternalSignalDSL.g:11069:1: ( ')' )
-            // InternalSignalDSL.g:11070:2: ')'
+            // InternalSignalDSL.g:11656:1: ( ')' )
+            // InternalSignalDSL.g:11657:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -37243,14 +39167,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5"
-    // InternalSignalDSL.g:11079:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
+    // InternalSignalDSL.g:11666:1: rule__XIfExpression__Group__5 : rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 ;
     public final void rule__XIfExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11083:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
-            // InternalSignalDSL.g:11084:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            // InternalSignalDSL.g:11670:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalSignalDSL.g:11671:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
             {
             pushFollow(FOLLOW_82);
             rule__XIfExpression__Group__5__Impl();
@@ -37281,23 +39205,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__5__Impl"
-    // InternalSignalDSL.g:11091:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    // InternalSignalDSL.g:11678:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
     public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11095:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
-            // InternalSignalDSL.g:11096:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalSignalDSL.g:11682:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalSignalDSL.g:11683:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
             {
-            // InternalSignalDSL.g:11096:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
-            // InternalSignalDSL.g:11097:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalSignalDSL.g:11683:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalSignalDSL.g:11684:2: ( rule__XIfExpression__ThenAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
             }
-            // InternalSignalDSL.g:11098:2: ( rule__XIfExpression__ThenAssignment_5 )
-            // InternalSignalDSL.g:11098:3: rule__XIfExpression__ThenAssignment_5
+            // InternalSignalDSL.g:11685:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalSignalDSL.g:11685:3: rule__XIfExpression__ThenAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ThenAssignment_5();
@@ -37332,14 +39256,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6"
-    // InternalSignalDSL.g:11106:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    // InternalSignalDSL.g:11693:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
     public final void rule__XIfExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11110:1: ( rule__XIfExpression__Group__6__Impl )
-            // InternalSignalDSL.g:11111:2: rule__XIfExpression__Group__6__Impl
+            // InternalSignalDSL.g:11697:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalSignalDSL.g:11698:2: rule__XIfExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group__6__Impl();
@@ -37365,35 +39289,35 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group__6__Impl"
-    // InternalSignalDSL.g:11117:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
+    // InternalSignalDSL.g:11704:1: rule__XIfExpression__Group__6__Impl : ( ( rule__XIfExpression__Group_6__0 )? ) ;
     public final void rule__XIfExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11121:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
-            // InternalSignalDSL.g:11122:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalSignalDSL.g:11708:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalSignalDSL.g:11709:1: ( ( rule__XIfExpression__Group_6__0 )? )
             {
-            // InternalSignalDSL.g:11122:1: ( ( rule__XIfExpression__Group_6__0 )? )
-            // InternalSignalDSL.g:11123:2: ( rule__XIfExpression__Group_6__0 )?
+            // InternalSignalDSL.g:11709:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalSignalDSL.g:11710:2: ( rule__XIfExpression__Group_6__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
             }
-            // InternalSignalDSL.g:11124:2: ( rule__XIfExpression__Group_6__0 )?
-            int alt98=2;
-            int LA98_0 = input.LA(1);
+            // InternalSignalDSL.g:11711:2: ( rule__XIfExpression__Group_6__0 )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
 
-            if ( (LA98_0==80) ) {
-                int LA98_1 = input.LA(2);
+            if ( (LA96_0==89) ) {
+                int LA96_1 = input.LA(2);
 
-                if ( (synpred142_InternalSignalDSL()) ) {
-                    alt98=1;
+                if ( (synpred148_InternalSignalDSL()) ) {
+                    alt96=1;
                 }
             }
-            switch (alt98) {
+            switch (alt96) {
                 case 1 :
-                    // InternalSignalDSL.g:11124:3: rule__XIfExpression__Group_6__0
+                    // InternalSignalDSL.g:11711:3: rule__XIfExpression__Group_6__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XIfExpression__Group_6__0();
@@ -37431,14 +39355,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0"
-    // InternalSignalDSL.g:11133:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
+    // InternalSignalDSL.g:11720:1: rule__XIfExpression__Group_6__0 : rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 ;
     public final void rule__XIfExpression__Group_6__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11137:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
-            // InternalSignalDSL.g:11138:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            // InternalSignalDSL.g:11724:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalSignalDSL.g:11725:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
             {
             pushFollow(FOLLOW_35);
             rule__XIfExpression__Group_6__0__Impl();
@@ -37469,25 +39393,25 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__0__Impl"
-    // InternalSignalDSL.g:11145:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    // InternalSignalDSL.g:11732:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
     public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11149:1: ( ( ( 'else' ) ) )
-            // InternalSignalDSL.g:11150:1: ( ( 'else' ) )
+            // InternalSignalDSL.g:11736:1: ( ( ( 'else' ) ) )
+            // InternalSignalDSL.g:11737:1: ( ( 'else' ) )
             {
-            // InternalSignalDSL.g:11150:1: ( ( 'else' ) )
-            // InternalSignalDSL.g:11151:2: ( 'else' )
+            // InternalSignalDSL.g:11737:1: ( ( 'else' ) )
+            // InternalSignalDSL.g:11738:2: ( 'else' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
             }
-            // InternalSignalDSL.g:11152:2: ( 'else' )
-            // InternalSignalDSL.g:11152:3: 'else'
+            // InternalSignalDSL.g:11739:2: ( 'else' )
+            // InternalSignalDSL.g:11739:3: 'else'
             {
-            match(input,80,FOLLOW_2); if (state.failed) return ;
+            match(input,89,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -37516,14 +39440,14 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1"
-    // InternalSignalDSL.g:11160:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
+    // InternalSignalDSL.g:11747:1: rule__XIfExpression__Group_6__1 : rule__XIfExpression__Group_6__1__Impl ;
     public final void rule__XIfExpression__Group_6__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11164:1: ( rule__XIfExpression__Group_6__1__Impl )
-            // InternalSignalDSL.g:11165:2: rule__XIfExpression__Group_6__1__Impl
+            // InternalSignalDSL.g:11751:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalSignalDSL.g:11752:2: rule__XIfExpression__Group_6__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__Group_6__1__Impl();
@@ -37549,23 +39473,23 @@
 
 
     // $ANTLR start "rule__XIfExpression__Group_6__1__Impl"
-    // InternalSignalDSL.g:11171:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
+    // InternalSignalDSL.g:11758:1: rule__XIfExpression__Group_6__1__Impl : ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) ;
     public final void rule__XIfExpression__Group_6__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11175:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
-            // InternalSignalDSL.g:11176:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalSignalDSL.g:11762:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalSignalDSL.g:11763:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
             {
-            // InternalSignalDSL.g:11176:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
-            // InternalSignalDSL.g:11177:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalSignalDSL.g:11763:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalSignalDSL.g:11764:2: ( rule__XIfExpression__ElseAssignment_6_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
             }
-            // InternalSignalDSL.g:11178:2: ( rule__XIfExpression__ElseAssignment_6_1 )
-            // InternalSignalDSL.g:11178:3: rule__XIfExpression__ElseAssignment_6_1
+            // InternalSignalDSL.g:11765:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalSignalDSL.g:11765:3: rule__XIfExpression__ElseAssignment_6_1
             {
             pushFollow(FOLLOW_2);
             rule__XIfExpression__ElseAssignment_6_1();
@@ -37600,14 +39524,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0"
-    // InternalSignalDSL.g:11187:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
+    // InternalSignalDSL.g:11774:1: rule__XSwitchExpression__Group__0 : rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 ;
     public final void rule__XSwitchExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11191:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
-            // InternalSignalDSL.g:11192:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            // InternalSignalDSL.g:11778:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalSignalDSL.g:11779:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
             {
             pushFollow(FOLLOW_83);
             rule__XSwitchExpression__Group__0__Impl();
@@ -37638,23 +39562,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__0__Impl"
-    // InternalSignalDSL.g:11199:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:11786:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
     public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11203:1: ( ( () ) )
-            // InternalSignalDSL.g:11204:1: ( () )
+            // InternalSignalDSL.g:11790:1: ( ( () ) )
+            // InternalSignalDSL.g:11791:1: ( () )
             {
-            // InternalSignalDSL.g:11204:1: ( () )
-            // InternalSignalDSL.g:11205:2: ()
+            // InternalSignalDSL.g:11791:1: ( () )
+            // InternalSignalDSL.g:11792:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:11206:2: ()
-            // InternalSignalDSL.g:11206:3: 
+            // InternalSignalDSL.g:11793:2: ()
+            // InternalSignalDSL.g:11793:3: 
             {
             }
 
@@ -37679,14 +39603,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1"
-    // InternalSignalDSL.g:11214:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
+    // InternalSignalDSL.g:11801:1: rule__XSwitchExpression__Group__1 : rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 ;
     public final void rule__XSwitchExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11218:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
-            // InternalSignalDSL.g:11219:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            // InternalSignalDSL.g:11805:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalSignalDSL.g:11806:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
             {
             pushFollow(FOLLOW_84);
             rule__XSwitchExpression__Group__1__Impl();
@@ -37717,22 +39641,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__1__Impl"
-    // InternalSignalDSL.g:11226:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    // InternalSignalDSL.g:11813:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
     public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11230:1: ( ( 'switch' ) )
-            // InternalSignalDSL.g:11231:1: ( 'switch' )
+            // InternalSignalDSL.g:11817:1: ( ( 'switch' ) )
+            // InternalSignalDSL.g:11818:1: ( 'switch' )
             {
-            // InternalSignalDSL.g:11231:1: ( 'switch' )
-            // InternalSignalDSL.g:11232:2: 'switch'
+            // InternalSignalDSL.g:11818:1: ( 'switch' )
+            // InternalSignalDSL.g:11819:2: 'switch'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
-            match(input,81,FOLLOW_2); if (state.failed) return ;
+            match(input,90,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
             }
@@ -37758,16 +39682,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2"
-    // InternalSignalDSL.g:11241:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
+    // InternalSignalDSL.g:11828:1: rule__XSwitchExpression__Group__2 : rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 ;
     public final void rule__XSwitchExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11245:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
-            // InternalSignalDSL.g:11246:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            // InternalSignalDSL.g:11832:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalSignalDSL.g:11833:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
             {
-            pushFollow(FOLLOW_8);
+            pushFollow(FOLLOW_7);
             rule__XSwitchExpression__Group__2__Impl();
 
             state._fsp--;
@@ -37796,23 +39720,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__2__Impl"
-    // InternalSignalDSL.g:11253:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    // InternalSignalDSL.g:11840:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
     public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11257:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
-            // InternalSignalDSL.g:11258:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalSignalDSL.g:11844:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalSignalDSL.g:11845:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
             {
-            // InternalSignalDSL.g:11258:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
-            // InternalSignalDSL.g:11259:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalSignalDSL.g:11845:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalSignalDSL.g:11846:2: ( rule__XSwitchExpression__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:11260:2: ( rule__XSwitchExpression__Alternatives_2 )
-            // InternalSignalDSL.g:11260:3: rule__XSwitchExpression__Alternatives_2
+            // InternalSignalDSL.g:11847:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalSignalDSL.g:11847:3: rule__XSwitchExpression__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Alternatives_2();
@@ -37847,14 +39771,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3"
-    // InternalSignalDSL.g:11268:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
+    // InternalSignalDSL.g:11855:1: rule__XSwitchExpression__Group__3 : rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 ;
     public final void rule__XSwitchExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11272:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
-            // InternalSignalDSL.g:11273:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            // InternalSignalDSL.g:11859:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalSignalDSL.g:11860:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
             {
             pushFollow(FOLLOW_85);
             rule__XSwitchExpression__Group__3__Impl();
@@ -37885,22 +39809,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__3__Impl"
-    // InternalSignalDSL.g:11280:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:11867:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
     public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11284:1: ( ( '{' ) )
-            // InternalSignalDSL.g:11285:1: ( '{' )
+            // InternalSignalDSL.g:11871:1: ( ( '{' ) )
+            // InternalSignalDSL.g:11872:1: ( '{' )
             {
-            // InternalSignalDSL.g:11285:1: ( '{' )
-            // InternalSignalDSL.g:11286:2: '{'
+            // InternalSignalDSL.g:11872:1: ( '{' )
+            // InternalSignalDSL.g:11873:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
             }
@@ -37926,14 +39850,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4"
-    // InternalSignalDSL.g:11295:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
+    // InternalSignalDSL.g:11882:1: rule__XSwitchExpression__Group__4 : rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 ;
     public final void rule__XSwitchExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11299:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
-            // InternalSignalDSL.g:11300:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            // InternalSignalDSL.g:11886:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalSignalDSL.g:11887:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
             {
             pushFollow(FOLLOW_85);
             rule__XSwitchExpression__Group__4__Impl();
@@ -37964,35 +39888,35 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__4__Impl"
-    // InternalSignalDSL.g:11307:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    // InternalSignalDSL.g:11894:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
     public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11311:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
-            // InternalSignalDSL.g:11312:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalSignalDSL.g:11898:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalSignalDSL.g:11899:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
             {
-            // InternalSignalDSL.g:11312:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
-            // InternalSignalDSL.g:11313:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            // InternalSignalDSL.g:11899:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalSignalDSL.g:11900:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
             }
-            // InternalSignalDSL.g:11314:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
-            loop99:
+            // InternalSignalDSL.g:11901:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            loop97:
             do {
-                int alt99=2;
-                int LA99_0 = input.LA(1);
+                int alt97=2;
+                int LA97_0 = input.LA(1);
 
-                if ( (LA99_0==RULE_ID||LA99_0==31||LA99_0==71||LA99_0==73||LA99_0==82||LA99_0==84) ) {
-                    alt99=1;
+                if ( (LA97_0==RULE_ID||LA97_0==31||LA97_0==73||LA97_0==80||LA97_0==82||LA97_0==92) ) {
+                    alt97=1;
                 }
 
 
-                switch (alt99) {
+                switch (alt97) {
             	case 1 :
-            	    // InternalSignalDSL.g:11314:3: rule__XSwitchExpression__CasesAssignment_4
+            	    // InternalSignalDSL.g:11901:3: rule__XSwitchExpression__CasesAssignment_4
             	    {
             	    pushFollow(FOLLOW_86);
             	    rule__XSwitchExpression__CasesAssignment_4();
@@ -38004,7 +39928,7 @@
             	    break;
 
             	default :
-            	    break loop99;
+            	    break loop97;
                 }
             } while (true);
 
@@ -38033,14 +39957,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5"
-    // InternalSignalDSL.g:11322:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
+    // InternalSignalDSL.g:11909:1: rule__XSwitchExpression__Group__5 : rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 ;
     public final void rule__XSwitchExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11326:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
-            // InternalSignalDSL.g:11327:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            // InternalSignalDSL.g:11913:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalSignalDSL.g:11914:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
             {
             pushFollow(FOLLOW_85);
             rule__XSwitchExpression__Group__5__Impl();
@@ -38071,31 +39995,31 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__5__Impl"
-    // InternalSignalDSL.g:11334:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
+    // InternalSignalDSL.g:11921:1: rule__XSwitchExpression__Group__5__Impl : ( ( rule__XSwitchExpression__Group_5__0 )? ) ;
     public final void rule__XSwitchExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11338:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
-            // InternalSignalDSL.g:11339:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalSignalDSL.g:11925:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalSignalDSL.g:11926:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
             {
-            // InternalSignalDSL.g:11339:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
-            // InternalSignalDSL.g:11340:2: ( rule__XSwitchExpression__Group_5__0 )?
+            // InternalSignalDSL.g:11926:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalSignalDSL.g:11927:2: ( rule__XSwitchExpression__Group_5__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
             }
-            // InternalSignalDSL.g:11341:2: ( rule__XSwitchExpression__Group_5__0 )?
-            int alt100=2;
-            int LA100_0 = input.LA(1);
+            // InternalSignalDSL.g:11928:2: ( rule__XSwitchExpression__Group_5__0 )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
 
-            if ( (LA100_0==83) ) {
-                alt100=1;
+            if ( (LA98_0==91) ) {
+                alt98=1;
             }
-            switch (alt100) {
+            switch (alt98) {
                 case 1 :
-                    // InternalSignalDSL.g:11341:3: rule__XSwitchExpression__Group_5__0
+                    // InternalSignalDSL.g:11928:3: rule__XSwitchExpression__Group_5__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_5__0();
@@ -38133,14 +40057,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6"
-    // InternalSignalDSL.g:11349:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    // InternalSignalDSL.g:11936:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
     public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11353:1: ( rule__XSwitchExpression__Group__6__Impl )
-            // InternalSignalDSL.g:11354:2: rule__XSwitchExpression__Group__6__Impl
+            // InternalSignalDSL.g:11940:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalSignalDSL.g:11941:2: rule__XSwitchExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group__6__Impl();
@@ -38166,22 +40090,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group__6__Impl"
-    // InternalSignalDSL.g:11360:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:11947:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
     public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11364:1: ( ( '}' ) )
-            // InternalSignalDSL.g:11365:1: ( '}' )
+            // InternalSignalDSL.g:11951:1: ( ( '}' ) )
+            // InternalSignalDSL.g:11952:1: ( '}' )
             {
-            // InternalSignalDSL.g:11365:1: ( '}' )
-            // InternalSignalDSL.g:11366:2: '}'
+            // InternalSignalDSL.g:11952:1: ( '}' )
+            // InternalSignalDSL.g:11953:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
             }
-            match(input,61,FOLLOW_2); if (state.failed) return ;
+            match(input,64,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
             }
@@ -38207,14 +40131,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0"
-    // InternalSignalDSL.g:11376:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
+    // InternalSignalDSL.g:11963:1: rule__XSwitchExpression__Group_2_0__0 : rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 ;
     public final void rule__XSwitchExpression__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11380:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
-            // InternalSignalDSL.g:11381:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            // InternalSignalDSL.g:11967:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalSignalDSL.g:11968:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
             {
             pushFollow(FOLLOW_35);
             rule__XSwitchExpression__Group_2_0__0__Impl();
@@ -38245,23 +40169,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:11388:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
+    // InternalSignalDSL.g:11975:1: rule__XSwitchExpression__Group_2_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11392:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
-            // InternalSignalDSL.g:11393:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:11979:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalSignalDSL.g:11980:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
             {
-            // InternalSignalDSL.g:11393:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
-            // InternalSignalDSL.g:11394:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalSignalDSL.g:11980:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:11981:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
             }
-            // InternalSignalDSL.g:11395:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
-            // InternalSignalDSL.g:11395:3: rule__XSwitchExpression__Group_2_0_0__0
+            // InternalSignalDSL.g:11982:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalSignalDSL.g:11982:3: rule__XSwitchExpression__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0();
@@ -38296,14 +40220,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1"
-    // InternalSignalDSL.g:11403:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
+    // InternalSignalDSL.g:11990:1: rule__XSwitchExpression__Group_2_0__1 : rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 ;
     public final void rule__XSwitchExpression__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11407:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
-            // InternalSignalDSL.g:11408:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            // InternalSignalDSL.g:11994:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalSignalDSL.g:11995:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
             {
             pushFollow(FOLLOW_80);
             rule__XSwitchExpression__Group_2_0__1__Impl();
@@ -38334,23 +40258,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__1__Impl"
-    // InternalSignalDSL.g:11415:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
+    // InternalSignalDSL.g:12002:1: rule__XSwitchExpression__Group_2_0__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11419:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
-            // InternalSignalDSL.g:11420:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalSignalDSL.g:12006:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalSignalDSL.g:12007:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
             {
-            // InternalSignalDSL.g:11420:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
-            // InternalSignalDSL.g:11421:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalSignalDSL.g:12007:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalSignalDSL.g:12008:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
             }
-            // InternalSignalDSL.g:11422:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
-            // InternalSignalDSL.g:11422:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
+            // InternalSignalDSL.g:12009:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalSignalDSL.g:12009:3: rule__XSwitchExpression__SwitchAssignment_2_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_0_1();
@@ -38385,14 +40309,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2"
-    // InternalSignalDSL.g:11430:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
+    // InternalSignalDSL.g:12017:1: rule__XSwitchExpression__Group_2_0__2 : rule__XSwitchExpression__Group_2_0__2__Impl ;
     public final void rule__XSwitchExpression__Group_2_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11434:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
-            // InternalSignalDSL.g:11435:2: rule__XSwitchExpression__Group_2_0__2__Impl
+            // InternalSignalDSL.g:12021:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalSignalDSL.g:12022:2: rule__XSwitchExpression__Group_2_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0__2__Impl();
@@ -38418,22 +40342,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0__2__Impl"
-    // InternalSignalDSL.g:11441:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:12028:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
     public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11445:1: ( ( ')' ) )
-            // InternalSignalDSL.g:11446:1: ( ')' )
+            // InternalSignalDSL.g:12032:1: ( ( ')' ) )
+            // InternalSignalDSL.g:12033:1: ( ')' )
             {
-            // InternalSignalDSL.g:11446:1: ( ')' )
-            // InternalSignalDSL.g:11447:2: ')'
+            // InternalSignalDSL.g:12033:1: ( ')' )
+            // InternalSignalDSL.g:12034:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
             }
@@ -38459,14 +40383,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0"
-    // InternalSignalDSL.g:11457:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
+    // InternalSignalDSL.g:12044:1: rule__XSwitchExpression__Group_2_0_0__0 : rule__XSwitchExpression__Group_2_0_0__0__Impl ;
     public final void rule__XSwitchExpression__Group_2_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11461:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
-            // InternalSignalDSL.g:11462:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
+            // InternalSignalDSL.g:12048:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalSignalDSL.g:12049:2: rule__XSwitchExpression__Group_2_0_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0__0__Impl();
@@ -38492,23 +40416,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0__0__Impl"
-    // InternalSignalDSL.g:11468:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
+    // InternalSignalDSL.g:12055:1: rule__XSwitchExpression__Group_2_0_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11472:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
-            // InternalSignalDSL.g:11473:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalSignalDSL.g:12059:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalSignalDSL.g:12060:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
             {
-            // InternalSignalDSL.g:11473:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
-            // InternalSignalDSL.g:11474:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalSignalDSL.g:12060:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalSignalDSL.g:12061:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
             }
-            // InternalSignalDSL.g:11475:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
-            // InternalSignalDSL.g:11475:3: rule__XSwitchExpression__Group_2_0_0_0__0
+            // InternalSignalDSL.g:12062:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalSignalDSL.g:12062:3: rule__XSwitchExpression__Group_2_0_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__0();
@@ -38543,14 +40467,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0"
-    // InternalSignalDSL.g:11484:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
+    // InternalSignalDSL.g:12071:1: rule__XSwitchExpression__Group_2_0_0_0__0 : rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11488:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
-            // InternalSignalDSL.g:11489:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            // InternalSignalDSL.g:12075:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalSignalDSL.g:12076:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
             {
             pushFollow(FOLLOW_52);
             rule__XSwitchExpression__Group_2_0_0_0__0__Impl();
@@ -38581,22 +40505,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__0__Impl"
-    // InternalSignalDSL.g:11496:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:12083:1: rule__XSwitchExpression__Group_2_0_0_0__0__Impl : ( '(' ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11500:1: ( ( '(' ) )
-            // InternalSignalDSL.g:11501:1: ( '(' )
+            // InternalSignalDSL.g:12087:1: ( ( '(' ) )
+            // InternalSignalDSL.g:12088:1: ( '(' )
             {
-            // InternalSignalDSL.g:11501:1: ( '(' )
-            // InternalSignalDSL.g:11502:2: '('
+            // InternalSignalDSL.g:12088:1: ( '(' )
+            // InternalSignalDSL.g:12089:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
             }
@@ -38622,16 +40546,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1"
-    // InternalSignalDSL.g:11511:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
+    // InternalSignalDSL.g:12098:1: rule__XSwitchExpression__Group_2_0_0_0__1 : rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11515:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
-            // InternalSignalDSL.g:11516:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            // InternalSignalDSL.g:12102:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalSignalDSL.g:12103:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_21);
             rule__XSwitchExpression__Group_2_0_0_0__1__Impl();
 
             state._fsp--;
@@ -38660,23 +40584,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__1__Impl"
-    // InternalSignalDSL.g:11523:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
+    // InternalSignalDSL.g:12110:1: rule__XSwitchExpression__Group_2_0_0_0__1__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11527:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
-            // InternalSignalDSL.g:11528:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalSignalDSL.g:12114:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalSignalDSL.g:12115:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
             {
-            // InternalSignalDSL.g:11528:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
-            // InternalSignalDSL.g:11529:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalSignalDSL.g:12115:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalSignalDSL.g:12116:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
             }
-            // InternalSignalDSL.g:11530:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
-            // InternalSignalDSL.g:11530:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
+            // InternalSignalDSL.g:12117:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalSignalDSL.g:12117:3: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1();
@@ -38711,14 +40635,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2"
-    // InternalSignalDSL.g:11538:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
+    // InternalSignalDSL.g:12125:1: rule__XSwitchExpression__Group_2_0_0_0__2 : rule__XSwitchExpression__Group_2_0_0_0__2__Impl ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11542:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
-            // InternalSignalDSL.g:11543:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
+            // InternalSignalDSL.g:12129:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalSignalDSL.g:12130:2: rule__XSwitchExpression__Group_2_0_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_0_0_0__2__Impl();
@@ -38744,22 +40668,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_0_0_0__2__Impl"
-    // InternalSignalDSL.g:11549:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12136:1: rule__XSwitchExpression__Group_2_0_0_0__2__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_2_0_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11553:1: ( ( ':' ) )
-            // InternalSignalDSL.g:11554:1: ( ':' )
+            // InternalSignalDSL.g:12140:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12141:1: ( ':' )
             {
-            // InternalSignalDSL.g:11554:1: ( ':' )
-            // InternalSignalDSL.g:11555:2: ':'
+            // InternalSignalDSL.g:12141:1: ( ':' )
+            // InternalSignalDSL.g:12142:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
             }
@@ -38785,14 +40709,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0"
-    // InternalSignalDSL.g:11565:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
+    // InternalSignalDSL.g:12152:1: rule__XSwitchExpression__Group_2_1__0 : rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 ;
     public final void rule__XSwitchExpression__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11569:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
-            // InternalSignalDSL.g:11570:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            // InternalSignalDSL.g:12156:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalSignalDSL.g:12157:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
             {
             pushFollow(FOLLOW_84);
             rule__XSwitchExpression__Group_2_1__0__Impl();
@@ -38823,27 +40747,27 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__0__Impl"
-    // InternalSignalDSL.g:11577:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
+    // InternalSignalDSL.g:12164:1: rule__XSwitchExpression__Group_2_1__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) ;
     public final void rule__XSwitchExpression__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11581:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
-            // InternalSignalDSL.g:11582:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalSignalDSL.g:12168:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalSignalDSL.g:12169:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
             {
-            // InternalSignalDSL.g:11582:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
-            // InternalSignalDSL.g:11583:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            // InternalSignalDSL.g:12169:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalSignalDSL.g:12170:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
             }
-            // InternalSignalDSL.g:11584:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
-            int alt101=2;
-            alt101 = dfa101.predict(input);
-            switch (alt101) {
+            // InternalSignalDSL.g:12171:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            int alt99=2;
+            alt99 = dfa99.predict(input);
+            switch (alt99) {
                 case 1 :
-                    // InternalSignalDSL.g:11584:3: rule__XSwitchExpression__Group_2_1_0__0
+                    // InternalSignalDSL.g:12171:3: rule__XSwitchExpression__Group_2_1_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XSwitchExpression__Group_2_1_0__0();
@@ -38881,14 +40805,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1"
-    // InternalSignalDSL.g:11592:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
+    // InternalSignalDSL.g:12179:1: rule__XSwitchExpression__Group_2_1__1 : rule__XSwitchExpression__Group_2_1__1__Impl ;
     public final void rule__XSwitchExpression__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11596:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
-            // InternalSignalDSL.g:11597:2: rule__XSwitchExpression__Group_2_1__1__Impl
+            // InternalSignalDSL.g:12183:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalSignalDSL.g:12184:2: rule__XSwitchExpression__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1__1__Impl();
@@ -38914,23 +40838,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1__1__Impl"
-    // InternalSignalDSL.g:11603:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
+    // InternalSignalDSL.g:12190:1: rule__XSwitchExpression__Group_2_1__1__Impl : ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11607:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
-            // InternalSignalDSL.g:11608:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalSignalDSL.g:12194:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalSignalDSL.g:12195:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
             {
-            // InternalSignalDSL.g:11608:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
-            // InternalSignalDSL.g:11609:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalSignalDSL.g:12195:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalSignalDSL.g:12196:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
             }
-            // InternalSignalDSL.g:11610:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
-            // InternalSignalDSL.g:11610:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
+            // InternalSignalDSL.g:12197:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalSignalDSL.g:12197:3: rule__XSwitchExpression__SwitchAssignment_2_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__SwitchAssignment_2_1_1();
@@ -38965,14 +40889,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0"
-    // InternalSignalDSL.g:11619:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
+    // InternalSignalDSL.g:12206:1: rule__XSwitchExpression__Group_2_1_0__0 : rule__XSwitchExpression__Group_2_1_0__0__Impl ;
     public final void rule__XSwitchExpression__Group_2_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11623:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
-            // InternalSignalDSL.g:11624:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
+            // InternalSignalDSL.g:12210:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalSignalDSL.g:12211:2: rule__XSwitchExpression__Group_2_1_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0__0__Impl();
@@ -38998,23 +40922,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0__0__Impl"
-    // InternalSignalDSL.g:11630:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
+    // InternalSignalDSL.g:12217:1: rule__XSwitchExpression__Group_2_1_0__0__Impl : ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11634:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
-            // InternalSignalDSL.g:11635:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalSignalDSL.g:12221:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalSignalDSL.g:12222:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
             {
-            // InternalSignalDSL.g:11635:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
-            // InternalSignalDSL.g:11636:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalSignalDSL.g:12222:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalSignalDSL.g:12223:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
             }
-            // InternalSignalDSL.g:11637:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
-            // InternalSignalDSL.g:11637:3: rule__XSwitchExpression__Group_2_1_0_0__0
+            // InternalSignalDSL.g:12224:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalSignalDSL.g:12224:3: rule__XSwitchExpression__Group_2_1_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__0();
@@ -39049,16 +40973,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0"
-    // InternalSignalDSL.g:11646:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
+    // InternalSignalDSL.g:12233:1: rule__XSwitchExpression__Group_2_1_0_0__0 : rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11650:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
-            // InternalSignalDSL.g:11651:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            // InternalSignalDSL.g:12237:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalSignalDSL.g:12238:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_21);
             rule__XSwitchExpression__Group_2_1_0_0__0__Impl();
 
             state._fsp--;
@@ -39087,23 +41011,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__0__Impl"
-    // InternalSignalDSL.g:11658:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
+    // InternalSignalDSL.g:12245:1: rule__XSwitchExpression__Group_2_1_0_0__0__Impl : ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11662:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
-            // InternalSignalDSL.g:11663:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalSignalDSL.g:12249:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalSignalDSL.g:12250:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
             {
-            // InternalSignalDSL.g:11663:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
-            // InternalSignalDSL.g:11664:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalSignalDSL.g:12250:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalSignalDSL.g:12251:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
             }
-            // InternalSignalDSL.g:11665:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
-            // InternalSignalDSL.g:11665:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
+            // InternalSignalDSL.g:12252:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalSignalDSL.g:12252:3: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0();
@@ -39138,14 +41062,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1"
-    // InternalSignalDSL.g:11673:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
+    // InternalSignalDSL.g:12260:1: rule__XSwitchExpression__Group_2_1_0_0__1 : rule__XSwitchExpression__Group_2_1_0_0__1__Impl ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11677:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
-            // InternalSignalDSL.g:11678:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
+            // InternalSignalDSL.g:12264:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalSignalDSL.g:12265:2: rule__XSwitchExpression__Group_2_1_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_2_1_0_0__1__Impl();
@@ -39171,22 +41095,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_2_1_0_0__1__Impl"
-    // InternalSignalDSL.g:11684:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12271:1: rule__XSwitchExpression__Group_2_1_0_0__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_2_1_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11688:1: ( ( ':' ) )
-            // InternalSignalDSL.g:11689:1: ( ':' )
+            // InternalSignalDSL.g:12275:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12276:1: ( ':' )
             {
-            // InternalSignalDSL.g:11689:1: ( ':' )
-            // InternalSignalDSL.g:11690:2: ':'
+            // InternalSignalDSL.g:12276:1: ( ':' )
+            // InternalSignalDSL.g:12277:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
             }
@@ -39212,16 +41136,16 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0"
-    // InternalSignalDSL.g:11700:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
+    // InternalSignalDSL.g:12287:1: rule__XSwitchExpression__Group_5__0 : rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 ;
     public final void rule__XSwitchExpression__Group_5__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11704:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
-            // InternalSignalDSL.g:11705:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            // InternalSignalDSL.g:12291:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalSignalDSL.g:12292:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_21);
             rule__XSwitchExpression__Group_5__0__Impl();
 
             state._fsp--;
@@ -39250,22 +41174,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__0__Impl"
-    // InternalSignalDSL.g:11712:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    // InternalSignalDSL.g:12299:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
     public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11716:1: ( ( 'default' ) )
-            // InternalSignalDSL.g:11717:1: ( 'default' )
+            // InternalSignalDSL.g:12303:1: ( ( 'default' ) )
+            // InternalSignalDSL.g:12304:1: ( 'default' )
             {
-            // InternalSignalDSL.g:11717:1: ( 'default' )
-            // InternalSignalDSL.g:11718:2: 'default'
+            // InternalSignalDSL.g:12304:1: ( 'default' )
+            // InternalSignalDSL.g:12305:2: 'default'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
-            match(input,83,FOLLOW_2); if (state.failed) return ;
+            match(input,91,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
             }
@@ -39291,14 +41215,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1"
-    // InternalSignalDSL.g:11727:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
+    // InternalSignalDSL.g:12314:1: rule__XSwitchExpression__Group_5__1 : rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 ;
     public final void rule__XSwitchExpression__Group_5__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11731:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
-            // InternalSignalDSL.g:11732:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            // InternalSignalDSL.g:12318:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalSignalDSL.g:12319:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
             {
             pushFollow(FOLLOW_35);
             rule__XSwitchExpression__Group_5__1__Impl();
@@ -39329,22 +41253,22 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__1__Impl"
-    // InternalSignalDSL.g:11739:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12326:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
     public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11743:1: ( ( ':' ) )
-            // InternalSignalDSL.g:11744:1: ( ':' )
+            // InternalSignalDSL.g:12330:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12331:1: ( ':' )
             {
-            // InternalSignalDSL.g:11744:1: ( ':' )
-            // InternalSignalDSL.g:11745:2: ':'
+            // InternalSignalDSL.g:12331:1: ( ':' )
+            // InternalSignalDSL.g:12332:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
             }
@@ -39370,14 +41294,14 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2"
-    // InternalSignalDSL.g:11754:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
+    // InternalSignalDSL.g:12341:1: rule__XSwitchExpression__Group_5__2 : rule__XSwitchExpression__Group_5__2__Impl ;
     public final void rule__XSwitchExpression__Group_5__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11758:1: ( rule__XSwitchExpression__Group_5__2__Impl )
-            // InternalSignalDSL.g:11759:2: rule__XSwitchExpression__Group_5__2__Impl
+            // InternalSignalDSL.g:12345:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalSignalDSL.g:12346:2: rule__XSwitchExpression__Group_5__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__Group_5__2__Impl();
@@ -39403,23 +41327,23 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__Group_5__2__Impl"
-    // InternalSignalDSL.g:11765:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
+    // InternalSignalDSL.g:12352:1: rule__XSwitchExpression__Group_5__2__Impl : ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) ;
     public final void rule__XSwitchExpression__Group_5__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11769:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
-            // InternalSignalDSL.g:11770:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalSignalDSL.g:12356:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalSignalDSL.g:12357:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
             {
-            // InternalSignalDSL.g:11770:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
-            // InternalSignalDSL.g:11771:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalSignalDSL.g:12357:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalSignalDSL.g:12358:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
             }
-            // InternalSignalDSL.g:11772:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
-            // InternalSignalDSL.g:11772:3: rule__XSwitchExpression__DefaultAssignment_5_2
+            // InternalSignalDSL.g:12359:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalSignalDSL.g:12359:3: rule__XSwitchExpression__DefaultAssignment_5_2
             {
             pushFollow(FOLLOW_2);
             rule__XSwitchExpression__DefaultAssignment_5_2();
@@ -39454,16 +41378,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0"
-    // InternalSignalDSL.g:11781:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
+    // InternalSignalDSL.g:12368:1: rule__XCasePart__Group__0 : rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 ;
     public final void rule__XCasePart__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11785:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
-            // InternalSignalDSL.g:11786:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            // InternalSignalDSL.g:12372:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalSignalDSL.g:12373:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_87);
             rule__XCasePart__Group__0__Impl();
 
             state._fsp--;
@@ -39492,23 +41416,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__0__Impl"
-    // InternalSignalDSL.g:11793:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:12380:1: rule__XCasePart__Group__0__Impl : ( () ) ;
     public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11797:1: ( ( () ) )
-            // InternalSignalDSL.g:11798:1: ( () )
+            // InternalSignalDSL.g:12384:1: ( ( () ) )
+            // InternalSignalDSL.g:12385:1: ( () )
             {
-            // InternalSignalDSL.g:11798:1: ( () )
-            // InternalSignalDSL.g:11799:2: ()
+            // InternalSignalDSL.g:12385:1: ( () )
+            // InternalSignalDSL.g:12386:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
             }
-            // InternalSignalDSL.g:11800:2: ()
-            // InternalSignalDSL.g:11800:3: 
+            // InternalSignalDSL.g:12387:2: ()
+            // InternalSignalDSL.g:12387:3: 
             {
             }
 
@@ -39533,16 +41457,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1"
-    // InternalSignalDSL.g:11808:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
+    // InternalSignalDSL.g:12395:1: rule__XCasePart__Group__1 : rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 ;
     public final void rule__XCasePart__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11812:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
-            // InternalSignalDSL.g:11813:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            // InternalSignalDSL.g:12399:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalSignalDSL.g:12400:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_87);
             rule__XCasePart__Group__1__Impl();
 
             state._fsp--;
@@ -39571,31 +41495,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__1__Impl"
-    // InternalSignalDSL.g:11820:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    // InternalSignalDSL.g:12407:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
     public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11824:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
-            // InternalSignalDSL.g:11825:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalSignalDSL.g:12411:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalSignalDSL.g:12412:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
             {
-            // InternalSignalDSL.g:11825:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
-            // InternalSignalDSL.g:11826:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            // InternalSignalDSL.g:12412:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalSignalDSL.g:12413:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
             }
-            // InternalSignalDSL.g:11827:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
-            int alt102=2;
-            int LA102_0 = input.LA(1);
+            // InternalSignalDSL.g:12414:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
 
-            if ( (LA102_0==RULE_ID||LA102_0==31||LA102_0==71) ) {
-                alt102=1;
+            if ( (LA100_0==RULE_ID||LA100_0==31||LA100_0==80) ) {
+                alt100=1;
             }
-            switch (alt102) {
+            switch (alt100) {
                 case 1 :
-                    // InternalSignalDSL.g:11827:3: rule__XCasePart__TypeGuardAssignment_1
+                    // InternalSignalDSL.g:12414:3: rule__XCasePart__TypeGuardAssignment_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__TypeGuardAssignment_1();
@@ -39633,16 +41557,16 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2"
-    // InternalSignalDSL.g:11835:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
+    // InternalSignalDSL.g:12422:1: rule__XCasePart__Group__2 : rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 ;
     public final void rule__XCasePart__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11839:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
-            // InternalSignalDSL.g:11840:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            // InternalSignalDSL.g:12426:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalSignalDSL.g:12427:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
             {
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_87);
             rule__XCasePart__Group__2__Impl();
 
             state._fsp--;
@@ -39671,31 +41595,31 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__2__Impl"
-    // InternalSignalDSL.g:11847:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
+    // InternalSignalDSL.g:12434:1: rule__XCasePart__Group__2__Impl : ( ( rule__XCasePart__Group_2__0 )? ) ;
     public final void rule__XCasePart__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11851:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
-            // InternalSignalDSL.g:11852:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalSignalDSL.g:12438:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalSignalDSL.g:12439:1: ( ( rule__XCasePart__Group_2__0 )? )
             {
-            // InternalSignalDSL.g:11852:1: ( ( rule__XCasePart__Group_2__0 )? )
-            // InternalSignalDSL.g:11853:2: ( rule__XCasePart__Group_2__0 )?
+            // InternalSignalDSL.g:12439:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalSignalDSL.g:12440:2: ( rule__XCasePart__Group_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getGroup_2()); 
             }
-            // InternalSignalDSL.g:11854:2: ( rule__XCasePart__Group_2__0 )?
-            int alt103=2;
-            int LA103_0 = input.LA(1);
+            // InternalSignalDSL.g:12441:2: ( rule__XCasePart__Group_2__0 )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
 
-            if ( (LA103_0==84) ) {
-                alt103=1;
+            if ( (LA101_0==92) ) {
+                alt101=1;
             }
-            switch (alt103) {
+            switch (alt101) {
                 case 1 :
-                    // InternalSignalDSL.g:11854:3: rule__XCasePart__Group_2__0
+                    // InternalSignalDSL.g:12441:3: rule__XCasePart__Group_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XCasePart__Group_2__0();
@@ -39733,14 +41657,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3"
-    // InternalSignalDSL.g:11862:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    // InternalSignalDSL.g:12449:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
     public final void rule__XCasePart__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11866:1: ( rule__XCasePart__Group__3__Impl )
-            // InternalSignalDSL.g:11867:2: rule__XCasePart__Group__3__Impl
+            // InternalSignalDSL.g:12453:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalSignalDSL.g:12454:2: rule__XCasePart__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group__3__Impl();
@@ -39766,23 +41690,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group__3__Impl"
-    // InternalSignalDSL.g:11873:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    // InternalSignalDSL.g:12460:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
     public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11877:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
-            // InternalSignalDSL.g:11878:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalSignalDSL.g:12464:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalSignalDSL.g:12465:1: ( ( rule__XCasePart__Alternatives_3 ) )
             {
-            // InternalSignalDSL.g:11878:1: ( ( rule__XCasePart__Alternatives_3 ) )
-            // InternalSignalDSL.g:11879:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalSignalDSL.g:12465:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalSignalDSL.g:12466:2: ( rule__XCasePart__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
             }
-            // InternalSignalDSL.g:11880:2: ( rule__XCasePart__Alternatives_3 )
-            // InternalSignalDSL.g:11880:3: rule__XCasePart__Alternatives_3
+            // InternalSignalDSL.g:12467:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalSignalDSL.g:12467:3: rule__XCasePart__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Alternatives_3();
@@ -39817,14 +41741,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0"
-    // InternalSignalDSL.g:11889:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
+    // InternalSignalDSL.g:12476:1: rule__XCasePart__Group_2__0 : rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 ;
     public final void rule__XCasePart__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11893:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
-            // InternalSignalDSL.g:11894:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            // InternalSignalDSL.g:12480:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalSignalDSL.g:12481:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
             {
             pushFollow(FOLLOW_35);
             rule__XCasePart__Group_2__0__Impl();
@@ -39855,22 +41779,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__0__Impl"
-    // InternalSignalDSL.g:11901:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    // InternalSignalDSL.g:12488:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
     public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11905:1: ( ( 'case' ) )
-            // InternalSignalDSL.g:11906:1: ( 'case' )
+            // InternalSignalDSL.g:12492:1: ( ( 'case' ) )
+            // InternalSignalDSL.g:12493:1: ( 'case' )
             {
-            // InternalSignalDSL.g:11906:1: ( 'case' )
-            // InternalSignalDSL.g:11907:2: 'case'
+            // InternalSignalDSL.g:12493:1: ( 'case' )
+            // InternalSignalDSL.g:12494:2: 'case'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
-            match(input,84,FOLLOW_2); if (state.failed) return ;
+            match(input,92,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
             }
@@ -39896,14 +41820,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1"
-    // InternalSignalDSL.g:11916:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
+    // InternalSignalDSL.g:12503:1: rule__XCasePart__Group_2__1 : rule__XCasePart__Group_2__1__Impl ;
     public final void rule__XCasePart__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11920:1: ( rule__XCasePart__Group_2__1__Impl )
-            // InternalSignalDSL.g:11921:2: rule__XCasePart__Group_2__1__Impl
+            // InternalSignalDSL.g:12507:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalSignalDSL.g:12508:2: rule__XCasePart__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_2__1__Impl();
@@ -39929,23 +41853,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_2__1__Impl"
-    // InternalSignalDSL.g:11927:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
+    // InternalSignalDSL.g:12514:1: rule__XCasePart__Group_2__1__Impl : ( ( rule__XCasePart__CaseAssignment_2_1 ) ) ;
     public final void rule__XCasePart__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11931:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
-            // InternalSignalDSL.g:11932:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalSignalDSL.g:12518:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalSignalDSL.g:12519:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
             {
-            // InternalSignalDSL.g:11932:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
-            // InternalSignalDSL.g:11933:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalSignalDSL.g:12519:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalSignalDSL.g:12520:2: ( rule__XCasePart__CaseAssignment_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
             }
-            // InternalSignalDSL.g:11934:2: ( rule__XCasePart__CaseAssignment_2_1 )
-            // InternalSignalDSL.g:11934:3: rule__XCasePart__CaseAssignment_2_1
+            // InternalSignalDSL.g:12521:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalSignalDSL.g:12521:3: rule__XCasePart__CaseAssignment_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__CaseAssignment_2_1();
@@ -39980,14 +41904,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0"
-    // InternalSignalDSL.g:11943:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
+    // InternalSignalDSL.g:12530:1: rule__XCasePart__Group_3_0__0 : rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 ;
     public final void rule__XCasePart__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11947:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
-            // InternalSignalDSL.g:11948:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            // InternalSignalDSL.g:12534:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalSignalDSL.g:12535:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
             {
             pushFollow(FOLLOW_35);
             rule__XCasePart__Group_3_0__0__Impl();
@@ -40018,22 +41942,22 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__0__Impl"
-    // InternalSignalDSL.g:11955:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12542:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
     public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11959:1: ( ( ':' ) )
-            // InternalSignalDSL.g:11960:1: ( ':' )
+            // InternalSignalDSL.g:12546:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12547:1: ( ':' )
             {
-            // InternalSignalDSL.g:11960:1: ( ':' )
-            // InternalSignalDSL.g:11961:2: ':'
+            // InternalSignalDSL.g:12547:1: ( ':' )
+            // InternalSignalDSL.g:12548:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
             }
@@ -40059,14 +41983,14 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1"
-    // InternalSignalDSL.g:11970:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
+    // InternalSignalDSL.g:12557:1: rule__XCasePart__Group_3_0__1 : rule__XCasePart__Group_3_0__1__Impl ;
     public final void rule__XCasePart__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11974:1: ( rule__XCasePart__Group_3_0__1__Impl )
-            // InternalSignalDSL.g:11975:2: rule__XCasePart__Group_3_0__1__Impl
+            // InternalSignalDSL.g:12561:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalSignalDSL.g:12562:2: rule__XCasePart__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__Group_3_0__1__Impl();
@@ -40092,23 +42016,23 @@
 
 
     // $ANTLR start "rule__XCasePart__Group_3_0__1__Impl"
-    // InternalSignalDSL.g:11981:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
+    // InternalSignalDSL.g:12568:1: rule__XCasePart__Group_3_0__1__Impl : ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) ;
     public final void rule__XCasePart__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:11985:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
-            // InternalSignalDSL.g:11986:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalSignalDSL.g:12572:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalSignalDSL.g:12573:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
             {
-            // InternalSignalDSL.g:11986:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
-            // InternalSignalDSL.g:11987:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalSignalDSL.g:12573:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalSignalDSL.g:12574:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
             }
-            // InternalSignalDSL.g:11988:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
-            // InternalSignalDSL.g:11988:3: rule__XCasePart__ThenAssignment_3_0_1
+            // InternalSignalDSL.g:12575:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalSignalDSL.g:12575:3: rule__XCasePart__ThenAssignment_3_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XCasePart__ThenAssignment_3_0_1();
@@ -40143,14 +42067,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0"
-    // InternalSignalDSL.g:11997:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
+    // InternalSignalDSL.g:12584:1: rule__XForLoopExpression__Group__0 : rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 ;
     public final void rule__XForLoopExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12001:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
-            // InternalSignalDSL.g:12002:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            // InternalSignalDSL.g:12588:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalSignalDSL.g:12589:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
             {
             pushFollow(FOLLOW_35);
             rule__XForLoopExpression__Group__0__Impl();
@@ -40181,23 +42105,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__0__Impl"
-    // InternalSignalDSL.g:12009:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:12596:1: rule__XForLoopExpression__Group__0__Impl : ( ( rule__XForLoopExpression__Group_0__0 ) ) ;
     public final void rule__XForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12013:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
-            // InternalSignalDSL.g:12014:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:12600:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalSignalDSL.g:12601:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:12014:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
-            // InternalSignalDSL.g:12015:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalSignalDSL.g:12601:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:12602:2: ( rule__XForLoopExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:12016:2: ( rule__XForLoopExpression__Group_0__0 )
-            // InternalSignalDSL.g:12016:3: rule__XForLoopExpression__Group_0__0
+            // InternalSignalDSL.g:12603:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalSignalDSL.g:12603:3: rule__XForLoopExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0();
@@ -40232,14 +42156,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1"
-    // InternalSignalDSL.g:12024:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
+    // InternalSignalDSL.g:12611:1: rule__XForLoopExpression__Group__1 : rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 ;
     public final void rule__XForLoopExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12028:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
-            // InternalSignalDSL.g:12029:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            // InternalSignalDSL.g:12615:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalSignalDSL.g:12616:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
             {
             pushFollow(FOLLOW_80);
             rule__XForLoopExpression__Group__1__Impl();
@@ -40270,23 +42194,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__1__Impl"
-    // InternalSignalDSL.g:12036:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    // InternalSignalDSL.g:12623:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
     public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12040:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
-            // InternalSignalDSL.g:12041:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:12627:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalSignalDSL.g:12628:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
             {
-            // InternalSignalDSL.g:12041:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
-            // InternalSignalDSL.g:12042:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalSignalDSL.g:12628:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalSignalDSL.g:12629:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
             }
-            // InternalSignalDSL.g:12043:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
-            // InternalSignalDSL.g:12043:3: rule__XForLoopExpression__ForExpressionAssignment_1
+            // InternalSignalDSL.g:12630:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalSignalDSL.g:12630:3: rule__XForLoopExpression__ForExpressionAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__ForExpressionAssignment_1();
@@ -40321,14 +42245,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2"
-    // InternalSignalDSL.g:12051:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
+    // InternalSignalDSL.g:12638:1: rule__XForLoopExpression__Group__2 : rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 ;
     public final void rule__XForLoopExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12055:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
-            // InternalSignalDSL.g:12056:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            // InternalSignalDSL.g:12642:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalSignalDSL.g:12643:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
             {
             pushFollow(FOLLOW_35);
             rule__XForLoopExpression__Group__2__Impl();
@@ -40359,22 +42283,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__2__Impl"
-    // InternalSignalDSL.g:12063:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:12650:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12067:1: ( ( ')' ) )
-            // InternalSignalDSL.g:12068:1: ( ')' )
+            // InternalSignalDSL.g:12654:1: ( ( ')' ) )
+            // InternalSignalDSL.g:12655:1: ( ')' )
             {
-            // InternalSignalDSL.g:12068:1: ( ')' )
-            // InternalSignalDSL.g:12069:2: ')'
+            // InternalSignalDSL.g:12655:1: ( ')' )
+            // InternalSignalDSL.g:12656:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -40400,14 +42324,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3"
-    // InternalSignalDSL.g:12078:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:12665:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
     public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12082:1: ( rule__XForLoopExpression__Group__3__Impl )
-            // InternalSignalDSL.g:12083:2: rule__XForLoopExpression__Group__3__Impl
+            // InternalSignalDSL.g:12669:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalSignalDSL.g:12670:2: rule__XForLoopExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group__3__Impl();
@@ -40433,23 +42357,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group__3__Impl"
-    // InternalSignalDSL.g:12089:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    // InternalSignalDSL.g:12676:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
     public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12093:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
-            // InternalSignalDSL.g:12094:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:12680:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalSignalDSL.g:12681:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
             {
-            // InternalSignalDSL.g:12094:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
-            // InternalSignalDSL.g:12095:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalSignalDSL.g:12681:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:12682:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
             }
-            // InternalSignalDSL.g:12096:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
-            // InternalSignalDSL.g:12096:3: rule__XForLoopExpression__EachExpressionAssignment_3
+            // InternalSignalDSL.g:12683:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalSignalDSL.g:12683:3: rule__XForLoopExpression__EachExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__EachExpressionAssignment_3();
@@ -40484,14 +42408,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0"
-    // InternalSignalDSL.g:12105:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
+    // InternalSignalDSL.g:12692:1: rule__XForLoopExpression__Group_0__0 : rule__XForLoopExpression__Group_0__0__Impl ;
     public final void rule__XForLoopExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12109:1: ( rule__XForLoopExpression__Group_0__0__Impl )
-            // InternalSignalDSL.g:12110:2: rule__XForLoopExpression__Group_0__0__Impl
+            // InternalSignalDSL.g:12696:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalSignalDSL.g:12697:2: rule__XForLoopExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0__0__Impl();
@@ -40517,23 +42441,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0__0__Impl"
-    // InternalSignalDSL.g:12116:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:12703:1: rule__XForLoopExpression__Group_0__0__Impl : ( ( rule__XForLoopExpression__Group_0_0__0 ) ) ;
     public final void rule__XForLoopExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12120:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:12121:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:12707:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:12708:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:12121:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
-            // InternalSignalDSL.g:12122:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:12708:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:12709:2: ( rule__XForLoopExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:12123:2: ( rule__XForLoopExpression__Group_0_0__0 )
-            // InternalSignalDSL.g:12123:3: rule__XForLoopExpression__Group_0_0__0
+            // InternalSignalDSL.g:12710:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:12710:3: rule__XForLoopExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__0();
@@ -40568,16 +42492,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0"
-    // InternalSignalDSL.g:12132:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
+    // InternalSignalDSL.g:12719:1: rule__XForLoopExpression__Group_0_0__0 : rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 ;
     public final void rule__XForLoopExpression__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12136:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
-            // InternalSignalDSL.g:12137:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            // InternalSignalDSL.g:12723:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalSignalDSL.g:12724:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
             {
-            pushFollow(FOLLOW_14);
+            pushFollow(FOLLOW_88);
             rule__XForLoopExpression__Group_0_0__0__Impl();
 
             state._fsp--;
@@ -40606,23 +42530,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:12144:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:12731:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12148:1: ( ( () ) )
-            // InternalSignalDSL.g:12149:1: ( () )
+            // InternalSignalDSL.g:12735:1: ( ( () ) )
+            // InternalSignalDSL.g:12736:1: ( () )
             {
-            // InternalSignalDSL.g:12149:1: ( () )
-            // InternalSignalDSL.g:12150:2: ()
+            // InternalSignalDSL.g:12736:1: ( () )
+            // InternalSignalDSL.g:12737:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:12151:2: ()
-            // InternalSignalDSL.g:12151:3: 
+            // InternalSignalDSL.g:12738:2: ()
+            // InternalSignalDSL.g:12738:3: 
             {
             }
 
@@ -40647,14 +42571,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1"
-    // InternalSignalDSL.g:12159:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
+    // InternalSignalDSL.g:12746:1: rule__XForLoopExpression__Group_0_0__1 : rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 ;
     public final void rule__XForLoopExpression__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12163:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
-            // InternalSignalDSL.g:12164:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            // InternalSignalDSL.g:12750:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalSignalDSL.g:12751:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
             {
             pushFollow(FOLLOW_31);
             rule__XForLoopExpression__Group_0_0__1__Impl();
@@ -40685,22 +42609,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:12171:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
+    // InternalSignalDSL.g:12758:1: rule__XForLoopExpression__Group_0_0__1__Impl : ( 'for' ) ;
     public final void rule__XForLoopExpression__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12175:1: ( ( 'for' ) )
-            // InternalSignalDSL.g:12176:1: ( 'for' )
+            // InternalSignalDSL.g:12762:1: ( ( 'for' ) )
+            // InternalSignalDSL.g:12763:1: ( 'for' )
             {
-            // InternalSignalDSL.g:12176:1: ( 'for' )
-            // InternalSignalDSL.g:12177:2: 'for'
+            // InternalSignalDSL.g:12763:1: ( 'for' )
+            // InternalSignalDSL.g:12764:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
             }
@@ -40726,14 +42650,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2"
-    // InternalSignalDSL.g:12186:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
+    // InternalSignalDSL.g:12773:1: rule__XForLoopExpression__Group_0_0__2 : rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 ;
     public final void rule__XForLoopExpression__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12190:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
-            // InternalSignalDSL.g:12191:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            // InternalSignalDSL.g:12777:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalSignalDSL.g:12778:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
             {
             pushFollow(FOLLOW_52);
             rule__XForLoopExpression__Group_0_0__2__Impl();
@@ -40764,22 +42688,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__2__Impl"
-    // InternalSignalDSL.g:12198:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:12785:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
     public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12202:1: ( ( '(' ) )
-            // InternalSignalDSL.g:12203:1: ( '(' )
+            // InternalSignalDSL.g:12789:1: ( ( '(' ) )
+            // InternalSignalDSL.g:12790:1: ( '(' )
             {
-            // InternalSignalDSL.g:12203:1: ( '(' )
-            // InternalSignalDSL.g:12204:2: '('
+            // InternalSignalDSL.g:12790:1: ( '(' )
+            // InternalSignalDSL.g:12791:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -40805,16 +42729,16 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3"
-    // InternalSignalDSL.g:12213:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
+    // InternalSignalDSL.g:12800:1: rule__XForLoopExpression__Group_0_0__3 : rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 ;
     public final void rule__XForLoopExpression__Group_0_0__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12217:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
-            // InternalSignalDSL.g:12218:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            // InternalSignalDSL.g:12804:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalSignalDSL.g:12805:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
             {
-            pushFollow(FOLLOW_87);
+            pushFollow(FOLLOW_21);
             rule__XForLoopExpression__Group_0_0__3__Impl();
 
             state._fsp--;
@@ -40843,23 +42767,23 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__3__Impl"
-    // InternalSignalDSL.g:12225:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
+    // InternalSignalDSL.g:12812:1: rule__XForLoopExpression__Group_0_0__3__Impl : ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) ;
     public final void rule__XForLoopExpression__Group_0_0__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12229:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
-            // InternalSignalDSL.g:12230:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalSignalDSL.g:12816:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalSignalDSL.g:12817:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
             {
-            // InternalSignalDSL.g:12230:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
-            // InternalSignalDSL.g:12231:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalSignalDSL.g:12817:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalSignalDSL.g:12818:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
             }
-            // InternalSignalDSL.g:12232:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
-            // InternalSignalDSL.g:12232:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
+            // InternalSignalDSL.g:12819:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalSignalDSL.g:12819:3: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__DeclaredParamAssignment_0_0_3();
@@ -40894,14 +42818,14 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4"
-    // InternalSignalDSL.g:12240:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
+    // InternalSignalDSL.g:12827:1: rule__XForLoopExpression__Group_0_0__4 : rule__XForLoopExpression__Group_0_0__4__Impl ;
     public final void rule__XForLoopExpression__Group_0_0__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12244:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
-            // InternalSignalDSL.g:12245:2: rule__XForLoopExpression__Group_0_0__4__Impl
+            // InternalSignalDSL.g:12831:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalSignalDSL.g:12832:2: rule__XForLoopExpression__Group_0_0__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XForLoopExpression__Group_0_0__4__Impl();
@@ -40927,22 +42851,22 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__Group_0_0__4__Impl"
-    // InternalSignalDSL.g:12251:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    // InternalSignalDSL.g:12838:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
     public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12255:1: ( ( ':' ) )
-            // InternalSignalDSL.g:12256:1: ( ':' )
+            // InternalSignalDSL.g:12842:1: ( ( ':' ) )
+            // InternalSignalDSL.g:12843:1: ( ':' )
             {
-            // InternalSignalDSL.g:12256:1: ( ':' )
-            // InternalSignalDSL.g:12257:2: ':'
+            // InternalSignalDSL.g:12843:1: ( ':' )
+            // InternalSignalDSL.g:12844:2: ':'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
-            match(input,82,FOLLOW_2); if (state.failed) return ;
+            match(input,73,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
             }
@@ -40968,16 +42892,16 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0"
-    // InternalSignalDSL.g:12267:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
+    // InternalSignalDSL.g:12854:1: rule__XBasicForLoopExpression__Group__0 : rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 ;
     public final void rule__XBasicForLoopExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12271:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
-            // InternalSignalDSL.g:12272:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            // InternalSignalDSL.g:12858:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalSignalDSL.g:12859:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
             {
-            pushFollow(FOLLOW_14);
+            pushFollow(FOLLOW_88);
             rule__XBasicForLoopExpression__Group__0__Impl();
 
             state._fsp--;
@@ -41006,23 +42930,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__0__Impl"
-    // InternalSignalDSL.g:12279:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:12866:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12283:1: ( ( () ) )
-            // InternalSignalDSL.g:12284:1: ( () )
+            // InternalSignalDSL.g:12870:1: ( ( () ) )
+            // InternalSignalDSL.g:12871:1: ( () )
             {
-            // InternalSignalDSL.g:12284:1: ( () )
-            // InternalSignalDSL.g:12285:2: ()
+            // InternalSignalDSL.g:12871:1: ( () )
+            // InternalSignalDSL.g:12872:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:12286:2: ()
-            // InternalSignalDSL.g:12286:3: 
+            // InternalSignalDSL.g:12873:2: ()
+            // InternalSignalDSL.g:12873:3: 
             {
             }
 
@@ -41047,14 +42971,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1"
-    // InternalSignalDSL.g:12294:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
+    // InternalSignalDSL.g:12881:1: rule__XBasicForLoopExpression__Group__1 : rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 ;
     public final void rule__XBasicForLoopExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12298:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
-            // InternalSignalDSL.g:12299:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            // InternalSignalDSL.g:12885:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalSignalDSL.g:12886:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
             {
             pushFollow(FOLLOW_31);
             rule__XBasicForLoopExpression__Group__1__Impl();
@@ -41085,22 +43009,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__1__Impl"
-    // InternalSignalDSL.g:12306:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    // InternalSignalDSL.g:12893:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
     public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12310:1: ( ( 'for' ) )
-            // InternalSignalDSL.g:12311:1: ( 'for' )
+            // InternalSignalDSL.g:12897:1: ( ( 'for' ) )
+            // InternalSignalDSL.g:12898:1: ( 'for' )
             {
-            // InternalSignalDSL.g:12311:1: ( 'for' )
-            // InternalSignalDSL.g:12312:2: 'for'
+            // InternalSignalDSL.g:12898:1: ( 'for' )
+            // InternalSignalDSL.g:12899:2: 'for'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
-            match(input,64,FOLLOW_2); if (state.failed) return ;
+            match(input,93,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
             }
@@ -41126,14 +43050,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2"
-    // InternalSignalDSL.g:12321:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
+    // InternalSignalDSL.g:12908:1: rule__XBasicForLoopExpression__Group__2 : rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 ;
     public final void rule__XBasicForLoopExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12325:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
-            // InternalSignalDSL.g:12326:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            // InternalSignalDSL.g:12912:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalSignalDSL.g:12913:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
             {
             pushFollow(FOLLOW_89);
             rule__XBasicForLoopExpression__Group__2__Impl();
@@ -41164,22 +43088,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__2__Impl"
-    // InternalSignalDSL.g:12333:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:12920:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12337:1: ( ( '(' ) )
-            // InternalSignalDSL.g:12338:1: ( '(' )
+            // InternalSignalDSL.g:12924:1: ( ( '(' ) )
+            // InternalSignalDSL.g:12925:1: ( '(' )
             {
-            // InternalSignalDSL.g:12338:1: ( '(' )
-            // InternalSignalDSL.g:12339:2: '('
+            // InternalSignalDSL.g:12925:1: ( '(' )
+            // InternalSignalDSL.g:12926:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -41205,14 +43129,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3"
-    // InternalSignalDSL.g:12348:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
+    // InternalSignalDSL.g:12935:1: rule__XBasicForLoopExpression__Group__3 : rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 ;
     public final void rule__XBasicForLoopExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12352:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
-            // InternalSignalDSL.g:12353:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            // InternalSignalDSL.g:12939:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalSignalDSL.g:12940:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
             {
             pushFollow(FOLLOW_89);
             rule__XBasicForLoopExpression__Group__3__Impl();
@@ -41243,31 +43167,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__3__Impl"
-    // InternalSignalDSL.g:12360:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:12947:1: rule__XBasicForLoopExpression__Group__3__Impl : ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12364:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
-            // InternalSignalDSL.g:12365:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalSignalDSL.g:12951:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalSignalDSL.g:12952:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:12365:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
-            // InternalSignalDSL.g:12366:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            // InternalSignalDSL.g:12952:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalSignalDSL.g:12953:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:12367:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
-            int alt104=2;
-            int LA104_0 = input.LA(1);
+            // InternalSignalDSL.g:12954:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            int alt102=2;
+            int LA102_0 = input.LA(1);
 
-            if ( ((LA104_0>=RULE_ID && LA104_0<=RULE_STRING)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=44 && LA104_0<=50)||LA104_0==60||LA104_0==64||LA104_0==71||(LA104_0>=75 && LA104_0<=76)||LA104_0==79||LA104_0==81||(LA104_0>=85 && LA104_0<=92)||LA104_0==94||(LA104_0>=102 && LA104_0<=103)) ) {
-                alt104=1;
+            if ( ((LA102_0>=RULE_ID && LA102_0<=RULE_STRING)||LA102_0==27||(LA102_0>=34 && LA102_0<=35)||LA102_0==40||(LA102_0>=44 && LA102_0<=50)||LA102_0==63||LA102_0==80||(LA102_0>=84 && LA102_0<=85)||LA102_0==88||LA102_0==90||(LA102_0>=93 && LA102_0<=101)||LA102_0==103||(LA102_0>=111 && LA102_0<=112)) ) {
+                alt102=1;
             }
-            switch (alt104) {
+            switch (alt102) {
                 case 1 :
-                    // InternalSignalDSL.g:12367:3: rule__XBasicForLoopExpression__Group_3__0
+                    // InternalSignalDSL.g:12954:3: rule__XBasicForLoopExpression__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_3__0();
@@ -41305,14 +43229,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4"
-    // InternalSignalDSL.g:12375:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
+    // InternalSignalDSL.g:12962:1: rule__XBasicForLoopExpression__Group__4 : rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 ;
     public final void rule__XBasicForLoopExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12379:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
-            // InternalSignalDSL.g:12380:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            // InternalSignalDSL.g:12966:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalSignalDSL.g:12967:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
             {
             pushFollow(FOLLOW_90);
             rule__XBasicForLoopExpression__Group__4__Impl();
@@ -41343,22 +43267,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__4__Impl"
-    // InternalSignalDSL.g:12387:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    // InternalSignalDSL.g:12974:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12391:1: ( ( ';' ) )
-            // InternalSignalDSL.g:12392:1: ( ';' )
+            // InternalSignalDSL.g:12978:1: ( ( ';' ) )
+            // InternalSignalDSL.g:12979:1: ( ';' )
             {
-            // InternalSignalDSL.g:12392:1: ( ';' )
-            // InternalSignalDSL.g:12393:2: ';'
+            // InternalSignalDSL.g:12979:1: ( ';' )
+            // InternalSignalDSL.g:12980:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
-            match(input,69,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
             }
@@ -41384,14 +43308,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5"
-    // InternalSignalDSL.g:12402:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
+    // InternalSignalDSL.g:12989:1: rule__XBasicForLoopExpression__Group__5 : rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 ;
     public final void rule__XBasicForLoopExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12406:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
-            // InternalSignalDSL.g:12407:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            // InternalSignalDSL.g:12993:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalSignalDSL.g:12994:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
             {
             pushFollow(FOLLOW_90);
             rule__XBasicForLoopExpression__Group__5__Impl();
@@ -41422,31 +43346,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__5__Impl"
-    // InternalSignalDSL.g:12414:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    // InternalSignalDSL.g:13001:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12418:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
-            // InternalSignalDSL.g:12419:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalSignalDSL.g:13005:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalSignalDSL.g:13006:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
             {
-            // InternalSignalDSL.g:12419:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
-            // InternalSignalDSL.g:12420:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            // InternalSignalDSL.g:13006:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalSignalDSL.g:13007:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
             }
-            // InternalSignalDSL.g:12421:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
-            int alt105=2;
-            int LA105_0 = input.LA(1);
+            // InternalSignalDSL.g:13008:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
 
-            if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_STRING)||LA105_0==27||(LA105_0>=34 && LA105_0<=35)||LA105_0==40||(LA105_0>=45 && LA105_0<=50)||LA105_0==60||LA105_0==64||LA105_0==71||(LA105_0>=75 && LA105_0<=76)||LA105_0==79||LA105_0==81||(LA105_0>=85 && LA105_0<=92)||LA105_0==94||LA105_0==103) ) {
-                alt105=1;
+            if ( ((LA103_0>=RULE_ID && LA103_0<=RULE_STRING)||LA103_0==27||(LA103_0>=34 && LA103_0<=35)||LA103_0==40||(LA103_0>=45 && LA103_0<=50)||LA103_0==63||LA103_0==80||(LA103_0>=84 && LA103_0<=85)||LA103_0==88||LA103_0==90||(LA103_0>=93 && LA103_0<=101)||LA103_0==103||LA103_0==112) ) {
+                alt103=1;
             }
-            switch (alt105) {
+            switch (alt103) {
                 case 1 :
-                    // InternalSignalDSL.g:12421:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
+                    // InternalSignalDSL.g:13008:3: rule__XBasicForLoopExpression__ExpressionAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__ExpressionAssignment_5();
@@ -41484,14 +43408,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6"
-    // InternalSignalDSL.g:12429:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
+    // InternalSignalDSL.g:13016:1: rule__XBasicForLoopExpression__Group__6 : rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 ;
     public final void rule__XBasicForLoopExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12433:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
-            // InternalSignalDSL.g:12434:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            // InternalSignalDSL.g:13020:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalSignalDSL.g:13021:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
             {
             pushFollow(FOLLOW_32);
             rule__XBasicForLoopExpression__Group__6__Impl();
@@ -41522,22 +43446,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__6__Impl"
-    // InternalSignalDSL.g:12441:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    // InternalSignalDSL.g:13028:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
     public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12445:1: ( ( ';' ) )
-            // InternalSignalDSL.g:12446:1: ( ';' )
+            // InternalSignalDSL.g:13032:1: ( ( ';' ) )
+            // InternalSignalDSL.g:13033:1: ( ';' )
             {
-            // InternalSignalDSL.g:12446:1: ( ';' )
-            // InternalSignalDSL.g:12447:2: ';'
+            // InternalSignalDSL.g:13033:1: ( ';' )
+            // InternalSignalDSL.g:13034:2: ';'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
-            match(input,69,FOLLOW_2); if (state.failed) return ;
+            match(input,78,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
             }
@@ -41563,14 +43487,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7"
-    // InternalSignalDSL.g:12456:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
+    // InternalSignalDSL.g:13043:1: rule__XBasicForLoopExpression__Group__7 : rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 ;
     public final void rule__XBasicForLoopExpression__Group__7() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12460:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
-            // InternalSignalDSL.g:12461:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            // InternalSignalDSL.g:13047:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalSignalDSL.g:13048:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
             {
             pushFollow(FOLLOW_32);
             rule__XBasicForLoopExpression__Group__7__Impl();
@@ -41601,31 +43525,31 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__7__Impl"
-    // InternalSignalDSL.g:12468:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
+    // InternalSignalDSL.g:13055:1: rule__XBasicForLoopExpression__Group__7__Impl : ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) ;
     public final void rule__XBasicForLoopExpression__Group__7__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12472:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
-            // InternalSignalDSL.g:12473:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalSignalDSL.g:13059:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalSignalDSL.g:13060:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
             {
-            // InternalSignalDSL.g:12473:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
-            // InternalSignalDSL.g:12474:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            // InternalSignalDSL.g:13060:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalSignalDSL.g:13061:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
             }
-            // InternalSignalDSL.g:12475:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
-            int alt106=2;
-            int LA106_0 = input.LA(1);
+            // InternalSignalDSL.g:13062:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            int alt104=2;
+            int LA104_0 = input.LA(1);
 
-            if ( ((LA106_0>=RULE_ID && LA106_0<=RULE_STRING)||LA106_0==27||(LA106_0>=34 && LA106_0<=35)||LA106_0==40||(LA106_0>=45 && LA106_0<=50)||LA106_0==60||LA106_0==64||LA106_0==71||(LA106_0>=75 && LA106_0<=76)||LA106_0==79||LA106_0==81||(LA106_0>=85 && LA106_0<=92)||LA106_0==94||LA106_0==103) ) {
-                alt106=1;
+            if ( ((LA104_0>=RULE_ID && LA104_0<=RULE_STRING)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=45 && LA104_0<=50)||LA104_0==63||LA104_0==80||(LA104_0>=84 && LA104_0<=85)||LA104_0==88||LA104_0==90||(LA104_0>=93 && LA104_0<=101)||LA104_0==103||LA104_0==112) ) {
+                alt104=1;
             }
-            switch (alt106) {
+            switch (alt104) {
                 case 1 :
-                    // InternalSignalDSL.g:12475:3: rule__XBasicForLoopExpression__Group_7__0
+                    // InternalSignalDSL.g:13062:3: rule__XBasicForLoopExpression__Group_7__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XBasicForLoopExpression__Group_7__0();
@@ -41663,14 +43587,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8"
-    // InternalSignalDSL.g:12483:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
+    // InternalSignalDSL.g:13070:1: rule__XBasicForLoopExpression__Group__8 : rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 ;
     public final void rule__XBasicForLoopExpression__Group__8() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12487:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
-            // InternalSignalDSL.g:12488:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            // InternalSignalDSL.g:13074:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalSignalDSL.g:13075:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
             {
             pushFollow(FOLLOW_35);
             rule__XBasicForLoopExpression__Group__8__Impl();
@@ -41701,22 +43625,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__8__Impl"
-    // InternalSignalDSL.g:12495:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:13082:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
     public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12499:1: ( ( ')' ) )
-            // InternalSignalDSL.g:12500:1: ( ')' )
+            // InternalSignalDSL.g:13086:1: ( ( ')' ) )
+            // InternalSignalDSL.g:13087:1: ( ')' )
             {
-            // InternalSignalDSL.g:12500:1: ( ')' )
-            // InternalSignalDSL.g:12501:2: ')'
+            // InternalSignalDSL.g:13087:1: ( ')' )
+            // InternalSignalDSL.g:13088:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
             }
@@ -41742,14 +43666,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9"
-    // InternalSignalDSL.g:12510:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    // InternalSignalDSL.g:13097:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
     public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12514:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
-            // InternalSignalDSL.g:12515:2: rule__XBasicForLoopExpression__Group__9__Impl
+            // InternalSignalDSL.g:13101:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalSignalDSL.g:13102:2: rule__XBasicForLoopExpression__Group__9__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group__9__Impl();
@@ -41775,23 +43699,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group__9__Impl"
-    // InternalSignalDSL.g:12521:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    // InternalSignalDSL.g:13108:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
     public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12525:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
-            // InternalSignalDSL.g:12526:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalSignalDSL.g:13112:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalSignalDSL.g:13113:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
             {
-            // InternalSignalDSL.g:12526:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
-            // InternalSignalDSL.g:12527:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalSignalDSL.g:13113:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalSignalDSL.g:13114:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
             }
-            // InternalSignalDSL.g:12528:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
-            // InternalSignalDSL.g:12528:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
+            // InternalSignalDSL.g:13115:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalSignalDSL.g:13115:3: rule__XBasicForLoopExpression__EachExpressionAssignment_9
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__EachExpressionAssignment_9();
@@ -41826,14 +43750,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0"
-    // InternalSignalDSL.g:12537:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
+    // InternalSignalDSL.g:13124:1: rule__XBasicForLoopExpression__Group_3__0 : rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 ;
     public final void rule__XBasicForLoopExpression__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12541:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
-            // InternalSignalDSL.g:12542:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            // InternalSignalDSL.g:13128:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalSignalDSL.g:13129:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
             {
             pushFollow(FOLLOW_33);
             rule__XBasicForLoopExpression__Group_3__0__Impl();
@@ -41864,23 +43788,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__0__Impl"
-    // InternalSignalDSL.g:12549:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:13136:1: rule__XBasicForLoopExpression__Group_3__0__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12553:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:12554:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalSignalDSL.g:13140:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:13141:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:12554:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
-            // InternalSignalDSL.g:12555:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalSignalDSL.g:13141:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalSignalDSL.g:13142:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:12556:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
-            // InternalSignalDSL.g:12556:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
+            // InternalSignalDSL.g:13143:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalSignalDSL.g:13143:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0();
@@ -41915,14 +43839,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1"
-    // InternalSignalDSL.g:12564:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
+    // InternalSignalDSL.g:13151:1: rule__XBasicForLoopExpression__Group_3__1 : rule__XBasicForLoopExpression__Group_3__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12568:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
-            // InternalSignalDSL.g:12569:2: rule__XBasicForLoopExpression__Group_3__1__Impl
+            // InternalSignalDSL.g:13155:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalSignalDSL.g:13156:2: rule__XBasicForLoopExpression__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3__1__Impl();
@@ -41948,35 +43872,35 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3__1__Impl"
-    // InternalSignalDSL.g:12575:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
+    // InternalSignalDSL.g:13162:1: rule__XBasicForLoopExpression__Group_3__1__Impl : ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) ;
     public final void rule__XBasicForLoopExpression__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12579:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
-            // InternalSignalDSL.g:12580:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalSignalDSL.g:13166:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalSignalDSL.g:13167:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
             {
-            // InternalSignalDSL.g:12580:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
-            // InternalSignalDSL.g:12581:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            // InternalSignalDSL.g:13167:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalSignalDSL.g:13168:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
             }
-            // InternalSignalDSL.g:12582:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
-            loop107:
+            // InternalSignalDSL.g:13169:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            loop105:
             do {
-                int alt107=2;
-                int LA107_0 = input.LA(1);
+                int alt105=2;
+                int LA105_0 = input.LA(1);
 
-                if ( (LA107_0==73) ) {
-                    alt107=1;
+                if ( (LA105_0==82) ) {
+                    alt105=1;
                 }
 
 
-                switch (alt107) {
+                switch (alt105) {
             	case 1 :
-            	    // InternalSignalDSL.g:12582:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    // InternalSignalDSL.g:13169:3: rule__XBasicForLoopExpression__Group_3_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XBasicForLoopExpression__Group_3_1__0();
@@ -41988,7 +43912,7 @@
             	    break;
 
             	default :
-            	    break loop107;
+            	    break loop105;
                 }
             } while (true);
 
@@ -42017,14 +43941,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0"
-    // InternalSignalDSL.g:12591:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
+    // InternalSignalDSL.g:13178:1: rule__XBasicForLoopExpression__Group_3_1__0 : rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 ;
     public final void rule__XBasicForLoopExpression__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12595:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
-            // InternalSignalDSL.g:12596:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            // InternalSignalDSL.g:13182:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalSignalDSL.g:13183:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
             {
             pushFollow(FOLLOW_91);
             rule__XBasicForLoopExpression__Group_3_1__0__Impl();
@@ -42055,22 +43979,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:12603:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:13190:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
     public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12607:1: ( ( ',' ) )
-            // InternalSignalDSL.g:12608:1: ( ',' )
+            // InternalSignalDSL.g:13194:1: ( ( ',' ) )
+            // InternalSignalDSL.g:13195:1: ( ',' )
             {
-            // InternalSignalDSL.g:12608:1: ( ',' )
-            // InternalSignalDSL.g:12609:2: ','
+            // InternalSignalDSL.g:13195:1: ( ',' )
+            // InternalSignalDSL.g:13196:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
             }
@@ -42096,14 +44020,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1"
-    // InternalSignalDSL.g:12618:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:13205:1: rule__XBasicForLoopExpression__Group_3_1__1 : rule__XBasicForLoopExpression__Group_3_1__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12622:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:12623:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
+            // InternalSignalDSL.g:13209:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:13210:2: rule__XBasicForLoopExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_3_1__1__Impl();
@@ -42129,23 +44053,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:12629:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:13216:1: rule__XBasicForLoopExpression__Group_3_1__1__Impl : ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12633:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:12634:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:13220:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:13221:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:12634:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:12635:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalSignalDSL.g:13221:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:13222:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:12636:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
-            // InternalSignalDSL.g:12636:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
+            // InternalSignalDSL.g:13223:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalSignalDSL.g:13223:3: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1();
@@ -42180,14 +44104,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0"
-    // InternalSignalDSL.g:12645:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
+    // InternalSignalDSL.g:13232:1: rule__XBasicForLoopExpression__Group_7__0 : rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 ;
     public final void rule__XBasicForLoopExpression__Group_7__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12649:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
-            // InternalSignalDSL.g:12650:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            // InternalSignalDSL.g:13236:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalSignalDSL.g:13237:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
             {
             pushFollow(FOLLOW_33);
             rule__XBasicForLoopExpression__Group_7__0__Impl();
@@ -42218,23 +44142,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__0__Impl"
-    // InternalSignalDSL.g:12657:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
+    // InternalSignalDSL.g:13244:1: rule__XBasicForLoopExpression__Group_7__0__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_7__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12661:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
-            // InternalSignalDSL.g:12662:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalSignalDSL.g:13248:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalSignalDSL.g:13249:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
             {
-            // InternalSignalDSL.g:12662:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
-            // InternalSignalDSL.g:12663:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalSignalDSL.g:13249:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalSignalDSL.g:13250:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
             }
-            // InternalSignalDSL.g:12664:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
-            // InternalSignalDSL.g:12664:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
+            // InternalSignalDSL.g:13251:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalSignalDSL.g:13251:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0();
@@ -42269,14 +44193,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1"
-    // InternalSignalDSL.g:12672:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
+    // InternalSignalDSL.g:13259:1: rule__XBasicForLoopExpression__Group_7__1 : rule__XBasicForLoopExpression__Group_7__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_7__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12676:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
-            // InternalSignalDSL.g:12677:2: rule__XBasicForLoopExpression__Group_7__1__Impl
+            // InternalSignalDSL.g:13263:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalSignalDSL.g:13264:2: rule__XBasicForLoopExpression__Group_7__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7__1__Impl();
@@ -42302,35 +44226,35 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7__1__Impl"
-    // InternalSignalDSL.g:12683:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
+    // InternalSignalDSL.g:13270:1: rule__XBasicForLoopExpression__Group_7__1__Impl : ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) ;
     public final void rule__XBasicForLoopExpression__Group_7__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12687:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
-            // InternalSignalDSL.g:12688:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalSignalDSL.g:13274:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalSignalDSL.g:13275:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
             {
-            // InternalSignalDSL.g:12688:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
-            // InternalSignalDSL.g:12689:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            // InternalSignalDSL.g:13275:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalSignalDSL.g:13276:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
             }
-            // InternalSignalDSL.g:12690:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
-            loop108:
+            // InternalSignalDSL.g:13277:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            loop106:
             do {
-                int alt108=2;
-                int LA108_0 = input.LA(1);
+                int alt106=2;
+                int LA106_0 = input.LA(1);
 
-                if ( (LA108_0==73) ) {
-                    alt108=1;
+                if ( (LA106_0==82) ) {
+                    alt106=1;
                 }
 
 
-                switch (alt108) {
+                switch (alt106) {
             	case 1 :
-            	    // InternalSignalDSL.g:12690:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    // InternalSignalDSL.g:13277:3: rule__XBasicForLoopExpression__Group_7_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XBasicForLoopExpression__Group_7_1__0();
@@ -42342,7 +44266,7 @@
             	    break;
 
             	default :
-            	    break loop108;
+            	    break loop106;
                 }
             } while (true);
 
@@ -42371,14 +44295,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0"
-    // InternalSignalDSL.g:12699:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
+    // InternalSignalDSL.g:13286:1: rule__XBasicForLoopExpression__Group_7_1__0 : rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 ;
     public final void rule__XBasicForLoopExpression__Group_7_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12703:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
-            // InternalSignalDSL.g:12704:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            // InternalSignalDSL.g:13290:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalSignalDSL.g:13291:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XBasicForLoopExpression__Group_7_1__0__Impl();
@@ -42409,22 +44333,22 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__0__Impl"
-    // InternalSignalDSL.g:12711:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:13298:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
     public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12715:1: ( ( ',' ) )
-            // InternalSignalDSL.g:12716:1: ( ',' )
+            // InternalSignalDSL.g:13302:1: ( ( ',' ) )
+            // InternalSignalDSL.g:13303:1: ( ',' )
             {
-            // InternalSignalDSL.g:12716:1: ( ',' )
-            // InternalSignalDSL.g:12717:2: ','
+            // InternalSignalDSL.g:13303:1: ( ',' )
+            // InternalSignalDSL.g:13304:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
             }
@@ -42450,14 +44374,14 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1"
-    // InternalSignalDSL.g:12726:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
+    // InternalSignalDSL.g:13313:1: rule__XBasicForLoopExpression__Group_7_1__1 : rule__XBasicForLoopExpression__Group_7_1__1__Impl ;
     public final void rule__XBasicForLoopExpression__Group_7_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12730:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
-            // InternalSignalDSL.g:12731:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
+            // InternalSignalDSL.g:13317:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalSignalDSL.g:13318:2: rule__XBasicForLoopExpression__Group_7_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__Group_7_1__1__Impl();
@@ -42483,23 +44407,23 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__Group_7_1__1__Impl"
-    // InternalSignalDSL.g:12737:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
+    // InternalSignalDSL.g:13324:1: rule__XBasicForLoopExpression__Group_7_1__1__Impl : ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) ;
     public final void rule__XBasicForLoopExpression__Group_7_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12741:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
-            // InternalSignalDSL.g:12742:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalSignalDSL.g:13328:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalSignalDSL.g:13329:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
             {
-            // InternalSignalDSL.g:12742:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
-            // InternalSignalDSL.g:12743:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalSignalDSL.g:13329:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalSignalDSL.g:13330:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
             }
-            // InternalSignalDSL.g:12744:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
-            // InternalSignalDSL.g:12744:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
+            // InternalSignalDSL.g:13331:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalSignalDSL.g:13331:3: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1();
@@ -42534,14 +44458,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0"
-    // InternalSignalDSL.g:12753:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
+    // InternalSignalDSL.g:13340:1: rule__XWhileExpression__Group__0 : rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 ;
     public final void rule__XWhileExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12757:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
-            // InternalSignalDSL.g:12758:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            // InternalSignalDSL.g:13344:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalSignalDSL.g:13345:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
             {
             pushFollow(FOLLOW_92);
             rule__XWhileExpression__Group__0__Impl();
@@ -42572,23 +44496,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__0__Impl"
-    // InternalSignalDSL.g:12765:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13352:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12769:1: ( ( () ) )
-            // InternalSignalDSL.g:12770:1: ( () )
+            // InternalSignalDSL.g:13356:1: ( ( () ) )
+            // InternalSignalDSL.g:13357:1: ( () )
             {
-            // InternalSignalDSL.g:12770:1: ( () )
-            // InternalSignalDSL.g:12771:2: ()
+            // InternalSignalDSL.g:13357:1: ( () )
+            // InternalSignalDSL.g:13358:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:12772:2: ()
-            // InternalSignalDSL.g:12772:3: 
+            // InternalSignalDSL.g:13359:2: ()
+            // InternalSignalDSL.g:13359:3: 
             {
             }
 
@@ -42613,14 +44537,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1"
-    // InternalSignalDSL.g:12780:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
+    // InternalSignalDSL.g:13367:1: rule__XWhileExpression__Group__1 : rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 ;
     public final void rule__XWhileExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12784:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
-            // InternalSignalDSL.g:12785:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            // InternalSignalDSL.g:13371:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalSignalDSL.g:13372:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
             {
             pushFollow(FOLLOW_31);
             rule__XWhileExpression__Group__1__Impl();
@@ -42651,22 +44575,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__1__Impl"
-    // InternalSignalDSL.g:12792:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    // InternalSignalDSL.g:13379:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
     public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12796:1: ( ( 'while' ) )
-            // InternalSignalDSL.g:12797:1: ( 'while' )
+            // InternalSignalDSL.g:13383:1: ( ( 'while' ) )
+            // InternalSignalDSL.g:13384:1: ( 'while' )
             {
-            // InternalSignalDSL.g:12797:1: ( 'while' )
-            // InternalSignalDSL.g:12798:2: 'while'
+            // InternalSignalDSL.g:13384:1: ( 'while' )
+            // InternalSignalDSL.g:13385:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
             }
@@ -42692,14 +44616,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2"
-    // InternalSignalDSL.g:12807:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
+    // InternalSignalDSL.g:13394:1: rule__XWhileExpression__Group__2 : rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 ;
     public final void rule__XWhileExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12811:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
-            // InternalSignalDSL.g:12812:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            // InternalSignalDSL.g:13398:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalSignalDSL.g:13399:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
             {
             pushFollow(FOLLOW_35);
             rule__XWhileExpression__Group__2__Impl();
@@ -42730,22 +44654,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__2__Impl"
-    // InternalSignalDSL.g:12819:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:13406:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
     public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12823:1: ( ( '(' ) )
-            // InternalSignalDSL.g:12824:1: ( '(' )
+            // InternalSignalDSL.g:13410:1: ( ( '(' ) )
+            // InternalSignalDSL.g:13411:1: ( '(' )
             {
-            // InternalSignalDSL.g:12824:1: ( '(' )
-            // InternalSignalDSL.g:12825:2: '('
+            // InternalSignalDSL.g:13411:1: ( '(' )
+            // InternalSignalDSL.g:13412:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -42771,14 +44695,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3"
-    // InternalSignalDSL.g:12834:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
+    // InternalSignalDSL.g:13421:1: rule__XWhileExpression__Group__3 : rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 ;
     public final void rule__XWhileExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12838:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
-            // InternalSignalDSL.g:12839:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            // InternalSignalDSL.g:13425:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalSignalDSL.g:13426:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
             {
             pushFollow(FOLLOW_80);
             rule__XWhileExpression__Group__3__Impl();
@@ -42809,23 +44733,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__3__Impl"
-    // InternalSignalDSL.g:12846:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    // InternalSignalDSL.g:13433:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
     public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12850:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
-            // InternalSignalDSL.g:12851:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalSignalDSL.g:13437:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalSignalDSL.g:13438:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
             {
-            // InternalSignalDSL.g:12851:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
-            // InternalSignalDSL.g:12852:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalSignalDSL.g:13438:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalSignalDSL.g:13439:2: ( rule__XWhileExpression__PredicateAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
             }
-            // InternalSignalDSL.g:12853:2: ( rule__XWhileExpression__PredicateAssignment_3 )
-            // InternalSignalDSL.g:12853:3: rule__XWhileExpression__PredicateAssignment_3
+            // InternalSignalDSL.g:13440:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalSignalDSL.g:13440:3: rule__XWhileExpression__PredicateAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__PredicateAssignment_3();
@@ -42860,14 +44784,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4"
-    // InternalSignalDSL.g:12861:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
+    // InternalSignalDSL.g:13448:1: rule__XWhileExpression__Group__4 : rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 ;
     public final void rule__XWhileExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12865:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
-            // InternalSignalDSL.g:12866:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            // InternalSignalDSL.g:13452:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalSignalDSL.g:13453:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
             {
             pushFollow(FOLLOW_35);
             rule__XWhileExpression__Group__4__Impl();
@@ -42898,22 +44822,22 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__4__Impl"
-    // InternalSignalDSL.g:12873:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:13460:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
     public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12877:1: ( ( ')' ) )
-            // InternalSignalDSL.g:12878:1: ( ')' )
+            // InternalSignalDSL.g:13464:1: ( ( ')' ) )
+            // InternalSignalDSL.g:13465:1: ( ')' )
             {
-            // InternalSignalDSL.g:12878:1: ( ')' )
-            // InternalSignalDSL.g:12879:2: ')'
+            // InternalSignalDSL.g:13465:1: ( ')' )
+            // InternalSignalDSL.g:13466:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
             }
@@ -42939,14 +44863,14 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5"
-    // InternalSignalDSL.g:12888:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    // InternalSignalDSL.g:13475:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
     public final void rule__XWhileExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12892:1: ( rule__XWhileExpression__Group__5__Impl )
-            // InternalSignalDSL.g:12893:2: rule__XWhileExpression__Group__5__Impl
+            // InternalSignalDSL.g:13479:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalSignalDSL.g:13480:2: rule__XWhileExpression__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__Group__5__Impl();
@@ -42972,23 +44896,23 @@
 
 
     // $ANTLR start "rule__XWhileExpression__Group__5__Impl"
-    // InternalSignalDSL.g:12899:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    // InternalSignalDSL.g:13486:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
     public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12903:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
-            // InternalSignalDSL.g:12904:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalSignalDSL.g:13490:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalSignalDSL.g:13491:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
             {
-            // InternalSignalDSL.g:12904:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
-            // InternalSignalDSL.g:12905:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalSignalDSL.g:13491:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalSignalDSL.g:13492:2: ( rule__XWhileExpression__BodyAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
             }
-            // InternalSignalDSL.g:12906:2: ( rule__XWhileExpression__BodyAssignment_5 )
-            // InternalSignalDSL.g:12906:3: rule__XWhileExpression__BodyAssignment_5
+            // InternalSignalDSL.g:13493:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalSignalDSL.g:13493:3: rule__XWhileExpression__BodyAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XWhileExpression__BodyAssignment_5();
@@ -43023,14 +44947,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0"
-    // InternalSignalDSL.g:12915:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
+    // InternalSignalDSL.g:13502:1: rule__XDoWhileExpression__Group__0 : rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 ;
     public final void rule__XDoWhileExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12919:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
-            // InternalSignalDSL.g:12920:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            // InternalSignalDSL.g:13506:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalSignalDSL.g:13507:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
             {
             pushFollow(FOLLOW_93);
             rule__XDoWhileExpression__Group__0__Impl();
@@ -43061,23 +44985,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__0__Impl"
-    // InternalSignalDSL.g:12927:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13514:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
     public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12931:1: ( ( () ) )
-            // InternalSignalDSL.g:12932:1: ( () )
+            // InternalSignalDSL.g:13518:1: ( ( () ) )
+            // InternalSignalDSL.g:13519:1: ( () )
             {
-            // InternalSignalDSL.g:12932:1: ( () )
-            // InternalSignalDSL.g:12933:2: ()
+            // InternalSignalDSL.g:13519:1: ( () )
+            // InternalSignalDSL.g:13520:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:12934:2: ()
-            // InternalSignalDSL.g:12934:3: 
+            // InternalSignalDSL.g:13521:2: ()
+            // InternalSignalDSL.g:13521:3: 
             {
             }
 
@@ -43102,14 +45026,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1"
-    // InternalSignalDSL.g:12942:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
+    // InternalSignalDSL.g:13529:1: rule__XDoWhileExpression__Group__1 : rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 ;
     public final void rule__XDoWhileExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12946:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
-            // InternalSignalDSL.g:12947:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            // InternalSignalDSL.g:13533:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalSignalDSL.g:13534:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
             {
             pushFollow(FOLLOW_35);
             rule__XDoWhileExpression__Group__1__Impl();
@@ -43140,22 +45064,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__1__Impl"
-    // InternalSignalDSL.g:12954:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    // InternalSignalDSL.g:13541:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
     public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12958:1: ( ( 'do' ) )
-            // InternalSignalDSL.g:12959:1: ( 'do' )
+            // InternalSignalDSL.g:13545:1: ( ( 'do' ) )
+            // InternalSignalDSL.g:13546:1: ( 'do' )
             {
-            // InternalSignalDSL.g:12959:1: ( 'do' )
-            // InternalSignalDSL.g:12960:2: 'do'
+            // InternalSignalDSL.g:13546:1: ( 'do' )
+            // InternalSignalDSL.g:13547:2: 'do'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
-            match(input,86,FOLLOW_2); if (state.failed) return ;
+            match(input,95,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
             }
@@ -43181,14 +45105,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2"
-    // InternalSignalDSL.g:12969:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
+    // InternalSignalDSL.g:13556:1: rule__XDoWhileExpression__Group__2 : rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 ;
     public final void rule__XDoWhileExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12973:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
-            // InternalSignalDSL.g:12974:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            // InternalSignalDSL.g:13560:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalSignalDSL.g:13561:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
             {
             pushFollow(FOLLOW_92);
             rule__XDoWhileExpression__Group__2__Impl();
@@ -43219,23 +45143,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__2__Impl"
-    // InternalSignalDSL.g:12981:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    // InternalSignalDSL.g:13568:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
     public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:12985:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
-            // InternalSignalDSL.g:12986:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalSignalDSL.g:13572:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalSignalDSL.g:13573:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
             {
-            // InternalSignalDSL.g:12986:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
-            // InternalSignalDSL.g:12987:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalSignalDSL.g:13573:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalSignalDSL.g:13574:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
             }
-            // InternalSignalDSL.g:12988:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
-            // InternalSignalDSL.g:12988:3: rule__XDoWhileExpression__BodyAssignment_2
+            // InternalSignalDSL.g:13575:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalSignalDSL.g:13575:3: rule__XDoWhileExpression__BodyAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__BodyAssignment_2();
@@ -43270,14 +45194,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3"
-    // InternalSignalDSL.g:12996:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
+    // InternalSignalDSL.g:13583:1: rule__XDoWhileExpression__Group__3 : rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 ;
     public final void rule__XDoWhileExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13000:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
-            // InternalSignalDSL.g:13001:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            // InternalSignalDSL.g:13587:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalSignalDSL.g:13588:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
             {
             pushFollow(FOLLOW_31);
             rule__XDoWhileExpression__Group__3__Impl();
@@ -43308,22 +45232,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__3__Impl"
-    // InternalSignalDSL.g:13008:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    // InternalSignalDSL.g:13595:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
     public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13012:1: ( ( 'while' ) )
-            // InternalSignalDSL.g:13013:1: ( 'while' )
+            // InternalSignalDSL.g:13599:1: ( ( 'while' ) )
+            // InternalSignalDSL.g:13600:1: ( 'while' )
             {
-            // InternalSignalDSL.g:13013:1: ( 'while' )
-            // InternalSignalDSL.g:13014:2: 'while'
+            // InternalSignalDSL.g:13600:1: ( 'while' )
+            // InternalSignalDSL.g:13601:2: 'while'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
-            match(input,85,FOLLOW_2); if (state.failed) return ;
+            match(input,94,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
             }
@@ -43349,14 +45273,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4"
-    // InternalSignalDSL.g:13023:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
+    // InternalSignalDSL.g:13610:1: rule__XDoWhileExpression__Group__4 : rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 ;
     public final void rule__XDoWhileExpression__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13027:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
-            // InternalSignalDSL.g:13028:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            // InternalSignalDSL.g:13614:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalSignalDSL.g:13615:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
             {
             pushFollow(FOLLOW_35);
             rule__XDoWhileExpression__Group__4__Impl();
@@ -43387,22 +45311,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__4__Impl"
-    // InternalSignalDSL.g:13035:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:13622:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
     public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13039:1: ( ( '(' ) )
-            // InternalSignalDSL.g:13040:1: ( '(' )
+            // InternalSignalDSL.g:13626:1: ( ( '(' ) )
+            // InternalSignalDSL.g:13627:1: ( '(' )
             {
-            // InternalSignalDSL.g:13040:1: ( '(' )
-            // InternalSignalDSL.g:13041:2: '('
+            // InternalSignalDSL.g:13627:1: ( '(' )
+            // InternalSignalDSL.g:13628:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
             }
@@ -43428,14 +45352,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5"
-    // InternalSignalDSL.g:13050:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
+    // InternalSignalDSL.g:13637:1: rule__XDoWhileExpression__Group__5 : rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 ;
     public final void rule__XDoWhileExpression__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13054:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
-            // InternalSignalDSL.g:13055:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            // InternalSignalDSL.g:13641:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalSignalDSL.g:13642:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
             {
             pushFollow(FOLLOW_80);
             rule__XDoWhileExpression__Group__5__Impl();
@@ -43466,23 +45390,23 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__5__Impl"
-    // InternalSignalDSL.g:13062:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    // InternalSignalDSL.g:13649:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
     public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13066:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
-            // InternalSignalDSL.g:13067:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalSignalDSL.g:13653:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalSignalDSL.g:13654:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
             {
-            // InternalSignalDSL.g:13067:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
-            // InternalSignalDSL.g:13068:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalSignalDSL.g:13654:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalSignalDSL.g:13655:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
             }
-            // InternalSignalDSL.g:13069:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
-            // InternalSignalDSL.g:13069:3: rule__XDoWhileExpression__PredicateAssignment_5
+            // InternalSignalDSL.g:13656:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalSignalDSL.g:13656:3: rule__XDoWhileExpression__PredicateAssignment_5
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__PredicateAssignment_5();
@@ -43517,14 +45441,14 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6"
-    // InternalSignalDSL.g:13077:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    // InternalSignalDSL.g:13664:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
     public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13081:1: ( rule__XDoWhileExpression__Group__6__Impl )
-            // InternalSignalDSL.g:13082:2: rule__XDoWhileExpression__Group__6__Impl
+            // InternalSignalDSL.g:13668:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalSignalDSL.g:13669:2: rule__XDoWhileExpression__Group__6__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XDoWhileExpression__Group__6__Impl();
@@ -43550,22 +45474,22 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__Group__6__Impl"
-    // InternalSignalDSL.g:13088:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:13675:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
     public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13092:1: ( ( ')' ) )
-            // InternalSignalDSL.g:13093:1: ( ')' )
+            // InternalSignalDSL.g:13679:1: ( ( ')' ) )
+            // InternalSignalDSL.g:13680:1: ( ')' )
             {
-            // InternalSignalDSL.g:13093:1: ( ')' )
-            // InternalSignalDSL.g:13094:2: ')'
+            // InternalSignalDSL.g:13680:1: ( ')' )
+            // InternalSignalDSL.g:13681:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
             }
@@ -43591,16 +45515,16 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0"
-    // InternalSignalDSL.g:13104:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
+    // InternalSignalDSL.g:13691:1: rule__XBlockExpression__Group__0 : rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 ;
     public final void rule__XBlockExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13108:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
-            // InternalSignalDSL.g:13109:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            // InternalSignalDSL.g:13695:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalSignalDSL.g:13696:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
             {
-            pushFollow(FOLLOW_8);
+            pushFollow(FOLLOW_7);
             rule__XBlockExpression__Group__0__Impl();
 
             state._fsp--;
@@ -43629,23 +45553,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__0__Impl"
-    // InternalSignalDSL.g:13116:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13703:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
     public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13120:1: ( ( () ) )
-            // InternalSignalDSL.g:13121:1: ( () )
+            // InternalSignalDSL.g:13707:1: ( ( () ) )
+            // InternalSignalDSL.g:13708:1: ( () )
             {
-            // InternalSignalDSL.g:13121:1: ( () )
-            // InternalSignalDSL.g:13122:2: ()
+            // InternalSignalDSL.g:13708:1: ( () )
+            // InternalSignalDSL.g:13709:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:13123:2: ()
-            // InternalSignalDSL.g:13123:3: 
+            // InternalSignalDSL.g:13710:2: ()
+            // InternalSignalDSL.g:13710:3: 
             {
             }
 
@@ -43670,14 +45594,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1"
-    // InternalSignalDSL.g:13131:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
+    // InternalSignalDSL.g:13718:1: rule__XBlockExpression__Group__1 : rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 ;
     public final void rule__XBlockExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13135:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
-            // InternalSignalDSL.g:13136:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            // InternalSignalDSL.g:13722:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalSignalDSL.g:13723:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
             {
             pushFollow(FOLLOW_94);
             rule__XBlockExpression__Group__1__Impl();
@@ -43708,22 +45632,22 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__1__Impl"
-    // InternalSignalDSL.g:13143:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    // InternalSignalDSL.g:13730:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
     public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13147:1: ( ( '{' ) )
-            // InternalSignalDSL.g:13148:1: ( '{' )
+            // InternalSignalDSL.g:13734:1: ( ( '{' ) )
+            // InternalSignalDSL.g:13735:1: ( '{' )
             {
-            // InternalSignalDSL.g:13148:1: ( '{' )
-            // InternalSignalDSL.g:13149:2: '{'
+            // InternalSignalDSL.g:13735:1: ( '{' )
+            // InternalSignalDSL.g:13736:2: '{'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
             }
-            match(input,60,FOLLOW_2); if (state.failed) return ;
+            match(input,63,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
             }
@@ -43749,14 +45673,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2"
-    // InternalSignalDSL.g:13158:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
+    // InternalSignalDSL.g:13745:1: rule__XBlockExpression__Group__2 : rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 ;
     public final void rule__XBlockExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13162:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
-            // InternalSignalDSL.g:13163:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            // InternalSignalDSL.g:13749:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalSignalDSL.g:13750:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
             {
             pushFollow(FOLLOW_94);
             rule__XBlockExpression__Group__2__Impl();
@@ -43787,35 +45711,35 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__2__Impl"
-    // InternalSignalDSL.g:13170:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
+    // InternalSignalDSL.g:13757:1: rule__XBlockExpression__Group__2__Impl : ( ( rule__XBlockExpression__Group_2__0 )* ) ;
     public final void rule__XBlockExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13174:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
-            // InternalSignalDSL.g:13175:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalSignalDSL.g:13761:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalSignalDSL.g:13762:1: ( ( rule__XBlockExpression__Group_2__0 )* )
             {
-            // InternalSignalDSL.g:13175:1: ( ( rule__XBlockExpression__Group_2__0 )* )
-            // InternalSignalDSL.g:13176:2: ( rule__XBlockExpression__Group_2__0 )*
+            // InternalSignalDSL.g:13762:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalSignalDSL.g:13763:2: ( rule__XBlockExpression__Group_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
             }
-            // InternalSignalDSL.g:13177:2: ( rule__XBlockExpression__Group_2__0 )*
-            loop109:
+            // InternalSignalDSL.g:13764:2: ( rule__XBlockExpression__Group_2__0 )*
+            loop107:
             do {
-                int alt109=2;
-                int LA109_0 = input.LA(1);
+                int alt107=2;
+                int LA107_0 = input.LA(1);
 
-                if ( ((LA109_0>=RULE_ID && LA109_0<=RULE_STRING)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=44 && LA109_0<=50)||LA109_0==60||LA109_0==64||LA109_0==71||(LA109_0>=75 && LA109_0<=76)||LA109_0==79||LA109_0==81||(LA109_0>=85 && LA109_0<=92)||LA109_0==94||(LA109_0>=102 && LA109_0<=103)) ) {
-                    alt109=1;
+                if ( ((LA107_0>=RULE_ID && LA107_0<=RULE_STRING)||LA107_0==27||(LA107_0>=34 && LA107_0<=35)||LA107_0==40||(LA107_0>=44 && LA107_0<=50)||LA107_0==63||LA107_0==80||(LA107_0>=84 && LA107_0<=85)||LA107_0==88||LA107_0==90||(LA107_0>=93 && LA107_0<=101)||LA107_0==103||(LA107_0>=111 && LA107_0<=112)) ) {
+                    alt107=1;
                 }
 
 
-                switch (alt109) {
+                switch (alt107) {
             	case 1 :
-            	    // InternalSignalDSL.g:13177:3: rule__XBlockExpression__Group_2__0
+            	    // InternalSignalDSL.g:13764:3: rule__XBlockExpression__Group_2__0
             	    {
             	    pushFollow(FOLLOW_79);
             	    rule__XBlockExpression__Group_2__0();
@@ -43827,7 +45751,7 @@
             	    break;
 
             	default :
-            	    break loop109;
+            	    break loop107;
                 }
             } while (true);
 
@@ -43856,14 +45780,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3"
-    // InternalSignalDSL.g:13185:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:13772:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
     public final void rule__XBlockExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13189:1: ( rule__XBlockExpression__Group__3__Impl )
-            // InternalSignalDSL.g:13190:2: rule__XBlockExpression__Group__3__Impl
+            // InternalSignalDSL.g:13776:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalSignalDSL.g:13777:2: rule__XBlockExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group__3__Impl();
@@ -43889,22 +45813,22 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group__3__Impl"
-    // InternalSignalDSL.g:13196:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    // InternalSignalDSL.g:13783:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
     public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13200:1: ( ( '}' ) )
-            // InternalSignalDSL.g:13201:1: ( '}' )
+            // InternalSignalDSL.g:13787:1: ( ( '}' ) )
+            // InternalSignalDSL.g:13788:1: ( '}' )
             {
-            // InternalSignalDSL.g:13201:1: ( '}' )
-            // InternalSignalDSL.g:13202:2: '}'
+            // InternalSignalDSL.g:13788:1: ( '}' )
+            // InternalSignalDSL.g:13789:2: '}'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
             }
-            match(input,61,FOLLOW_2); if (state.failed) return ;
+            match(input,64,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
             }
@@ -43930,14 +45854,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0"
-    // InternalSignalDSL.g:13212:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
+    // InternalSignalDSL.g:13799:1: rule__XBlockExpression__Group_2__0 : rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 ;
     public final void rule__XBlockExpression__Group_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13216:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
-            // InternalSignalDSL.g:13217:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            // InternalSignalDSL.g:13803:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalSignalDSL.g:13804:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
             {
             pushFollow(FOLLOW_27);
             rule__XBlockExpression__Group_2__0__Impl();
@@ -43968,23 +45892,23 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__0__Impl"
-    // InternalSignalDSL.g:13224:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
+    // InternalSignalDSL.g:13811:1: rule__XBlockExpression__Group_2__0__Impl : ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) ;
     public final void rule__XBlockExpression__Group_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13228:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
-            // InternalSignalDSL.g:13229:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalSignalDSL.g:13815:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalSignalDSL.g:13816:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
             {
-            // InternalSignalDSL.g:13229:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
-            // InternalSignalDSL.g:13230:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalSignalDSL.g:13816:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalSignalDSL.g:13817:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
             }
-            // InternalSignalDSL.g:13231:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
-            // InternalSignalDSL.g:13231:3: rule__XBlockExpression__ExpressionsAssignment_2_0
+            // InternalSignalDSL.g:13818:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalSignalDSL.g:13818:3: rule__XBlockExpression__ExpressionsAssignment_2_0
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__ExpressionsAssignment_2_0();
@@ -44019,14 +45943,14 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1"
-    // InternalSignalDSL.g:13239:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
+    // InternalSignalDSL.g:13826:1: rule__XBlockExpression__Group_2__1 : rule__XBlockExpression__Group_2__1__Impl ;
     public final void rule__XBlockExpression__Group_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13243:1: ( rule__XBlockExpression__Group_2__1__Impl )
-            // InternalSignalDSL.g:13244:2: rule__XBlockExpression__Group_2__1__Impl
+            // InternalSignalDSL.g:13830:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalSignalDSL.g:13831:2: rule__XBlockExpression__Group_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBlockExpression__Group_2__1__Impl();
@@ -44052,33 +45976,33 @@
 
 
     // $ANTLR start "rule__XBlockExpression__Group_2__1__Impl"
-    // InternalSignalDSL.g:13250:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    // InternalSignalDSL.g:13837:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
     public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13254:1: ( ( ( ';' )? ) )
-            // InternalSignalDSL.g:13255:1: ( ( ';' )? )
+            // InternalSignalDSL.g:13841:1: ( ( ( ';' )? ) )
+            // InternalSignalDSL.g:13842:1: ( ( ';' )? )
             {
-            // InternalSignalDSL.g:13255:1: ( ( ';' )? )
-            // InternalSignalDSL.g:13256:2: ( ';' )?
+            // InternalSignalDSL.g:13842:1: ( ( ';' )? )
+            // InternalSignalDSL.g:13843:2: ( ';' )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
             }
-            // InternalSignalDSL.g:13257:2: ( ';' )?
-            int alt110=2;
-            int LA110_0 = input.LA(1);
+            // InternalSignalDSL.g:13844:2: ( ';' )?
+            int alt108=2;
+            int LA108_0 = input.LA(1);
 
-            if ( (LA110_0==69) ) {
-                alt110=1;
+            if ( (LA108_0==78) ) {
+                alt108=1;
             }
-            switch (alt110) {
+            switch (alt108) {
                 case 1 :
-                    // InternalSignalDSL.g:13257:3: ';'
+                    // InternalSignalDSL.g:13844:3: ';'
                     {
-                    match(input,69,FOLLOW_2); if (state.failed) return ;
+                    match(input,78,FOLLOW_2); if (state.failed) return ;
 
                     }
                     break;
@@ -44110,14 +46034,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0"
-    // InternalSignalDSL.g:13266:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
+    // InternalSignalDSL.g:13853:1: rule__XVariableDeclaration__Group__0 : rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 ;
     public final void rule__XVariableDeclaration__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13270:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
-            // InternalSignalDSL.g:13271:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            // InternalSignalDSL.g:13857:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalSignalDSL.g:13858:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
             {
             pushFollow(FOLLOW_95);
             rule__XVariableDeclaration__Group__0__Impl();
@@ -44148,23 +46072,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__0__Impl"
-    // InternalSignalDSL.g:13278:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:13865:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
     public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13282:1: ( ( () ) )
-            // InternalSignalDSL.g:13283:1: ( () )
+            // InternalSignalDSL.g:13869:1: ( ( () ) )
+            // InternalSignalDSL.g:13870:1: ( () )
             {
-            // InternalSignalDSL.g:13283:1: ( () )
-            // InternalSignalDSL.g:13284:2: ()
+            // InternalSignalDSL.g:13870:1: ( () )
+            // InternalSignalDSL.g:13871:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
             }
-            // InternalSignalDSL.g:13285:2: ()
-            // InternalSignalDSL.g:13285:3: 
+            // InternalSignalDSL.g:13872:2: ()
+            // InternalSignalDSL.g:13872:3: 
             {
             }
 
@@ -44189,14 +46113,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1"
-    // InternalSignalDSL.g:13293:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
+    // InternalSignalDSL.g:13880:1: rule__XVariableDeclaration__Group__1 : rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 ;
     public final void rule__XVariableDeclaration__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13297:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
-            // InternalSignalDSL.g:13298:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            // InternalSignalDSL.g:13884:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalSignalDSL.g:13885:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
             {
             pushFollow(FOLLOW_52);
             rule__XVariableDeclaration__Group__1__Impl();
@@ -44227,23 +46151,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__1__Impl"
-    // InternalSignalDSL.g:13305:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    // InternalSignalDSL.g:13892:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
     public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13309:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
-            // InternalSignalDSL.g:13310:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalSignalDSL.g:13896:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalSignalDSL.g:13897:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
             {
-            // InternalSignalDSL.g:13310:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
-            // InternalSignalDSL.g:13311:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalSignalDSL.g:13897:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalSignalDSL.g:13898:2: ( rule__XVariableDeclaration__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:13312:2: ( rule__XVariableDeclaration__Alternatives_1 )
-            // InternalSignalDSL.g:13312:3: rule__XVariableDeclaration__Alternatives_1
+            // InternalSignalDSL.g:13899:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalSignalDSL.g:13899:3: rule__XVariableDeclaration__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_1();
@@ -44278,14 +46202,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2"
-    // InternalSignalDSL.g:13320:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
+    // InternalSignalDSL.g:13907:1: rule__XVariableDeclaration__Group__2 : rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 ;
     public final void rule__XVariableDeclaration__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13324:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
-            // InternalSignalDSL.g:13325:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            // InternalSignalDSL.g:13911:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalSignalDSL.g:13912:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
             {
             pushFollow(FOLLOW_36);
             rule__XVariableDeclaration__Group__2__Impl();
@@ -44316,23 +46240,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__2__Impl"
-    // InternalSignalDSL.g:13332:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    // InternalSignalDSL.g:13919:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
     public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13336:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
-            // InternalSignalDSL.g:13337:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:13923:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalSignalDSL.g:13924:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
             {
-            // InternalSignalDSL.g:13337:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
-            // InternalSignalDSL.g:13338:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:13924:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalSignalDSL.g:13925:2: ( rule__XVariableDeclaration__Alternatives_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:13339:2: ( rule__XVariableDeclaration__Alternatives_2 )
-            // InternalSignalDSL.g:13339:3: rule__XVariableDeclaration__Alternatives_2
+            // InternalSignalDSL.g:13926:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalSignalDSL.g:13926:3: rule__XVariableDeclaration__Alternatives_2
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Alternatives_2();
@@ -44367,14 +46291,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3"
-    // InternalSignalDSL.g:13347:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    // InternalSignalDSL.g:13934:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
     public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13351:1: ( rule__XVariableDeclaration__Group__3__Impl )
-            // InternalSignalDSL.g:13352:2: rule__XVariableDeclaration__Group__3__Impl
+            // InternalSignalDSL.g:13938:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalSignalDSL.g:13939:2: rule__XVariableDeclaration__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group__3__Impl();
@@ -44400,31 +46324,31 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group__3__Impl"
-    // InternalSignalDSL.g:13358:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:13945:1: rule__XVariableDeclaration__Group__3__Impl : ( ( rule__XVariableDeclaration__Group_3__0 )? ) ;
     public final void rule__XVariableDeclaration__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13362:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
-            // InternalSignalDSL.g:13363:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalSignalDSL.g:13949:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalSignalDSL.g:13950:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:13363:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
-            // InternalSignalDSL.g:13364:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            // InternalSignalDSL.g:13950:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalSignalDSL.g:13951:2: ( rule__XVariableDeclaration__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:13365:2: ( rule__XVariableDeclaration__Group_3__0 )?
-            int alt111=2;
-            int LA111_0 = input.LA(1);
+            // InternalSignalDSL.g:13952:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
 
-            if ( (LA111_0==13) ) {
-                alt111=1;
+            if ( (LA109_0==13) ) {
+                alt109=1;
             }
-            switch (alt111) {
+            switch (alt109) {
                 case 1 :
-                    // InternalSignalDSL.g:13365:3: rule__XVariableDeclaration__Group_3__0
+                    // InternalSignalDSL.g:13952:3: rule__XVariableDeclaration__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XVariableDeclaration__Group_3__0();
@@ -44462,14 +46386,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0"
-    // InternalSignalDSL.g:13374:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
+    // InternalSignalDSL.g:13961:1: rule__XVariableDeclaration__Group_2_0__0 : rule__XVariableDeclaration__Group_2_0__0__Impl ;
     public final void rule__XVariableDeclaration__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13378:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
-            // InternalSignalDSL.g:13379:2: rule__XVariableDeclaration__Group_2_0__0__Impl
+            // InternalSignalDSL.g:13965:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalSignalDSL.g:13966:2: rule__XVariableDeclaration__Group_2_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0__0__Impl();
@@ -44495,23 +46419,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:13385:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
+    // InternalSignalDSL.g:13972:1: rule__XVariableDeclaration__Group_2_0__0__Impl : ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13389:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
-            // InternalSignalDSL.g:13390:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:13976:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalSignalDSL.g:13977:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
             {
-            // InternalSignalDSL.g:13390:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
-            // InternalSignalDSL.g:13391:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalSignalDSL.g:13977:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalSignalDSL.g:13978:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
             }
-            // InternalSignalDSL.g:13392:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
-            // InternalSignalDSL.g:13392:3: rule__XVariableDeclaration__Group_2_0_0__0
+            // InternalSignalDSL.g:13979:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalSignalDSL.g:13979:3: rule__XVariableDeclaration__Group_2_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__0();
@@ -44546,16 +46470,16 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0"
-    // InternalSignalDSL.g:13401:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
+    // InternalSignalDSL.g:13988:1: rule__XVariableDeclaration__Group_2_0_0__0 : rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 ;
     public final void rule__XVariableDeclaration__Group_2_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13405:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
-            // InternalSignalDSL.g:13406:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            // InternalSignalDSL.g:13992:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalSignalDSL.g:13993:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__XVariableDeclaration__Group_2_0_0__0__Impl();
 
             state._fsp--;
@@ -44584,23 +46508,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
-    // InternalSignalDSL.g:13413:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
+    // InternalSignalDSL.g:14000:1: rule__XVariableDeclaration__Group_2_0_0__0__Impl : ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13417:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
-            // InternalSignalDSL.g:13418:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalSignalDSL.g:14004:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalSignalDSL.g:14005:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
             {
-            // InternalSignalDSL.g:13418:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
-            // InternalSignalDSL.g:13419:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalSignalDSL.g:14005:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalSignalDSL.g:14006:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
             }
-            // InternalSignalDSL.g:13420:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
-            // InternalSignalDSL.g:13420:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
+            // InternalSignalDSL.g:14007:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalSignalDSL.g:14007:3: rule__XVariableDeclaration__TypeAssignment_2_0_0_0
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__TypeAssignment_2_0_0_0();
@@ -44635,14 +46559,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1"
-    // InternalSignalDSL.g:13428:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
+    // InternalSignalDSL.g:14015:1: rule__XVariableDeclaration__Group_2_0_0__1 : rule__XVariableDeclaration__Group_2_0_0__1__Impl ;
     public final void rule__XVariableDeclaration__Group_2_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13432:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
-            // InternalSignalDSL.g:13433:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
+            // InternalSignalDSL.g:14019:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalSignalDSL.g:14020:2: rule__XVariableDeclaration__Group_2_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_2_0_0__1__Impl();
@@ -44668,23 +46592,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__1__Impl"
-    // InternalSignalDSL.g:13439:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
+    // InternalSignalDSL.g:14026:1: rule__XVariableDeclaration__Group_2_0_0__1__Impl : ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) ;
     public final void rule__XVariableDeclaration__Group_2_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13443:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
-            // InternalSignalDSL.g:13444:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalSignalDSL.g:14030:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalSignalDSL.g:14031:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
             {
-            // InternalSignalDSL.g:13444:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
-            // InternalSignalDSL.g:13445:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalSignalDSL.g:14031:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalSignalDSL.g:14032:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
             }
-            // InternalSignalDSL.g:13446:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
-            // InternalSignalDSL.g:13446:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
+            // InternalSignalDSL.g:14033:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalSignalDSL.g:14033:3: rule__XVariableDeclaration__NameAssignment_2_0_0_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__NameAssignment_2_0_0_1();
@@ -44719,14 +46643,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0"
-    // InternalSignalDSL.g:13455:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
+    // InternalSignalDSL.g:14042:1: rule__XVariableDeclaration__Group_3__0 : rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 ;
     public final void rule__XVariableDeclaration__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13459:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
-            // InternalSignalDSL.g:13460:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            // InternalSignalDSL.g:14046:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalSignalDSL.g:14047:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
             {
             pushFollow(FOLLOW_35);
             rule__XVariableDeclaration__Group_3__0__Impl();
@@ -44757,17 +46681,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__0__Impl"
-    // InternalSignalDSL.g:13467:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    // InternalSignalDSL.g:14054:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
     public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13471:1: ( ( '=' ) )
-            // InternalSignalDSL.g:13472:1: ( '=' )
+            // InternalSignalDSL.g:14058:1: ( ( '=' ) )
+            // InternalSignalDSL.g:14059:1: ( '=' )
             {
-            // InternalSignalDSL.g:13472:1: ( '=' )
-            // InternalSignalDSL.g:13473:2: '='
+            // InternalSignalDSL.g:14059:1: ( '=' )
+            // InternalSignalDSL.g:14060:2: '='
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0()); 
@@ -44798,14 +46722,14 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1"
-    // InternalSignalDSL.g:13482:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
+    // InternalSignalDSL.g:14069:1: rule__XVariableDeclaration__Group_3__1 : rule__XVariableDeclaration__Group_3__1__Impl ;
     public final void rule__XVariableDeclaration__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13486:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
-            // InternalSignalDSL.g:13487:2: rule__XVariableDeclaration__Group_3__1__Impl
+            // InternalSignalDSL.g:14073:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalSignalDSL.g:14074:2: rule__XVariableDeclaration__Group_3__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__Group_3__1__Impl();
@@ -44831,23 +46755,23 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__Group_3__1__Impl"
-    // InternalSignalDSL.g:13493:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
+    // InternalSignalDSL.g:14080:1: rule__XVariableDeclaration__Group_3__1__Impl : ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) ;
     public final void rule__XVariableDeclaration__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13497:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
-            // InternalSignalDSL.g:13498:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalSignalDSL.g:14084:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalSignalDSL.g:14085:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
             {
-            // InternalSignalDSL.g:13498:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
-            // InternalSignalDSL.g:13499:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalSignalDSL.g:14085:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalSignalDSL.g:14086:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
             }
-            // InternalSignalDSL.g:13500:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
-            // InternalSignalDSL.g:13500:3: rule__XVariableDeclaration__RightAssignment_3_1
+            // InternalSignalDSL.g:14087:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalSignalDSL.g:14087:3: rule__XVariableDeclaration__RightAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XVariableDeclaration__RightAssignment_3_1();
@@ -44882,14 +46806,14 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0"
-    // InternalSignalDSL.g:13509:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
+    // InternalSignalDSL.g:14096:1: rule__JvmFormalParameter__Group__0 : rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 ;
     public final void rule__JvmFormalParameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13513:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
-            // InternalSignalDSL.g:13514:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            // InternalSignalDSL.g:14100:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalSignalDSL.g:14101:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__JvmFormalParameter__Group__0__Impl();
@@ -44920,38 +46844,38 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__0__Impl"
-    // InternalSignalDSL.g:13521:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    // InternalSignalDSL.g:14108:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
     public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13525:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
-            // InternalSignalDSL.g:13526:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalSignalDSL.g:14112:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalSignalDSL.g:14113:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
             {
-            // InternalSignalDSL.g:13526:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
-            // InternalSignalDSL.g:13527:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            // InternalSignalDSL.g:14113:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalSignalDSL.g:14114:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalSignalDSL.g:13528:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
-            int alt112=2;
-            int LA112_0 = input.LA(1);
+            // InternalSignalDSL.g:14115:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            int alt110=2;
+            int LA110_0 = input.LA(1);
 
-            if ( (LA112_0==RULE_ID) ) {
-                int LA112_1 = input.LA(2);
+            if ( (LA110_0==RULE_ID) ) {
+                int LA110_1 = input.LA(2);
 
-                if ( (LA112_1==RULE_ID||LA112_1==27||LA112_1==43||LA112_1==76) ) {
-                    alt112=1;
+                if ( (LA110_1==RULE_ID||LA110_1==27||LA110_1==43||LA110_1==85) ) {
+                    alt110=1;
                 }
             }
-            else if ( (LA112_0==31||LA112_0==71) ) {
-                alt112=1;
+            else if ( (LA110_0==31||LA110_0==80) ) {
+                alt110=1;
             }
-            switch (alt112) {
+            switch (alt110) {
                 case 1 :
-                    // InternalSignalDSL.g:13528:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
+                    // InternalSignalDSL.g:14115:3: rule__JvmFormalParameter__ParameterTypeAssignment_0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmFormalParameter__ParameterTypeAssignment_0();
@@ -44989,14 +46913,14 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1"
-    // InternalSignalDSL.g:13536:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    // InternalSignalDSL.g:14123:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
     public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13540:1: ( rule__JvmFormalParameter__Group__1__Impl )
-            // InternalSignalDSL.g:13541:2: rule__JvmFormalParameter__Group__1__Impl
+            // InternalSignalDSL.g:14127:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalSignalDSL.g:14128:2: rule__JvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__Group__1__Impl();
@@ -45022,23 +46946,23 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__Group__1__Impl"
-    // InternalSignalDSL.g:13547:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalSignalDSL.g:14134:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
     public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13551:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalSignalDSL.g:13552:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14138:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalSignalDSL.g:14139:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalSignalDSL.g:13552:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
-            // InternalSignalDSL.g:13553:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14139:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14140:2: ( rule__JvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalSignalDSL.g:13554:2: ( rule__JvmFormalParameter__NameAssignment_1 )
-            // InternalSignalDSL.g:13554:3: rule__JvmFormalParameter__NameAssignment_1
+            // InternalSignalDSL.g:14141:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14141:3: rule__JvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmFormalParameter__NameAssignment_1();
@@ -45073,16 +46997,16 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0"
-    // InternalSignalDSL.g:13563:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
+    // InternalSignalDSL.g:14150:1: rule__FullJvmFormalParameter__Group__0 : rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 ;
     public final void rule__FullJvmFormalParameter__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13567:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
-            // InternalSignalDSL.g:13568:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            // InternalSignalDSL.g:14154:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalSignalDSL.g:14155:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__FullJvmFormalParameter__Group__0__Impl();
 
             state._fsp--;
@@ -45111,23 +47035,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__0__Impl"
-    // InternalSignalDSL.g:13575:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    // InternalSignalDSL.g:14162:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
     public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13579:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
-            // InternalSignalDSL.g:13580:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalSignalDSL.g:14166:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalSignalDSL.g:14167:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
             {
-            // InternalSignalDSL.g:13580:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
-            // InternalSignalDSL.g:13581:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalSignalDSL.g:14167:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalSignalDSL.g:14168:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
             }
-            // InternalSignalDSL.g:13582:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
-            // InternalSignalDSL.g:13582:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
+            // InternalSignalDSL.g:14169:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalSignalDSL.g:14169:3: rule__FullJvmFormalParameter__ParameterTypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__ParameterTypeAssignment_0();
@@ -45162,14 +47086,14 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1"
-    // InternalSignalDSL.g:13590:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    // InternalSignalDSL.g:14177:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
     public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13594:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
-            // InternalSignalDSL.g:13595:2: rule__FullJvmFormalParameter__Group__1__Impl
+            // InternalSignalDSL.g:14181:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalSignalDSL.g:14182:2: rule__FullJvmFormalParameter__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__Group__1__Impl();
@@ -45195,23 +47119,23 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__Group__1__Impl"
-    // InternalSignalDSL.g:13601:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    // InternalSignalDSL.g:14188:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
     public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13605:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
-            // InternalSignalDSL.g:13606:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14192:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalSignalDSL.g:14193:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
             {
-            // InternalSignalDSL.g:13606:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
-            // InternalSignalDSL.g:13607:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14193:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalSignalDSL.g:14194:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
             }
-            // InternalSignalDSL.g:13608:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
-            // InternalSignalDSL.g:13608:3: rule__FullJvmFormalParameter__NameAssignment_1
+            // InternalSignalDSL.g:14195:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalSignalDSL.g:14195:3: rule__FullJvmFormalParameter__NameAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__FullJvmFormalParameter__NameAssignment_1();
@@ -45246,14 +47170,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0"
-    // InternalSignalDSL.g:13617:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
+    // InternalSignalDSL.g:14204:1: rule__XFeatureCall__Group__0 : rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 ;
     public final void rule__XFeatureCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13621:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
-            // InternalSignalDSL.g:13622:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            // InternalSignalDSL.g:14208:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalSignalDSL.g:14209:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
             {
             pushFollow(FOLLOW_70);
             rule__XFeatureCall__Group__0__Impl();
@@ -45284,23 +47208,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__0__Impl"
-    // InternalSignalDSL.g:13629:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:14216:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
     public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13633:1: ( ( () ) )
-            // InternalSignalDSL.g:13634:1: ( () )
+            // InternalSignalDSL.g:14220:1: ( ( () ) )
+            // InternalSignalDSL.g:14221:1: ( () )
             {
-            // InternalSignalDSL.g:13634:1: ( () )
-            // InternalSignalDSL.g:13635:2: ()
+            // InternalSignalDSL.g:14221:1: ( () )
+            // InternalSignalDSL.g:14222:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
             }
-            // InternalSignalDSL.g:13636:2: ()
-            // InternalSignalDSL.g:13636:3: 
+            // InternalSignalDSL.g:14223:2: ()
+            // InternalSignalDSL.g:14223:3: 
             {
             }
 
@@ -45325,14 +47249,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1"
-    // InternalSignalDSL.g:13644:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
+    // InternalSignalDSL.g:14231:1: rule__XFeatureCall__Group__1 : rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 ;
     public final void rule__XFeatureCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13648:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
-            // InternalSignalDSL.g:13649:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            // InternalSignalDSL.g:14235:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalSignalDSL.g:14236:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
             {
             pushFollow(FOLLOW_70);
             rule__XFeatureCall__Group__1__Impl();
@@ -45363,31 +47287,31 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__1__Impl"
-    // InternalSignalDSL.g:13656:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:14243:1: rule__XFeatureCall__Group__1__Impl : ( ( rule__XFeatureCall__Group_1__0 )? ) ;
     public final void rule__XFeatureCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13660:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
-            // InternalSignalDSL.g:13661:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalSignalDSL.g:14247:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalSignalDSL.g:14248:1: ( ( rule__XFeatureCall__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:13661:1: ( ( rule__XFeatureCall__Group_1__0 )? )
-            // InternalSignalDSL.g:13662:2: ( rule__XFeatureCall__Group_1__0 )?
+            // InternalSignalDSL.g:14248:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalSignalDSL.g:14249:2: ( rule__XFeatureCall__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:13663:2: ( rule__XFeatureCall__Group_1__0 )?
-            int alt113=2;
-            int LA113_0 = input.LA(1);
+            // InternalSignalDSL.g:14250:2: ( rule__XFeatureCall__Group_1__0 )?
+            int alt111=2;
+            int LA111_0 = input.LA(1);
 
-            if ( (LA113_0==27) ) {
-                alt113=1;
+            if ( (LA111_0==27) ) {
+                alt111=1;
             }
-            switch (alt113) {
+            switch (alt111) {
                 case 1 :
-                    // InternalSignalDSL.g:13663:3: rule__XFeatureCall__Group_1__0
+                    // InternalSignalDSL.g:14250:3: rule__XFeatureCall__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_1__0();
@@ -45425,14 +47349,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2"
-    // InternalSignalDSL.g:13671:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
+    // InternalSignalDSL.g:14258:1: rule__XFeatureCall__Group__2 : rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 ;
     public final void rule__XFeatureCall__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13675:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
-            // InternalSignalDSL.g:13676:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            // InternalSignalDSL.g:14262:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalSignalDSL.g:14263:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
             {
             pushFollow(FOLLOW_71);
             rule__XFeatureCall__Group__2__Impl();
@@ -45463,23 +47387,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__2__Impl"
-    // InternalSignalDSL.g:13683:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    // InternalSignalDSL.g:14270:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
     public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13687:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
-            // InternalSignalDSL.g:13688:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalSignalDSL.g:14274:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalSignalDSL.g:14275:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
             {
-            // InternalSignalDSL.g:13688:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
-            // InternalSignalDSL.g:13689:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalSignalDSL.g:14275:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalSignalDSL.g:14276:2: ( rule__XFeatureCall__FeatureAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
             }
-            // InternalSignalDSL.g:13690:2: ( rule__XFeatureCall__FeatureAssignment_2 )
-            // InternalSignalDSL.g:13690:3: rule__XFeatureCall__FeatureAssignment_2
+            // InternalSignalDSL.g:14277:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalSignalDSL.g:14277:3: rule__XFeatureCall__FeatureAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureAssignment_2();
@@ -45514,14 +47438,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3"
-    // InternalSignalDSL.g:13698:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
+    // InternalSignalDSL.g:14285:1: rule__XFeatureCall__Group__3 : rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 ;
     public final void rule__XFeatureCall__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13702:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
-            // InternalSignalDSL.g:13703:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            // InternalSignalDSL.g:14289:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalSignalDSL.g:14290:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
             {
             pushFollow(FOLLOW_71);
             rule__XFeatureCall__Group__3__Impl();
@@ -45552,27 +47476,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__3__Impl"
-    // InternalSignalDSL.g:13710:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:14297:1: rule__XFeatureCall__Group__3__Impl : ( ( rule__XFeatureCall__Group_3__0 )? ) ;
     public final void rule__XFeatureCall__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13714:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
-            // InternalSignalDSL.g:13715:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalSignalDSL.g:14301:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalSignalDSL.g:14302:1: ( ( rule__XFeatureCall__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:13715:1: ( ( rule__XFeatureCall__Group_3__0 )? )
-            // InternalSignalDSL.g:13716:2: ( rule__XFeatureCall__Group_3__0 )?
+            // InternalSignalDSL.g:14302:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalSignalDSL.g:14303:2: ( rule__XFeatureCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:13717:2: ( rule__XFeatureCall__Group_3__0 )?
-            int alt114=2;
-            alt114 = dfa114.predict(input);
-            switch (alt114) {
+            // InternalSignalDSL.g:14304:2: ( rule__XFeatureCall__Group_3__0 )?
+            int alt112=2;
+            alt112 = dfa112.predict(input);
+            switch (alt112) {
                 case 1 :
-                    // InternalSignalDSL.g:13717:3: rule__XFeatureCall__Group_3__0
+                    // InternalSignalDSL.g:14304:3: rule__XFeatureCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Group_3__0();
@@ -45610,14 +47534,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4"
-    // InternalSignalDSL.g:13725:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    // InternalSignalDSL.g:14312:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
     public final void rule__XFeatureCall__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13729:1: ( rule__XFeatureCall__Group__4__Impl )
-            // InternalSignalDSL.g:13730:2: rule__XFeatureCall__Group__4__Impl
+            // InternalSignalDSL.g:14316:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalSignalDSL.g:14317:2: rule__XFeatureCall__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group__4__Impl();
@@ -45643,27 +47567,27 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group__4__Impl"
-    // InternalSignalDSL.g:13736:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    // InternalSignalDSL.g:14323:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
     public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13740:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
-            // InternalSignalDSL.g:13741:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalSignalDSL.g:14327:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalSignalDSL.g:14328:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
             {
-            // InternalSignalDSL.g:13741:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
-            // InternalSignalDSL.g:13742:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            // InternalSignalDSL.g:14328:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalSignalDSL.g:14329:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
             }
-            // InternalSignalDSL.g:13743:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
-            int alt115=2;
-            alt115 = dfa115.predict(input);
-            switch (alt115) {
+            // InternalSignalDSL.g:14330:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            int alt113=2;
+            alt113 = dfa113.predict(input);
+            switch (alt113) {
                 case 1 :
-                    // InternalSignalDSL.g:13743:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+                    // InternalSignalDSL.g:14330:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
@@ -45701,14 +47625,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0"
-    // InternalSignalDSL.g:13752:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
+    // InternalSignalDSL.g:14339:1: rule__XFeatureCall__Group_1__0 : rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 ;
     public final void rule__XFeatureCall__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13756:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
-            // InternalSignalDSL.g:13757:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            // InternalSignalDSL.g:14343:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalSignalDSL.g:14344:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
             {
             pushFollow(FOLLOW_72);
             rule__XFeatureCall__Group_1__0__Impl();
@@ -45739,17 +47663,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__0__Impl"
-    // InternalSignalDSL.g:13764:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    // InternalSignalDSL.g:14351:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
     public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13768:1: ( ( '<' ) )
-            // InternalSignalDSL.g:13769:1: ( '<' )
+            // InternalSignalDSL.g:14355:1: ( ( '<' ) )
+            // InternalSignalDSL.g:14356:1: ( '<' )
             {
-            // InternalSignalDSL.g:13769:1: ( '<' )
-            // InternalSignalDSL.g:13770:2: '<'
+            // InternalSignalDSL.g:14356:1: ( '<' )
+            // InternalSignalDSL.g:14357:2: '<'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
@@ -45780,14 +47704,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1"
-    // InternalSignalDSL.g:13779:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
+    // InternalSignalDSL.g:14366:1: rule__XFeatureCall__Group_1__1 : rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 ;
     public final void rule__XFeatureCall__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13783:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
-            // InternalSignalDSL.g:13784:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            // InternalSignalDSL.g:14370:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalSignalDSL.g:14371:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
             {
             pushFollow(FOLLOW_73);
             rule__XFeatureCall__Group_1__1__Impl();
@@ -45818,23 +47742,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__1__Impl"
-    // InternalSignalDSL.g:13791:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:14378:1: rule__XFeatureCall__Group_1__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) ;
     public final void rule__XFeatureCall__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13795:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:13796:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:14382:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:14383:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:13796:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
-            // InternalSignalDSL.g:13797:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:14383:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:14384:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:13798:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
-            // InternalSignalDSL.g:13798:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
+            // InternalSignalDSL.g:14385:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:14385:3: rule__XFeatureCall__TypeArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_1();
@@ -45869,14 +47793,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2"
-    // InternalSignalDSL.g:13806:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
+    // InternalSignalDSL.g:14393:1: rule__XFeatureCall__Group_1__2 : rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 ;
     public final void rule__XFeatureCall__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13810:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
-            // InternalSignalDSL.g:13811:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            // InternalSignalDSL.g:14397:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalSignalDSL.g:14398:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
             {
             pushFollow(FOLLOW_73);
             rule__XFeatureCall__Group_1__2__Impl();
@@ -45907,35 +47831,35 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__2__Impl"
-    // InternalSignalDSL.g:13818:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
+    // InternalSignalDSL.g:14405:1: rule__XFeatureCall__Group_1__2__Impl : ( ( rule__XFeatureCall__Group_1_2__0 )* ) ;
     public final void rule__XFeatureCall__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13822:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
-            // InternalSignalDSL.g:13823:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalSignalDSL.g:14409:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalSignalDSL.g:14410:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
             {
-            // InternalSignalDSL.g:13823:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
-            // InternalSignalDSL.g:13824:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            // InternalSignalDSL.g:14410:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalSignalDSL.g:14411:2: ( rule__XFeatureCall__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
             }
-            // InternalSignalDSL.g:13825:2: ( rule__XFeatureCall__Group_1_2__0 )*
-            loop116:
+            // InternalSignalDSL.g:14412:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            loop114:
             do {
-                int alt116=2;
-                int LA116_0 = input.LA(1);
+                int alt114=2;
+                int LA114_0 = input.LA(1);
 
-                if ( (LA116_0==73) ) {
-                    alt116=1;
+                if ( (LA114_0==82) ) {
+                    alt114=1;
                 }
 
 
-                switch (alt116) {
+                switch (alt114) {
             	case 1 :
-            	    // InternalSignalDSL.g:13825:3: rule__XFeatureCall__Group_1_2__0
+            	    // InternalSignalDSL.g:14412:3: rule__XFeatureCall__Group_1_2__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XFeatureCall__Group_1_2__0();
@@ -45947,7 +47871,7 @@
             	    break;
 
             	default :
-            	    break loop116;
+            	    break loop114;
                 }
             } while (true);
 
@@ -45976,14 +47900,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3"
-    // InternalSignalDSL.g:13833:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
+    // InternalSignalDSL.g:14420:1: rule__XFeatureCall__Group_1__3 : rule__XFeatureCall__Group_1__3__Impl ;
     public final void rule__XFeatureCall__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13837:1: ( rule__XFeatureCall__Group_1__3__Impl )
-            // InternalSignalDSL.g:13838:2: rule__XFeatureCall__Group_1__3__Impl
+            // InternalSignalDSL.g:14424:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalSignalDSL.g:14425:2: rule__XFeatureCall__Group_1__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1__3__Impl();
@@ -46009,17 +47933,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1__3__Impl"
-    // InternalSignalDSL.g:13844:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:14431:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
     public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13848:1: ( ( '>' ) )
-            // InternalSignalDSL.g:13849:1: ( '>' )
+            // InternalSignalDSL.g:14435:1: ( ( '>' ) )
+            // InternalSignalDSL.g:14436:1: ( '>' )
             {
-            // InternalSignalDSL.g:13849:1: ( '>' )
-            // InternalSignalDSL.g:13850:2: '>'
+            // InternalSignalDSL.g:14436:1: ( '>' )
+            // InternalSignalDSL.g:14437:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
@@ -46050,14 +47974,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0"
-    // InternalSignalDSL.g:13860:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
+    // InternalSignalDSL.g:14447:1: rule__XFeatureCall__Group_1_2__0 : rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 ;
     public final void rule__XFeatureCall__Group_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13864:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
-            // InternalSignalDSL.g:13865:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            // InternalSignalDSL.g:14451:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalSignalDSL.g:14452:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
             {
             pushFollow(FOLLOW_72);
             rule__XFeatureCall__Group_1_2__0__Impl();
@@ -46088,22 +48012,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__0__Impl"
-    // InternalSignalDSL.g:13872:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:14459:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
     public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13876:1: ( ( ',' ) )
-            // InternalSignalDSL.g:13877:1: ( ',' )
+            // InternalSignalDSL.g:14463:1: ( ( ',' ) )
+            // InternalSignalDSL.g:14464:1: ( ',' )
             {
-            // InternalSignalDSL.g:13877:1: ( ',' )
-            // InternalSignalDSL.g:13878:2: ','
+            // InternalSignalDSL.g:14464:1: ( ',' )
+            // InternalSignalDSL.g:14465:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
             }
@@ -46129,14 +48053,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1"
-    // InternalSignalDSL.g:13887:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
+    // InternalSignalDSL.g:14474:1: rule__XFeatureCall__Group_1_2__1 : rule__XFeatureCall__Group_1_2__1__Impl ;
     public final void rule__XFeatureCall__Group_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13891:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
-            // InternalSignalDSL.g:13892:2: rule__XFeatureCall__Group_1_2__1__Impl
+            // InternalSignalDSL.g:14478:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalSignalDSL.g:14479:2: rule__XFeatureCall__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_1_2__1__Impl();
@@ -46162,23 +48086,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_1_2__1__Impl"
-    // InternalSignalDSL.g:13898:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
+    // InternalSignalDSL.g:14485:1: rule__XFeatureCall__Group_1_2__1__Impl : ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) ;
     public final void rule__XFeatureCall__Group_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13902:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
-            // InternalSignalDSL.g:13903:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:14489:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalSignalDSL.g:14490:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
             {
-            // InternalSignalDSL.g:13903:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
-            // InternalSignalDSL.g:13904:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:14490:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:14491:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
             }
-            // InternalSignalDSL.g:13905:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
-            // InternalSignalDSL.g:13905:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
+            // InternalSignalDSL.g:14492:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:14492:3: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__TypeArgumentsAssignment_1_2_1();
@@ -46213,14 +48137,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0"
-    // InternalSignalDSL.g:13914:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
+    // InternalSignalDSL.g:14501:1: rule__XFeatureCall__Group_3__0 : rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 ;
     public final void rule__XFeatureCall__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13918:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
-            // InternalSignalDSL.g:13919:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            // InternalSignalDSL.g:14505:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalSignalDSL.g:14506:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
             {
             pushFollow(FOLLOW_74);
             rule__XFeatureCall__Group_3__0__Impl();
@@ -46251,23 +48175,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__0__Impl"
-    // InternalSignalDSL.g:13926:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
+    // InternalSignalDSL.g:14513:1: rule__XFeatureCall__Group_3__0__Impl : ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) ;
     public final void rule__XFeatureCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13930:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
-            // InternalSignalDSL.g:13931:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalSignalDSL.g:14517:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalSignalDSL.g:14518:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
             {
-            // InternalSignalDSL.g:13931:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
-            // InternalSignalDSL.g:13932:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalSignalDSL.g:14518:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalSignalDSL.g:14519:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
             }
-            // InternalSignalDSL.g:13933:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
-            // InternalSignalDSL.g:13933:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
+            // InternalSignalDSL.g:14520:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalSignalDSL.g:14520:3: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__ExplicitOperationCallAssignment_3_0();
@@ -46302,14 +48226,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1"
-    // InternalSignalDSL.g:13941:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
+    // InternalSignalDSL.g:14528:1: rule__XFeatureCall__Group_3__1 : rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 ;
     public final void rule__XFeatureCall__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13945:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
-            // InternalSignalDSL.g:13946:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            // InternalSignalDSL.g:14532:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalSignalDSL.g:14533:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
             {
             pushFollow(FOLLOW_74);
             rule__XFeatureCall__Group_3__1__Impl();
@@ -46340,31 +48264,31 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__1__Impl"
-    // InternalSignalDSL.g:13953:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
+    // InternalSignalDSL.g:14540:1: rule__XFeatureCall__Group_3__1__Impl : ( ( rule__XFeatureCall__Alternatives_3_1 )? ) ;
     public final void rule__XFeatureCall__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13957:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
-            // InternalSignalDSL.g:13958:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:14544:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalSignalDSL.g:14545:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
             {
-            // InternalSignalDSL.g:13958:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
-            // InternalSignalDSL.g:13959:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            // InternalSignalDSL.g:14545:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalSignalDSL.g:14546:2: ( rule__XFeatureCall__Alternatives_3_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
             }
-            // InternalSignalDSL.g:13960:2: ( rule__XFeatureCall__Alternatives_3_1 )?
-            int alt117=2;
-            int LA117_0 = input.LA(1);
+            // InternalSignalDSL.g:14547:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            int alt115=2;
+            int LA115_0 = input.LA(1);
 
-            if ( ((LA117_0>=RULE_ID && LA117_0<=RULE_STRING)||LA117_0==27||LA117_0==31||(LA117_0>=34 && LA117_0<=35)||LA117_0==40||(LA117_0>=45 && LA117_0<=50)||LA117_0==60||LA117_0==64||LA117_0==71||(LA117_0>=75 && LA117_0<=76)||LA117_0==79||LA117_0==81||(LA117_0>=85 && LA117_0<=92)||LA117_0==94||LA117_0==101||LA117_0==103) ) {
-                alt117=1;
+            if ( ((LA115_0>=RULE_ID && LA115_0<=RULE_STRING)||LA115_0==27||LA115_0==31||(LA115_0>=34 && LA115_0<=35)||LA115_0==40||(LA115_0>=45 && LA115_0<=50)||LA115_0==63||LA115_0==80||(LA115_0>=84 && LA115_0<=85)||LA115_0==88||LA115_0==90||(LA115_0>=93 && LA115_0<=101)||LA115_0==103||LA115_0==110||LA115_0==112) ) {
+                alt115=1;
             }
-            switch (alt117) {
+            switch (alt115) {
                 case 1 :
-                    // InternalSignalDSL.g:13960:3: rule__XFeatureCall__Alternatives_3_1
+                    // InternalSignalDSL.g:14547:3: rule__XFeatureCall__Alternatives_3_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFeatureCall__Alternatives_3_1();
@@ -46402,14 +48326,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2"
-    // InternalSignalDSL.g:13968:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
+    // InternalSignalDSL.g:14555:1: rule__XFeatureCall__Group_3__2 : rule__XFeatureCall__Group_3__2__Impl ;
     public final void rule__XFeatureCall__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13972:1: ( rule__XFeatureCall__Group_3__2__Impl )
-            // InternalSignalDSL.g:13973:2: rule__XFeatureCall__Group_3__2__Impl
+            // InternalSignalDSL.g:14559:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalSignalDSL.g:14560:2: rule__XFeatureCall__Group_3__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3__2__Impl();
@@ -46435,22 +48359,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3__2__Impl"
-    // InternalSignalDSL.g:13979:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:14566:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
     public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13983:1: ( ( ')' ) )
-            // InternalSignalDSL.g:13984:1: ( ')' )
+            // InternalSignalDSL.g:14570:1: ( ( ')' ) )
+            // InternalSignalDSL.g:14571:1: ( ')' )
             {
-            // InternalSignalDSL.g:13984:1: ( ')' )
-            // InternalSignalDSL.g:13985:2: ')'
+            // InternalSignalDSL.g:14571:1: ( ')' )
+            // InternalSignalDSL.g:14572:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
             }
@@ -46476,14 +48400,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0"
-    // InternalSignalDSL.g:13995:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
+    // InternalSignalDSL.g:14582:1: rule__XFeatureCall__Group_3_1_1__0 : rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 ;
     public final void rule__XFeatureCall__Group_3_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:13999:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
-            // InternalSignalDSL.g:14000:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            // InternalSignalDSL.g:14586:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalSignalDSL.g:14587:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XFeatureCall__Group_3_1_1__0__Impl();
@@ -46514,23 +48438,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__0__Impl"
-    // InternalSignalDSL.g:14007:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
+    // InternalSignalDSL.g:14594:1: rule__XFeatureCall__Group_3_1_1__0__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) ;
     public final void rule__XFeatureCall__Group_3_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14011:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
-            // InternalSignalDSL.g:14012:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalSignalDSL.g:14598:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalSignalDSL.g:14599:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
             {
-            // InternalSignalDSL.g:14012:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
-            // InternalSignalDSL.g:14013:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalSignalDSL.g:14599:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalSignalDSL.g:14600:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
             }
-            // InternalSignalDSL.g:14014:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
-            // InternalSignalDSL.g:14014:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
+            // InternalSignalDSL.g:14601:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalSignalDSL.g:14601:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0();
@@ -46565,14 +48489,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1"
-    // InternalSignalDSL.g:14022:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
+    // InternalSignalDSL.g:14609:1: rule__XFeatureCall__Group_3_1_1__1 : rule__XFeatureCall__Group_3_1_1__1__Impl ;
     public final void rule__XFeatureCall__Group_3_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14026:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
-            // InternalSignalDSL.g:14027:2: rule__XFeatureCall__Group_3_1_1__1__Impl
+            // InternalSignalDSL.g:14613:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalSignalDSL.g:14614:2: rule__XFeatureCall__Group_3_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1__1__Impl();
@@ -46598,35 +48522,35 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1__1__Impl"
-    // InternalSignalDSL.g:14033:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
+    // InternalSignalDSL.g:14620:1: rule__XFeatureCall__Group_3_1_1__1__Impl : ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) ;
     public final void rule__XFeatureCall__Group_3_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14037:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:14038:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:14624:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:14625:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:14038:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
-            // InternalSignalDSL.g:14039:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            // InternalSignalDSL.g:14625:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalSignalDSL.g:14626:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
             }
-            // InternalSignalDSL.g:14040:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
-            loop118:
+            // InternalSignalDSL.g:14627:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            loop116:
             do {
-                int alt118=2;
-                int LA118_0 = input.LA(1);
+                int alt116=2;
+                int LA116_0 = input.LA(1);
 
-                if ( (LA118_0==73) ) {
-                    alt118=1;
+                if ( (LA116_0==82) ) {
+                    alt116=1;
                 }
 
 
-                switch (alt118) {
+                switch (alt116) {
             	case 1 :
-            	    // InternalSignalDSL.g:14040:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    // InternalSignalDSL.g:14627:3: rule__XFeatureCall__Group_3_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XFeatureCall__Group_3_1_1_1__0();
@@ -46638,7 +48562,7 @@
             	    break;
 
             	default :
-            	    break loop118;
+            	    break loop116;
                 }
             } while (true);
 
@@ -46667,14 +48591,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0"
-    // InternalSignalDSL.g:14049:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
+    // InternalSignalDSL.g:14636:1: rule__XFeatureCall__Group_3_1_1_1__0 : rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 ;
     public final void rule__XFeatureCall__Group_3_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14053:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
-            // InternalSignalDSL.g:14054:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            // InternalSignalDSL.g:14640:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalSignalDSL.g:14641:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XFeatureCall__Group_3_1_1_1__0__Impl();
@@ -46705,22 +48629,22 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__0__Impl"
-    // InternalSignalDSL.g:14061:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:14648:1: rule__XFeatureCall__Group_3_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XFeatureCall__Group_3_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14065:1: ( ( ',' ) )
-            // InternalSignalDSL.g:14066:1: ( ',' )
+            // InternalSignalDSL.g:14652:1: ( ( ',' ) )
+            // InternalSignalDSL.g:14653:1: ( ',' )
             {
-            // InternalSignalDSL.g:14066:1: ( ',' )
-            // InternalSignalDSL.g:14067:2: ','
+            // InternalSignalDSL.g:14653:1: ( ',' )
+            // InternalSignalDSL.g:14654:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
             }
@@ -46746,14 +48670,14 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1"
-    // InternalSignalDSL.g:14076:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:14663:1: rule__XFeatureCall__Group_3_1_1_1__1 : rule__XFeatureCall__Group_3_1_1_1__1__Impl ;
     public final void rule__XFeatureCall__Group_3_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14080:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
-            // InternalSignalDSL.g:14081:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
+            // InternalSignalDSL.g:14667:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalSignalDSL.g:14668:2: rule__XFeatureCall__Group_3_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__Group_3_1_1_1__1__Impl();
@@ -46779,23 +48703,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__Group_3_1_1_1__1__Impl"
-    // InternalSignalDSL.g:14087:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:14674:1: rule__XFeatureCall__Group_3_1_1_1__1__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) ;
     public final void rule__XFeatureCall__Group_3_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14091:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:14092:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:14678:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:14679:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:14092:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
-            // InternalSignalDSL.g:14093:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalSignalDSL.g:14679:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalSignalDSL.g:14680:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:14094:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
-            // InternalSignalDSL.g:14094:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
+            // InternalSignalDSL.g:14681:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalSignalDSL.g:14681:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1();
@@ -46830,14 +48754,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0"
-    // InternalSignalDSL.g:14103:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
+    // InternalSignalDSL.g:14690:1: rule__XConstructorCall__Group__0 : rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 ;
     public final void rule__XConstructorCall__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14107:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
-            // InternalSignalDSL.g:14108:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            // InternalSignalDSL.g:14694:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalSignalDSL.g:14695:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
             {
             pushFollow(FOLLOW_96);
             rule__XConstructorCall__Group__0__Impl();
@@ -46868,23 +48792,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__0__Impl"
-    // InternalSignalDSL.g:14115:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:14702:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
     public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14119:1: ( ( () ) )
-            // InternalSignalDSL.g:14120:1: ( () )
+            // InternalSignalDSL.g:14706:1: ( ( () ) )
+            // InternalSignalDSL.g:14707:1: ( () )
             {
-            // InternalSignalDSL.g:14120:1: ( () )
-            // InternalSignalDSL.g:14121:2: ()
+            // InternalSignalDSL.g:14707:1: ( () )
+            // InternalSignalDSL.g:14708:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
             }
-            // InternalSignalDSL.g:14122:2: ()
-            // InternalSignalDSL.g:14122:3: 
+            // InternalSignalDSL.g:14709:2: ()
+            // InternalSignalDSL.g:14709:3: 
             {
             }
 
@@ -46909,16 +48833,16 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1"
-    // InternalSignalDSL.g:14130:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
+    // InternalSignalDSL.g:14717:1: rule__XConstructorCall__Group__1 : rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 ;
     public final void rule__XConstructorCall__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14134:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
-            // InternalSignalDSL.g:14135:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            // InternalSignalDSL.g:14721:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalSignalDSL.g:14722:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__XConstructorCall__Group__1__Impl();
 
             state._fsp--;
@@ -46947,22 +48871,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__1__Impl"
-    // InternalSignalDSL.g:14142:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    // InternalSignalDSL.g:14729:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
     public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14146:1: ( ( 'new' ) )
-            // InternalSignalDSL.g:14147:1: ( 'new' )
+            // InternalSignalDSL.g:14733:1: ( ( 'new' ) )
+            // InternalSignalDSL.g:14734:1: ( 'new' )
             {
-            // InternalSignalDSL.g:14147:1: ( 'new' )
-            // InternalSignalDSL.g:14148:2: 'new'
+            // InternalSignalDSL.g:14734:1: ( 'new' )
+            // InternalSignalDSL.g:14735:2: 'new'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
             }
-            match(input,87,FOLLOW_2); if (state.failed) return ;
+            match(input,96,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
             }
@@ -46988,14 +48912,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2"
-    // InternalSignalDSL.g:14157:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
+    // InternalSignalDSL.g:14744:1: rule__XConstructorCall__Group__2 : rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 ;
     public final void rule__XConstructorCall__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14161:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
-            // InternalSignalDSL.g:14162:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            // InternalSignalDSL.g:14748:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalSignalDSL.g:14749:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
             {
             pushFollow(FOLLOW_97);
             rule__XConstructorCall__Group__2__Impl();
@@ -47026,23 +48950,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__2__Impl"
-    // InternalSignalDSL.g:14169:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    // InternalSignalDSL.g:14756:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
     public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14173:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
-            // InternalSignalDSL.g:14174:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalSignalDSL.g:14760:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalSignalDSL.g:14761:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
             {
-            // InternalSignalDSL.g:14174:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
-            // InternalSignalDSL.g:14175:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalSignalDSL.g:14761:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalSignalDSL.g:14762:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
             }
-            // InternalSignalDSL.g:14176:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
-            // InternalSignalDSL.g:14176:3: rule__XConstructorCall__ConstructorAssignment_2
+            // InternalSignalDSL.g:14763:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalSignalDSL.g:14763:3: rule__XConstructorCall__ConstructorAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ConstructorAssignment_2();
@@ -47077,14 +49001,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3"
-    // InternalSignalDSL.g:14184:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
+    // InternalSignalDSL.g:14771:1: rule__XConstructorCall__Group__3 : rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 ;
     public final void rule__XConstructorCall__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14188:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
-            // InternalSignalDSL.g:14189:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            // InternalSignalDSL.g:14775:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalSignalDSL.g:14776:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
             {
             pushFollow(FOLLOW_97);
             rule__XConstructorCall__Group__3__Impl();
@@ -47115,27 +49039,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__3__Impl"
-    // InternalSignalDSL.g:14196:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
+    // InternalSignalDSL.g:14783:1: rule__XConstructorCall__Group__3__Impl : ( ( rule__XConstructorCall__Group_3__0 )? ) ;
     public final void rule__XConstructorCall__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14200:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
-            // InternalSignalDSL.g:14201:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalSignalDSL.g:14787:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalSignalDSL.g:14788:1: ( ( rule__XConstructorCall__Group_3__0 )? )
             {
-            // InternalSignalDSL.g:14201:1: ( ( rule__XConstructorCall__Group_3__0 )? )
-            // InternalSignalDSL.g:14202:2: ( rule__XConstructorCall__Group_3__0 )?
+            // InternalSignalDSL.g:14788:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalSignalDSL.g:14789:2: ( rule__XConstructorCall__Group_3__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
             }
-            // InternalSignalDSL.g:14203:2: ( rule__XConstructorCall__Group_3__0 )?
-            int alt119=2;
-            alt119 = dfa119.predict(input);
-            switch (alt119) {
+            // InternalSignalDSL.g:14790:2: ( rule__XConstructorCall__Group_3__0 )?
+            int alt117=2;
+            alt117 = dfa117.predict(input);
+            switch (alt117) {
                 case 1 :
-                    // InternalSignalDSL.g:14203:3: rule__XConstructorCall__Group_3__0
+                    // InternalSignalDSL.g:14790:3: rule__XConstructorCall__Group_3__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_3__0();
@@ -47173,14 +49097,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4"
-    // InternalSignalDSL.g:14211:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
+    // InternalSignalDSL.g:14798:1: rule__XConstructorCall__Group__4 : rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 ;
     public final void rule__XConstructorCall__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14215:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
-            // InternalSignalDSL.g:14216:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            // InternalSignalDSL.g:14802:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalSignalDSL.g:14803:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
             {
             pushFollow(FOLLOW_97);
             rule__XConstructorCall__Group__4__Impl();
@@ -47211,27 +49135,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__4__Impl"
-    // InternalSignalDSL.g:14223:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
+    // InternalSignalDSL.g:14810:1: rule__XConstructorCall__Group__4__Impl : ( ( rule__XConstructorCall__Group_4__0 )? ) ;
     public final void rule__XConstructorCall__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14227:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
-            // InternalSignalDSL.g:14228:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalSignalDSL.g:14814:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalSignalDSL.g:14815:1: ( ( rule__XConstructorCall__Group_4__0 )? )
             {
-            // InternalSignalDSL.g:14228:1: ( ( rule__XConstructorCall__Group_4__0 )? )
-            // InternalSignalDSL.g:14229:2: ( rule__XConstructorCall__Group_4__0 )?
+            // InternalSignalDSL.g:14815:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalSignalDSL.g:14816:2: ( rule__XConstructorCall__Group_4__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
             }
-            // InternalSignalDSL.g:14230:2: ( rule__XConstructorCall__Group_4__0 )?
-            int alt120=2;
-            alt120 = dfa120.predict(input);
-            switch (alt120) {
+            // InternalSignalDSL.g:14817:2: ( rule__XConstructorCall__Group_4__0 )?
+            int alt118=2;
+            alt118 = dfa118.predict(input);
+            switch (alt118) {
                 case 1 :
-                    // InternalSignalDSL.g:14230:3: rule__XConstructorCall__Group_4__0
+                    // InternalSignalDSL.g:14817:3: rule__XConstructorCall__Group_4__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Group_4__0();
@@ -47269,14 +49193,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5"
-    // InternalSignalDSL.g:14238:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    // InternalSignalDSL.g:14825:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
     public final void rule__XConstructorCall__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14242:1: ( rule__XConstructorCall__Group__5__Impl )
-            // InternalSignalDSL.g:14243:2: rule__XConstructorCall__Group__5__Impl
+            // InternalSignalDSL.g:14829:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalSignalDSL.g:14830:2: rule__XConstructorCall__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group__5__Impl();
@@ -47302,27 +49226,27 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group__5__Impl"
-    // InternalSignalDSL.g:14249:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    // InternalSignalDSL.g:14836:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
     public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14253:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
-            // InternalSignalDSL.g:14254:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalSignalDSL.g:14840:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalSignalDSL.g:14841:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
             {
-            // InternalSignalDSL.g:14254:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
-            // InternalSignalDSL.g:14255:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            // InternalSignalDSL.g:14841:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalSignalDSL.g:14842:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
             }
-            // InternalSignalDSL.g:14256:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
-            int alt121=2;
-            alt121 = dfa121.predict(input);
-            switch (alt121) {
+            // InternalSignalDSL.g:14843:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            int alt119=2;
+            alt119 = dfa119.predict(input);
+            switch (alt119) {
                 case 1 :
-                    // InternalSignalDSL.g:14256:3: rule__XConstructorCall__ArgumentsAssignment_5
+                    // InternalSignalDSL.g:14843:3: rule__XConstructorCall__ArgumentsAssignment_5
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__ArgumentsAssignment_5();
@@ -47360,14 +49284,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0"
-    // InternalSignalDSL.g:14265:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
+    // InternalSignalDSL.g:14852:1: rule__XConstructorCall__Group_3__0 : rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 ;
     public final void rule__XConstructorCall__Group_3__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14269:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
-            // InternalSignalDSL.g:14270:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            // InternalSignalDSL.g:14856:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalSignalDSL.g:14857:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
             {
             pushFollow(FOLLOW_72);
             rule__XConstructorCall__Group_3__0__Impl();
@@ -47398,23 +49322,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__0__Impl"
-    // InternalSignalDSL.g:14277:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    // InternalSignalDSL.g:14864:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
     public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14281:1: ( ( ( '<' ) ) )
-            // InternalSignalDSL.g:14282:1: ( ( '<' ) )
+            // InternalSignalDSL.g:14868:1: ( ( ( '<' ) ) )
+            // InternalSignalDSL.g:14869:1: ( ( '<' ) )
             {
-            // InternalSignalDSL.g:14282:1: ( ( '<' ) )
-            // InternalSignalDSL.g:14283:2: ( '<' )
+            // InternalSignalDSL.g:14869:1: ( ( '<' ) )
+            // InternalSignalDSL.g:14870:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
             }
-            // InternalSignalDSL.g:14284:2: ( '<' )
-            // InternalSignalDSL.g:14284:3: '<'
+            // InternalSignalDSL.g:14871:2: ( '<' )
+            // InternalSignalDSL.g:14871:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -47445,14 +49369,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1"
-    // InternalSignalDSL.g:14292:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
+    // InternalSignalDSL.g:14879:1: rule__XConstructorCall__Group_3__1 : rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 ;
     public final void rule__XConstructorCall__Group_3__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14296:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
-            // InternalSignalDSL.g:14297:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            // InternalSignalDSL.g:14883:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalSignalDSL.g:14884:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
             {
             pushFollow(FOLLOW_73);
             rule__XConstructorCall__Group_3__1__Impl();
@@ -47483,23 +49407,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__1__Impl"
-    // InternalSignalDSL.g:14304:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
+    // InternalSignalDSL.g:14891:1: rule__XConstructorCall__Group_3__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) ;
     public final void rule__XConstructorCall__Group_3__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14308:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
-            // InternalSignalDSL.g:14309:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalSignalDSL.g:14895:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalSignalDSL.g:14896:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
             {
-            // InternalSignalDSL.g:14309:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
-            // InternalSignalDSL.g:14310:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalSignalDSL.g:14896:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalSignalDSL.g:14897:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
             }
-            // InternalSignalDSL.g:14311:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
-            // InternalSignalDSL.g:14311:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
+            // InternalSignalDSL.g:14898:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalSignalDSL.g:14898:3: rule__XConstructorCall__TypeArgumentsAssignment_3_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_1();
@@ -47534,14 +49458,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2"
-    // InternalSignalDSL.g:14319:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
+    // InternalSignalDSL.g:14906:1: rule__XConstructorCall__Group_3__2 : rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 ;
     public final void rule__XConstructorCall__Group_3__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14323:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
-            // InternalSignalDSL.g:14324:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            // InternalSignalDSL.g:14910:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalSignalDSL.g:14911:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
             {
             pushFollow(FOLLOW_73);
             rule__XConstructorCall__Group_3__2__Impl();
@@ -47572,35 +49496,35 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__2__Impl"
-    // InternalSignalDSL.g:14331:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
+    // InternalSignalDSL.g:14918:1: rule__XConstructorCall__Group_3__2__Impl : ( ( rule__XConstructorCall__Group_3_2__0 )* ) ;
     public final void rule__XConstructorCall__Group_3__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14335:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
-            // InternalSignalDSL.g:14336:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalSignalDSL.g:14922:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalSignalDSL.g:14923:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
             {
-            // InternalSignalDSL.g:14336:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
-            // InternalSignalDSL.g:14337:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            // InternalSignalDSL.g:14923:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalSignalDSL.g:14924:2: ( rule__XConstructorCall__Group_3_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
             }
-            // InternalSignalDSL.g:14338:2: ( rule__XConstructorCall__Group_3_2__0 )*
-            loop122:
+            // InternalSignalDSL.g:14925:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            loop120:
             do {
-                int alt122=2;
-                int LA122_0 = input.LA(1);
+                int alt120=2;
+                int LA120_0 = input.LA(1);
 
-                if ( (LA122_0==73) ) {
-                    alt122=1;
+                if ( (LA120_0==82) ) {
+                    alt120=1;
                 }
 
 
-                switch (alt122) {
+                switch (alt120) {
             	case 1 :
-            	    // InternalSignalDSL.g:14338:3: rule__XConstructorCall__Group_3_2__0
+            	    // InternalSignalDSL.g:14925:3: rule__XConstructorCall__Group_3_2__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XConstructorCall__Group_3_2__0();
@@ -47612,7 +49536,7 @@
             	    break;
 
             	default :
-            	    break loop122;
+            	    break loop120;
                 }
             } while (true);
 
@@ -47641,14 +49565,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3"
-    // InternalSignalDSL.g:14346:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
+    // InternalSignalDSL.g:14933:1: rule__XConstructorCall__Group_3__3 : rule__XConstructorCall__Group_3__3__Impl ;
     public final void rule__XConstructorCall__Group_3__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14350:1: ( rule__XConstructorCall__Group_3__3__Impl )
-            // InternalSignalDSL.g:14351:2: rule__XConstructorCall__Group_3__3__Impl
+            // InternalSignalDSL.g:14937:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalSignalDSL.g:14938:2: rule__XConstructorCall__Group_3__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3__3__Impl();
@@ -47674,17 +49598,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3__3__Impl"
-    // InternalSignalDSL.g:14357:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:14944:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
     public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14361:1: ( ( '>' ) )
-            // InternalSignalDSL.g:14362:1: ( '>' )
+            // InternalSignalDSL.g:14948:1: ( ( '>' ) )
+            // InternalSignalDSL.g:14949:1: ( '>' )
             {
-            // InternalSignalDSL.g:14362:1: ( '>' )
-            // InternalSignalDSL.g:14363:2: '>'
+            // InternalSignalDSL.g:14949:1: ( '>' )
+            // InternalSignalDSL.g:14950:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
@@ -47715,14 +49639,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0"
-    // InternalSignalDSL.g:14373:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
+    // InternalSignalDSL.g:14960:1: rule__XConstructorCall__Group_3_2__0 : rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 ;
     public final void rule__XConstructorCall__Group_3_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14377:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
-            // InternalSignalDSL.g:14378:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            // InternalSignalDSL.g:14964:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalSignalDSL.g:14965:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
             {
             pushFollow(FOLLOW_72);
             rule__XConstructorCall__Group_3_2__0__Impl();
@@ -47753,22 +49677,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__0__Impl"
-    // InternalSignalDSL.g:14385:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:14972:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
     public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14389:1: ( ( ',' ) )
-            // InternalSignalDSL.g:14390:1: ( ',' )
+            // InternalSignalDSL.g:14976:1: ( ( ',' ) )
+            // InternalSignalDSL.g:14977:1: ( ',' )
             {
-            // InternalSignalDSL.g:14390:1: ( ',' )
-            // InternalSignalDSL.g:14391:2: ','
+            // InternalSignalDSL.g:14977:1: ( ',' )
+            // InternalSignalDSL.g:14978:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
             }
@@ -47794,14 +49718,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1"
-    // InternalSignalDSL.g:14400:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
+    // InternalSignalDSL.g:14987:1: rule__XConstructorCall__Group_3_2__1 : rule__XConstructorCall__Group_3_2__1__Impl ;
     public final void rule__XConstructorCall__Group_3_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14404:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
-            // InternalSignalDSL.g:14405:2: rule__XConstructorCall__Group_3_2__1__Impl
+            // InternalSignalDSL.g:14991:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalSignalDSL.g:14992:2: rule__XConstructorCall__Group_3_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_3_2__1__Impl();
@@ -47827,23 +49751,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_3_2__1__Impl"
-    // InternalSignalDSL.g:14411:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
+    // InternalSignalDSL.g:14998:1: rule__XConstructorCall__Group_3_2__1__Impl : ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) ;
     public final void rule__XConstructorCall__Group_3_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14415:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
-            // InternalSignalDSL.g:14416:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalSignalDSL.g:15002:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalSignalDSL.g:15003:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
             {
-            // InternalSignalDSL.g:14416:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
-            // InternalSignalDSL.g:14417:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalSignalDSL.g:15003:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalSignalDSL.g:15004:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
             }
-            // InternalSignalDSL.g:14418:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
-            // InternalSignalDSL.g:14418:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
+            // InternalSignalDSL.g:15005:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalSignalDSL.g:15005:3: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__TypeArgumentsAssignment_3_2_1();
@@ -47878,14 +49802,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0"
-    // InternalSignalDSL.g:14427:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
+    // InternalSignalDSL.g:15014:1: rule__XConstructorCall__Group_4__0 : rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 ;
     public final void rule__XConstructorCall__Group_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14431:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
-            // InternalSignalDSL.g:14432:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            // InternalSignalDSL.g:15018:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalSignalDSL.g:15019:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
             {
             pushFollow(FOLLOW_74);
             rule__XConstructorCall__Group_4__0__Impl();
@@ -47916,23 +49840,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__0__Impl"
-    // InternalSignalDSL.g:14439:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
+    // InternalSignalDSL.g:15026:1: rule__XConstructorCall__Group_4__0__Impl : ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) ;
     public final void rule__XConstructorCall__Group_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14443:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
-            // InternalSignalDSL.g:14444:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalSignalDSL.g:15030:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalSignalDSL.g:15031:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
             {
-            // InternalSignalDSL.g:14444:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
-            // InternalSignalDSL.g:14445:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalSignalDSL.g:15031:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalSignalDSL.g:15032:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
             }
-            // InternalSignalDSL.g:14446:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
-            // InternalSignalDSL.g:14446:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
+            // InternalSignalDSL.g:15033:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalSignalDSL.g:15033:3: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0();
@@ -47967,14 +49891,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1"
-    // InternalSignalDSL.g:14454:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
+    // InternalSignalDSL.g:15041:1: rule__XConstructorCall__Group_4__1 : rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 ;
     public final void rule__XConstructorCall__Group_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14458:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
-            // InternalSignalDSL.g:14459:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            // InternalSignalDSL.g:15045:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalSignalDSL.g:15046:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
             {
             pushFollow(FOLLOW_74);
             rule__XConstructorCall__Group_4__1__Impl();
@@ -48005,31 +49929,31 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__1__Impl"
-    // InternalSignalDSL.g:14466:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
+    // InternalSignalDSL.g:15053:1: rule__XConstructorCall__Group_4__1__Impl : ( ( rule__XConstructorCall__Alternatives_4_1 )? ) ;
     public final void rule__XConstructorCall__Group_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14470:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
-            // InternalSignalDSL.g:14471:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalSignalDSL.g:15057:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalSignalDSL.g:15058:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
             {
-            // InternalSignalDSL.g:14471:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
-            // InternalSignalDSL.g:14472:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            // InternalSignalDSL.g:15058:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalSignalDSL.g:15059:2: ( rule__XConstructorCall__Alternatives_4_1 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
             }
-            // InternalSignalDSL.g:14473:2: ( rule__XConstructorCall__Alternatives_4_1 )?
-            int alt123=2;
-            int LA123_0 = input.LA(1);
+            // InternalSignalDSL.g:15060:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
 
-            if ( ((LA123_0>=RULE_ID && LA123_0<=RULE_STRING)||LA123_0==27||LA123_0==31||(LA123_0>=34 && LA123_0<=35)||LA123_0==40||(LA123_0>=45 && LA123_0<=50)||LA123_0==60||LA123_0==64||LA123_0==71||(LA123_0>=75 && LA123_0<=76)||LA123_0==79||LA123_0==81||(LA123_0>=85 && LA123_0<=92)||LA123_0==94||LA123_0==101||LA123_0==103) ) {
-                alt123=1;
+            if ( ((LA121_0>=RULE_ID && LA121_0<=RULE_STRING)||LA121_0==27||LA121_0==31||(LA121_0>=34 && LA121_0<=35)||LA121_0==40||(LA121_0>=45 && LA121_0<=50)||LA121_0==63||LA121_0==80||(LA121_0>=84 && LA121_0<=85)||LA121_0==88||LA121_0==90||(LA121_0>=93 && LA121_0<=101)||LA121_0==103||LA121_0==110||LA121_0==112) ) {
+                alt121=1;
             }
-            switch (alt123) {
+            switch (alt121) {
                 case 1 :
-                    // InternalSignalDSL.g:14473:3: rule__XConstructorCall__Alternatives_4_1
+                    // InternalSignalDSL.g:15060:3: rule__XConstructorCall__Alternatives_4_1
                     {
                     pushFollow(FOLLOW_2);
                     rule__XConstructorCall__Alternatives_4_1();
@@ -48067,14 +49991,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2"
-    // InternalSignalDSL.g:14481:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
+    // InternalSignalDSL.g:15068:1: rule__XConstructorCall__Group_4__2 : rule__XConstructorCall__Group_4__2__Impl ;
     public final void rule__XConstructorCall__Group_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14485:1: ( rule__XConstructorCall__Group_4__2__Impl )
-            // InternalSignalDSL.g:14486:2: rule__XConstructorCall__Group_4__2__Impl
+            // InternalSignalDSL.g:15072:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalSignalDSL.g:15073:2: rule__XConstructorCall__Group_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4__2__Impl();
@@ -48100,22 +50024,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4__2__Impl"
-    // InternalSignalDSL.g:14492:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:15079:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
     public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14496:1: ( ( ')' ) )
-            // InternalSignalDSL.g:14497:1: ( ')' )
+            // InternalSignalDSL.g:15083:1: ( ( ')' ) )
+            // InternalSignalDSL.g:15084:1: ( ')' )
             {
-            // InternalSignalDSL.g:14497:1: ( ')' )
-            // InternalSignalDSL.g:14498:2: ')'
+            // InternalSignalDSL.g:15084:1: ( ')' )
+            // InternalSignalDSL.g:15085:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
             }
@@ -48141,14 +50065,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0"
-    // InternalSignalDSL.g:14508:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
+    // InternalSignalDSL.g:15095:1: rule__XConstructorCall__Group_4_1_1__0 : rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 ;
     public final void rule__XConstructorCall__Group_4_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14512:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
-            // InternalSignalDSL.g:14513:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            // InternalSignalDSL.g:15099:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalSignalDSL.g:15100:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XConstructorCall__Group_4_1_1__0__Impl();
@@ -48179,23 +50103,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__0__Impl"
-    // InternalSignalDSL.g:14520:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
+    // InternalSignalDSL.g:15107:1: rule__XConstructorCall__Group_4_1_1__0__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) ;
     public final void rule__XConstructorCall__Group_4_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14524:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
-            // InternalSignalDSL.g:14525:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalSignalDSL.g:15111:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalSignalDSL.g:15112:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
             {
-            // InternalSignalDSL.g:14525:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
-            // InternalSignalDSL.g:14526:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalSignalDSL.g:15112:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalSignalDSL.g:15113:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
             }
-            // InternalSignalDSL.g:14527:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
-            // InternalSignalDSL.g:14527:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
+            // InternalSignalDSL.g:15114:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalSignalDSL.g:15114:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_0();
@@ -48230,14 +50154,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1"
-    // InternalSignalDSL.g:14535:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
+    // InternalSignalDSL.g:15122:1: rule__XConstructorCall__Group_4_1_1__1 : rule__XConstructorCall__Group_4_1_1__1__Impl ;
     public final void rule__XConstructorCall__Group_4_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14539:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
-            // InternalSignalDSL.g:14540:2: rule__XConstructorCall__Group_4_1_1__1__Impl
+            // InternalSignalDSL.g:15126:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalSignalDSL.g:15127:2: rule__XConstructorCall__Group_4_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1__1__Impl();
@@ -48263,35 +50187,35 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1__1__Impl"
-    // InternalSignalDSL.g:14546:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
+    // InternalSignalDSL.g:15133:1: rule__XConstructorCall__Group_4_1_1__1__Impl : ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) ;
     public final void rule__XConstructorCall__Group_4_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14550:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
-            // InternalSignalDSL.g:14551:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalSignalDSL.g:15137:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalSignalDSL.g:15138:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
             {
-            // InternalSignalDSL.g:14551:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
-            // InternalSignalDSL.g:14552:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            // InternalSignalDSL.g:15138:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalSignalDSL.g:15139:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
             }
-            // InternalSignalDSL.g:14553:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
-            loop124:
+            // InternalSignalDSL.g:15140:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            loop122:
             do {
-                int alt124=2;
-                int LA124_0 = input.LA(1);
+                int alt122=2;
+                int LA122_0 = input.LA(1);
 
-                if ( (LA124_0==73) ) {
-                    alt124=1;
+                if ( (LA122_0==82) ) {
+                    alt122=1;
                 }
 
 
-                switch (alt124) {
+                switch (alt122) {
             	case 1 :
-            	    // InternalSignalDSL.g:14553:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    // InternalSignalDSL.g:15140:3: rule__XConstructorCall__Group_4_1_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XConstructorCall__Group_4_1_1_1__0();
@@ -48303,7 +50227,7 @@
             	    break;
 
             	default :
-            	    break loop124;
+            	    break loop122;
                 }
             } while (true);
 
@@ -48332,14 +50256,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0"
-    // InternalSignalDSL.g:14562:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
+    // InternalSignalDSL.g:15149:1: rule__XConstructorCall__Group_4_1_1_1__0 : rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 ;
     public final void rule__XConstructorCall__Group_4_1_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14566:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
-            // InternalSignalDSL.g:14567:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            // InternalSignalDSL.g:15153:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalSignalDSL.g:15154:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XConstructorCall__Group_4_1_1_1__0__Impl();
@@ -48370,22 +50294,22 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__0__Impl"
-    // InternalSignalDSL.g:14574:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:15161:1: rule__XConstructorCall__Group_4_1_1_1__0__Impl : ( ',' ) ;
     public final void rule__XConstructorCall__Group_4_1_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14578:1: ( ( ',' ) )
-            // InternalSignalDSL.g:14579:1: ( ',' )
+            // InternalSignalDSL.g:15165:1: ( ( ',' ) )
+            // InternalSignalDSL.g:15166:1: ( ',' )
             {
-            // InternalSignalDSL.g:14579:1: ( ',' )
-            // InternalSignalDSL.g:14580:2: ','
+            // InternalSignalDSL.g:15166:1: ( ',' )
+            // InternalSignalDSL.g:15167:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
             }
@@ -48411,14 +50335,14 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1"
-    // InternalSignalDSL.g:14589:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
+    // InternalSignalDSL.g:15176:1: rule__XConstructorCall__Group_4_1_1_1__1 : rule__XConstructorCall__Group_4_1_1_1__1__Impl ;
     public final void rule__XConstructorCall__Group_4_1_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14593:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
-            // InternalSignalDSL.g:14594:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
+            // InternalSignalDSL.g:15180:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalSignalDSL.g:15181:2: rule__XConstructorCall__Group_4_1_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__Group_4_1_1_1__1__Impl();
@@ -48444,23 +50368,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__Group_4_1_1_1__1__Impl"
-    // InternalSignalDSL.g:14600:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
+    // InternalSignalDSL.g:15187:1: rule__XConstructorCall__Group_4_1_1_1__1__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) ;
     public final void rule__XConstructorCall__Group_4_1_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14604:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
-            // InternalSignalDSL.g:14605:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalSignalDSL.g:15191:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalSignalDSL.g:15192:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
             {
-            // InternalSignalDSL.g:14605:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
-            // InternalSignalDSL.g:14606:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalSignalDSL.g:15192:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalSignalDSL.g:15193:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
             }
-            // InternalSignalDSL.g:14607:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
-            // InternalSignalDSL.g:14607:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
+            // InternalSignalDSL.g:15194:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalSignalDSL.g:15194:3: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1();
@@ -48495,14 +50419,14 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0"
-    // InternalSignalDSL.g:14616:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
+    // InternalSignalDSL.g:15203:1: rule__XBooleanLiteral__Group__0 : rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 ;
     public final void rule__XBooleanLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14620:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
-            // InternalSignalDSL.g:14621:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            // InternalSignalDSL.g:15207:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalSignalDSL.g:15208:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
             {
             pushFollow(FOLLOW_98);
             rule__XBooleanLiteral__Group__0__Impl();
@@ -48533,23 +50457,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:14628:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15215:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14632:1: ( ( () ) )
-            // InternalSignalDSL.g:14633:1: ( () )
+            // InternalSignalDSL.g:15219:1: ( ( () ) )
+            // InternalSignalDSL.g:15220:1: ( () )
             {
-            // InternalSignalDSL.g:14633:1: ( () )
-            // InternalSignalDSL.g:14634:2: ()
+            // InternalSignalDSL.g:15220:1: ( () )
+            // InternalSignalDSL.g:15221:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:14635:2: ()
-            // InternalSignalDSL.g:14635:3: 
+            // InternalSignalDSL.g:15222:2: ()
+            // InternalSignalDSL.g:15222:3: 
             {
             }
 
@@ -48574,14 +50498,14 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1"
-    // InternalSignalDSL.g:14643:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15230:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
     public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14647:1: ( rule__XBooleanLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:14648:2: rule__XBooleanLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15234:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15235:2: rule__XBooleanLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Group__1__Impl();
@@ -48607,23 +50531,23 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:14654:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    // InternalSignalDSL.g:15241:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
     public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14658:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
-            // InternalSignalDSL.g:14659:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalSignalDSL.g:15245:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalSignalDSL.g:15246:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
             {
-            // InternalSignalDSL.g:14659:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
-            // InternalSignalDSL.g:14660:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalSignalDSL.g:15246:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalSignalDSL.g:15247:2: ( rule__XBooleanLiteral__Alternatives_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
             }
-            // InternalSignalDSL.g:14661:2: ( rule__XBooleanLiteral__Alternatives_1 )
-            // InternalSignalDSL.g:14661:3: rule__XBooleanLiteral__Alternatives_1
+            // InternalSignalDSL.g:15248:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalSignalDSL.g:15248:3: rule__XBooleanLiteral__Alternatives_1
             {
             pushFollow(FOLLOW_2);
             rule__XBooleanLiteral__Alternatives_1();
@@ -48658,14 +50582,14 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0"
-    // InternalSignalDSL.g:14670:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
+    // InternalSignalDSL.g:15257:1: rule__XNullLiteral__Group__0 : rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 ;
     public final void rule__XNullLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14674:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
-            // InternalSignalDSL.g:14675:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            // InternalSignalDSL.g:15261:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalSignalDSL.g:15262:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
             {
             pushFollow(FOLLOW_99);
             rule__XNullLiteral__Group__0__Impl();
@@ -48696,23 +50620,23 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:14682:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15269:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14686:1: ( ( () ) )
-            // InternalSignalDSL.g:14687:1: ( () )
+            // InternalSignalDSL.g:15273:1: ( ( () ) )
+            // InternalSignalDSL.g:15274:1: ( () )
             {
-            // InternalSignalDSL.g:14687:1: ( () )
-            // InternalSignalDSL.g:14688:2: ()
+            // InternalSignalDSL.g:15274:1: ( () )
+            // InternalSignalDSL.g:15275:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:14689:2: ()
-            // InternalSignalDSL.g:14689:3: 
+            // InternalSignalDSL.g:15276:2: ()
+            // InternalSignalDSL.g:15276:3: 
             {
             }
 
@@ -48737,14 +50661,14 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1"
-    // InternalSignalDSL.g:14697:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15284:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
     public final void rule__XNullLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14701:1: ( rule__XNullLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:14702:2: rule__XNullLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15288:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15289:2: rule__XNullLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNullLiteral__Group__1__Impl();
@@ -48770,22 +50694,22 @@
 
 
     // $ANTLR start "rule__XNullLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:14708:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    // InternalSignalDSL.g:15295:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
     public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14712:1: ( ( 'null' ) )
-            // InternalSignalDSL.g:14713:1: ( 'null' )
+            // InternalSignalDSL.g:15299:1: ( ( 'null' ) )
+            // InternalSignalDSL.g:15300:1: ( 'null' )
             {
-            // InternalSignalDSL.g:14713:1: ( 'null' )
-            // InternalSignalDSL.g:14714:2: 'null'
+            // InternalSignalDSL.g:15300:1: ( 'null' )
+            // InternalSignalDSL.g:15301:2: 'null'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
             }
-            match(input,88,FOLLOW_2); if (state.failed) return ;
+            match(input,97,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
             }
@@ -48811,14 +50735,14 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0"
-    // InternalSignalDSL.g:14724:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
+    // InternalSignalDSL.g:15311:1: rule__XNumberLiteral__Group__0 : rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 ;
     public final void rule__XNumberLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14728:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
-            // InternalSignalDSL.g:14729:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            // InternalSignalDSL.g:15315:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalSignalDSL.g:15316:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
             {
             pushFollow(FOLLOW_100);
             rule__XNumberLiteral__Group__0__Impl();
@@ -48849,23 +50773,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:14736:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15323:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14740:1: ( ( () ) )
-            // InternalSignalDSL.g:14741:1: ( () )
+            // InternalSignalDSL.g:15327:1: ( ( () ) )
+            // InternalSignalDSL.g:15328:1: ( () )
             {
-            // InternalSignalDSL.g:14741:1: ( () )
-            // InternalSignalDSL.g:14742:2: ()
+            // InternalSignalDSL.g:15328:1: ( () )
+            // InternalSignalDSL.g:15329:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:14743:2: ()
-            // InternalSignalDSL.g:14743:3: 
+            // InternalSignalDSL.g:15330:2: ()
+            // InternalSignalDSL.g:15330:3: 
             {
             }
 
@@ -48890,14 +50814,14 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1"
-    // InternalSignalDSL.g:14751:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15338:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
     public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14755:1: ( rule__XNumberLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:14756:2: rule__XNumberLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15342:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15343:2: rule__XNumberLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__Group__1__Impl();
@@ -48923,23 +50847,23 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:14762:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    // InternalSignalDSL.g:15349:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
     public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14766:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
-            // InternalSignalDSL.g:14767:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15353:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalSignalDSL.g:15354:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
             {
-            // InternalSignalDSL.g:14767:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
-            // InternalSignalDSL.g:14768:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15354:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15355:2: ( rule__XNumberLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalSignalDSL.g:14769:2: ( rule__XNumberLiteral__ValueAssignment_1 )
-            // InternalSignalDSL.g:14769:3: rule__XNumberLiteral__ValueAssignment_1
+            // InternalSignalDSL.g:15356:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15356:3: rule__XNumberLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XNumberLiteral__ValueAssignment_1();
@@ -48974,16 +50898,16 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0"
-    // InternalSignalDSL.g:14778:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
+    // InternalSignalDSL.g:15365:1: rule__XStringLiteral__Group__0 : rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 ;
     public final void rule__XStringLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14782:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
-            // InternalSignalDSL.g:14783:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            // InternalSignalDSL.g:15369:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalSignalDSL.g:15370:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
             {
-            pushFollow(FOLLOW_13);
+            pushFollow(FOLLOW_12);
             rule__XStringLiteral__Group__0__Impl();
 
             state._fsp--;
@@ -49012,23 +50936,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:14790:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15377:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14794:1: ( ( () ) )
-            // InternalSignalDSL.g:14795:1: ( () )
+            // InternalSignalDSL.g:15381:1: ( ( () ) )
+            // InternalSignalDSL.g:15382:1: ( () )
             {
-            // InternalSignalDSL.g:14795:1: ( () )
-            // InternalSignalDSL.g:14796:2: ()
+            // InternalSignalDSL.g:15382:1: ( () )
+            // InternalSignalDSL.g:15383:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:14797:2: ()
-            // InternalSignalDSL.g:14797:3: 
+            // InternalSignalDSL.g:15384:2: ()
+            // InternalSignalDSL.g:15384:3: 
             {
             }
 
@@ -49053,14 +50977,14 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1"
-    // InternalSignalDSL.g:14805:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    // InternalSignalDSL.g:15392:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
     public final void rule__XStringLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14809:1: ( rule__XStringLiteral__Group__1__Impl )
-            // InternalSignalDSL.g:14810:2: rule__XStringLiteral__Group__1__Impl
+            // InternalSignalDSL.g:15396:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalSignalDSL.g:15397:2: rule__XStringLiteral__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__Group__1__Impl();
@@ -49086,23 +51010,23 @@
 
 
     // $ANTLR start "rule__XStringLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:14816:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    // InternalSignalDSL.g:15403:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
     public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14820:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
-            // InternalSignalDSL.g:14821:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15407:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalSignalDSL.g:15408:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
             {
-            // InternalSignalDSL.g:14821:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
-            // InternalSignalDSL.g:14822:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15408:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalSignalDSL.g:15409:2: ( rule__XStringLiteral__ValueAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
             }
-            // InternalSignalDSL.g:14823:2: ( rule__XStringLiteral__ValueAssignment_1 )
-            // InternalSignalDSL.g:14823:3: rule__XStringLiteral__ValueAssignment_1
+            // InternalSignalDSL.g:15410:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalSignalDSL.g:15410:3: rule__XStringLiteral__ValueAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XStringLiteral__ValueAssignment_1();
@@ -49137,14 +51061,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0"
-    // InternalSignalDSL.g:14832:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
+    // InternalSignalDSL.g:15419:1: rule__XTypeLiteral__Group__0 : rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 ;
     public final void rule__XTypeLiteral__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14836:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
-            // InternalSignalDSL.g:14837:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            // InternalSignalDSL.g:15423:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalSignalDSL.g:15424:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
             {
             pushFollow(FOLLOW_101);
             rule__XTypeLiteral__Group__0__Impl();
@@ -49175,23 +51099,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__0__Impl"
-    // InternalSignalDSL.g:14844:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15431:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
     public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14848:1: ( ( () ) )
-            // InternalSignalDSL.g:14849:1: ( () )
+            // InternalSignalDSL.g:15435:1: ( ( () ) )
+            // InternalSignalDSL.g:15436:1: ( () )
             {
-            // InternalSignalDSL.g:14849:1: ( () )
-            // InternalSignalDSL.g:14850:2: ()
+            // InternalSignalDSL.g:15436:1: ( () )
+            // InternalSignalDSL.g:15437:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
             }
-            // InternalSignalDSL.g:14851:2: ()
-            // InternalSignalDSL.g:14851:3: 
+            // InternalSignalDSL.g:15438:2: ()
+            // InternalSignalDSL.g:15438:3: 
             {
             }
 
@@ -49216,14 +51140,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1"
-    // InternalSignalDSL.g:14859:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
+    // InternalSignalDSL.g:15446:1: rule__XTypeLiteral__Group__1 : rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 ;
     public final void rule__XTypeLiteral__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14863:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
-            // InternalSignalDSL.g:14864:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            // InternalSignalDSL.g:15450:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalSignalDSL.g:15451:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
             {
             pushFollow(FOLLOW_31);
             rule__XTypeLiteral__Group__1__Impl();
@@ -49254,22 +51178,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__1__Impl"
-    // InternalSignalDSL.g:14871:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    // InternalSignalDSL.g:15458:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
     public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14875:1: ( ( 'typeof' ) )
-            // InternalSignalDSL.g:14876:1: ( 'typeof' )
+            // InternalSignalDSL.g:15462:1: ( ( 'typeof' ) )
+            // InternalSignalDSL.g:15463:1: ( 'typeof' )
             {
-            // InternalSignalDSL.g:14876:1: ( 'typeof' )
-            // InternalSignalDSL.g:14877:2: 'typeof'
+            // InternalSignalDSL.g:15463:1: ( 'typeof' )
+            // InternalSignalDSL.g:15464:2: 'typeof'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
-            match(input,89,FOLLOW_2); if (state.failed) return ;
+            match(input,98,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
             }
@@ -49295,16 +51219,16 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2"
-    // InternalSignalDSL.g:14886:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
+    // InternalSignalDSL.g:15473:1: rule__XTypeLiteral__Group__2 : rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 ;
     public final void rule__XTypeLiteral__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14890:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
-            // InternalSignalDSL.g:14891:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            // InternalSignalDSL.g:15477:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalSignalDSL.g:15478:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__XTypeLiteral__Group__2__Impl();
 
             state._fsp--;
@@ -49333,22 +51257,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__2__Impl"
-    // InternalSignalDSL.g:14898:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:15485:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
     public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14902:1: ( ( '(' ) )
-            // InternalSignalDSL.g:14903:1: ( '(' )
+            // InternalSignalDSL.g:15489:1: ( ( '(' ) )
+            // InternalSignalDSL.g:15490:1: ( '(' )
             {
-            // InternalSignalDSL.g:14903:1: ( '(' )
-            // InternalSignalDSL.g:14904:2: '('
+            // InternalSignalDSL.g:15490:1: ( '(' )
+            // InternalSignalDSL.g:15491:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
             }
@@ -49374,14 +51298,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3"
-    // InternalSignalDSL.g:14913:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
+    // InternalSignalDSL.g:15500:1: rule__XTypeLiteral__Group__3 : rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 ;
     public final void rule__XTypeLiteral__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14917:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
-            // InternalSignalDSL.g:14918:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            // InternalSignalDSL.g:15504:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalSignalDSL.g:15505:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
             {
             pushFollow(FOLLOW_102);
             rule__XTypeLiteral__Group__3__Impl();
@@ -49412,23 +51336,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__3__Impl"
-    // InternalSignalDSL.g:14925:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    // InternalSignalDSL.g:15512:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
     public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14929:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
-            // InternalSignalDSL.g:14930:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalSignalDSL.g:15516:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalSignalDSL.g:15517:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
             {
-            // InternalSignalDSL.g:14930:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
-            // InternalSignalDSL.g:14931:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalSignalDSL.g:15517:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalSignalDSL.g:15518:2: ( rule__XTypeLiteral__TypeAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
             }
-            // InternalSignalDSL.g:14932:2: ( rule__XTypeLiteral__TypeAssignment_3 )
-            // InternalSignalDSL.g:14932:3: rule__XTypeLiteral__TypeAssignment_3
+            // InternalSignalDSL.g:15519:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalSignalDSL.g:15519:3: rule__XTypeLiteral__TypeAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__TypeAssignment_3();
@@ -49463,14 +51387,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4"
-    // InternalSignalDSL.g:14940:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
+    // InternalSignalDSL.g:15527:1: rule__XTypeLiteral__Group__4 : rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 ;
     public final void rule__XTypeLiteral__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14944:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
-            // InternalSignalDSL.g:14945:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            // InternalSignalDSL.g:15531:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalSignalDSL.g:15532:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
             {
             pushFollow(FOLLOW_102);
             rule__XTypeLiteral__Group__4__Impl();
@@ -49501,35 +51425,35 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__4__Impl"
-    // InternalSignalDSL.g:14952:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    // InternalSignalDSL.g:15539:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
     public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14956:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
-            // InternalSignalDSL.g:14957:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalSignalDSL.g:15543:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalSignalDSL.g:15544:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
             {
-            // InternalSignalDSL.g:14957:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
-            // InternalSignalDSL.g:14958:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            // InternalSignalDSL.g:15544:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalSignalDSL.g:15545:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
             }
-            // InternalSignalDSL.g:14959:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
-            loop125:
+            // InternalSignalDSL.g:15546:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            loop123:
             do {
-                int alt125=2;
-                int LA125_0 = input.LA(1);
+                int alt123=2;
+                int LA123_0 = input.LA(1);
 
-                if ( (LA125_0==76) ) {
-                    alt125=1;
+                if ( (LA123_0==85) ) {
+                    alt123=1;
                 }
 
 
-                switch (alt125) {
+                switch (alt123) {
             	case 1 :
-            	    // InternalSignalDSL.g:14959:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    // InternalSignalDSL.g:15546:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
             	    {
             	    pushFollow(FOLLOW_103);
             	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
@@ -49541,7 +51465,7 @@
             	    break;
 
             	default :
-            	    break loop125;
+            	    break loop123;
                 }
             } while (true);
 
@@ -49570,14 +51494,14 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5"
-    // InternalSignalDSL.g:14967:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    // InternalSignalDSL.g:15554:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
     public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14971:1: ( rule__XTypeLiteral__Group__5__Impl )
-            // InternalSignalDSL.g:14972:2: rule__XTypeLiteral__Group__5__Impl
+            // InternalSignalDSL.g:15558:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalSignalDSL.g:15559:2: rule__XTypeLiteral__Group__5__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTypeLiteral__Group__5__Impl();
@@ -49603,22 +51527,22 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__Group__5__Impl"
-    // InternalSignalDSL.g:14978:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:15565:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
     public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14982:1: ( ( ')' ) )
-            // InternalSignalDSL.g:14983:1: ( ')' )
+            // InternalSignalDSL.g:15569:1: ( ( ')' ) )
+            // InternalSignalDSL.g:15570:1: ( ')' )
             {
-            // InternalSignalDSL.g:14983:1: ( ')' )
-            // InternalSignalDSL.g:14984:2: ')'
+            // InternalSignalDSL.g:15570:1: ( ')' )
+            // InternalSignalDSL.g:15571:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
             }
@@ -49644,14 +51568,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0"
-    // InternalSignalDSL.g:14994:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
+    // InternalSignalDSL.g:15581:1: rule__XThrowExpression__Group__0 : rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 ;
     public final void rule__XThrowExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:14998:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
-            // InternalSignalDSL.g:14999:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            // InternalSignalDSL.g:15585:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalSignalDSL.g:15586:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
             {
             pushFollow(FOLLOW_104);
             rule__XThrowExpression__Group__0__Impl();
@@ -49682,23 +51606,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15006:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15593:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
     public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15010:1: ( ( () ) )
-            // InternalSignalDSL.g:15011:1: ( () )
+            // InternalSignalDSL.g:15597:1: ( ( () ) )
+            // InternalSignalDSL.g:15598:1: ( () )
             {
-            // InternalSignalDSL.g:15011:1: ( () )
-            // InternalSignalDSL.g:15012:2: ()
+            // InternalSignalDSL.g:15598:1: ( () )
+            // InternalSignalDSL.g:15599:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:15013:2: ()
-            // InternalSignalDSL.g:15013:3: 
+            // InternalSignalDSL.g:15600:2: ()
+            // InternalSignalDSL.g:15600:3: 
             {
             }
 
@@ -49723,14 +51647,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1"
-    // InternalSignalDSL.g:15021:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
+    // InternalSignalDSL.g:15608:1: rule__XThrowExpression__Group__1 : rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 ;
     public final void rule__XThrowExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15025:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
-            // InternalSignalDSL.g:15026:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            // InternalSignalDSL.g:15612:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalSignalDSL.g:15613:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
             {
             pushFollow(FOLLOW_35);
             rule__XThrowExpression__Group__1__Impl();
@@ -49761,22 +51685,22 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15033:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    // InternalSignalDSL.g:15620:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
     public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15037:1: ( ( 'throw' ) )
-            // InternalSignalDSL.g:15038:1: ( 'throw' )
+            // InternalSignalDSL.g:15624:1: ( ( 'throw' ) )
+            // InternalSignalDSL.g:15625:1: ( 'throw' )
             {
-            // InternalSignalDSL.g:15038:1: ( 'throw' )
-            // InternalSignalDSL.g:15039:2: 'throw'
+            // InternalSignalDSL.g:15625:1: ( 'throw' )
+            // InternalSignalDSL.g:15626:2: 'throw'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
-            match(input,90,FOLLOW_2); if (state.failed) return ;
+            match(input,99,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
             }
@@ -49802,14 +51726,14 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2"
-    // InternalSignalDSL.g:15048:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    // InternalSignalDSL.g:15635:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
     public final void rule__XThrowExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15052:1: ( rule__XThrowExpression__Group__2__Impl )
-            // InternalSignalDSL.g:15053:2: rule__XThrowExpression__Group__2__Impl
+            // InternalSignalDSL.g:15639:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalSignalDSL.g:15640:2: rule__XThrowExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__Group__2__Impl();
@@ -49835,23 +51759,23 @@
 
 
     // $ANTLR start "rule__XThrowExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15059:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    // InternalSignalDSL.g:15646:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
     public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15063:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
-            // InternalSignalDSL.g:15064:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:15650:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalSignalDSL.g:15651:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
             {
-            // InternalSignalDSL.g:15064:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
-            // InternalSignalDSL.g:15065:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:15651:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:15652:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:15066:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
-            // InternalSignalDSL.g:15066:3: rule__XThrowExpression__ExpressionAssignment_2
+            // InternalSignalDSL.g:15653:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:15653:3: rule__XThrowExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XThrowExpression__ExpressionAssignment_2();
@@ -49886,14 +51810,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0"
-    // InternalSignalDSL.g:15075:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
+    // InternalSignalDSL.g:15662:1: rule__XReturnExpression__Group__0 : rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 ;
     public final void rule__XReturnExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15079:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
-            // InternalSignalDSL.g:15080:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            // InternalSignalDSL.g:15666:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalSignalDSL.g:15667:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
             {
             pushFollow(FOLLOW_105);
             rule__XReturnExpression__Group__0__Impl();
@@ -49924,23 +51848,23 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15087:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15674:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
     public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15091:1: ( ( () ) )
-            // InternalSignalDSL.g:15092:1: ( () )
+            // InternalSignalDSL.g:15678:1: ( ( () ) )
+            // InternalSignalDSL.g:15679:1: ( () )
             {
-            // InternalSignalDSL.g:15092:1: ( () )
-            // InternalSignalDSL.g:15093:2: ()
+            // InternalSignalDSL.g:15679:1: ( () )
+            // InternalSignalDSL.g:15680:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:15094:2: ()
-            // InternalSignalDSL.g:15094:3: 
+            // InternalSignalDSL.g:15681:2: ()
+            // InternalSignalDSL.g:15681:3: 
             {
             }
 
@@ -49965,14 +51889,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1"
-    // InternalSignalDSL.g:15102:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
+    // InternalSignalDSL.g:15689:1: rule__XReturnExpression__Group__1 : rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 ;
     public final void rule__XReturnExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15106:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
-            // InternalSignalDSL.g:15107:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            // InternalSignalDSL.g:15693:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalSignalDSL.g:15694:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
             {
             pushFollow(FOLLOW_35);
             rule__XReturnExpression__Group__1__Impl();
@@ -50003,22 +51927,22 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15114:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    // InternalSignalDSL.g:15701:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
     public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15118:1: ( ( 'return' ) )
-            // InternalSignalDSL.g:15119:1: ( 'return' )
+            // InternalSignalDSL.g:15705:1: ( ( 'return' ) )
+            // InternalSignalDSL.g:15706:1: ( 'return' )
             {
-            // InternalSignalDSL.g:15119:1: ( 'return' )
-            // InternalSignalDSL.g:15120:2: 'return'
+            // InternalSignalDSL.g:15706:1: ( 'return' )
+            // InternalSignalDSL.g:15707:2: 'return'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
-            match(input,91,FOLLOW_2); if (state.failed) return ;
+            match(input,100,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
             }
@@ -50044,14 +51968,14 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2"
-    // InternalSignalDSL.g:15129:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    // InternalSignalDSL.g:15716:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
     public final void rule__XReturnExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15133:1: ( rule__XReturnExpression__Group__2__Impl )
-            // InternalSignalDSL.g:15134:2: rule__XReturnExpression__Group__2__Impl
+            // InternalSignalDSL.g:15720:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalSignalDSL.g:15721:2: rule__XReturnExpression__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XReturnExpression__Group__2__Impl();
@@ -50077,27 +52001,27 @@
 
 
     // $ANTLR start "rule__XReturnExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15140:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    // InternalSignalDSL.g:15727:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
     public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15144:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
-            // InternalSignalDSL.g:15145:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalSignalDSL.g:15731:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalSignalDSL.g:15732:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
             {
-            // InternalSignalDSL.g:15145:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
-            // InternalSignalDSL.g:15146:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            // InternalSignalDSL.g:15732:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalSignalDSL.g:15733:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:15147:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
-            int alt126=2;
-            alt126 = dfa126.predict(input);
-            switch (alt126) {
+            // InternalSignalDSL.g:15734:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            int alt124=2;
+            alt124 = dfa124.predict(input);
+            switch (alt124) {
                 case 1 :
-                    // InternalSignalDSL.g:15147:3: rule__XReturnExpression__ExpressionAssignment_2
+                    // InternalSignalDSL.g:15734:3: rule__XReturnExpression__ExpressionAssignment_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__XReturnExpression__ExpressionAssignment_2();
@@ -50135,14 +52059,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0"
-    // InternalSignalDSL.g:15156:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
+    // InternalSignalDSL.g:15743:1: rule__XTryCatchFinallyExpression__Group__0 : rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 ;
     public final void rule__XTryCatchFinallyExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15160:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
-            // InternalSignalDSL.g:15161:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            // InternalSignalDSL.g:15747:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalSignalDSL.g:15748:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
             {
             pushFollow(FOLLOW_106);
             rule__XTryCatchFinallyExpression__Group__0__Impl();
@@ -50173,23 +52097,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15168:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:15755:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
     public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15172:1: ( ( () ) )
-            // InternalSignalDSL.g:15173:1: ( () )
+            // InternalSignalDSL.g:15759:1: ( ( () ) )
+            // InternalSignalDSL.g:15760:1: ( () )
             {
-            // InternalSignalDSL.g:15173:1: ( () )
-            // InternalSignalDSL.g:15174:2: ()
+            // InternalSignalDSL.g:15760:1: ( () )
+            // InternalSignalDSL.g:15761:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
             }
-            // InternalSignalDSL.g:15175:2: ()
-            // InternalSignalDSL.g:15175:3: 
+            // InternalSignalDSL.g:15762:2: ()
+            // InternalSignalDSL.g:15762:3: 
             {
             }
 
@@ -50214,14 +52138,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1"
-    // InternalSignalDSL.g:15183:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
+    // InternalSignalDSL.g:15770:1: rule__XTryCatchFinallyExpression__Group__1 : rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 ;
     public final void rule__XTryCatchFinallyExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15187:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
-            // InternalSignalDSL.g:15188:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            // InternalSignalDSL.g:15774:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalSignalDSL.g:15775:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
             {
             pushFollow(FOLLOW_35);
             rule__XTryCatchFinallyExpression__Group__1__Impl();
@@ -50252,22 +52176,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15195:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    // InternalSignalDSL.g:15782:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
     public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15199:1: ( ( 'try' ) )
-            // InternalSignalDSL.g:15200:1: ( 'try' )
+            // InternalSignalDSL.g:15786:1: ( ( 'try' ) )
+            // InternalSignalDSL.g:15787:1: ( 'try' )
             {
-            // InternalSignalDSL.g:15200:1: ( 'try' )
-            // InternalSignalDSL.g:15201:2: 'try'
+            // InternalSignalDSL.g:15787:1: ( 'try' )
+            // InternalSignalDSL.g:15788:2: 'try'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
-            match(input,92,FOLLOW_2); if (state.failed) return ;
+            match(input,101,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
             }
@@ -50293,14 +52217,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2"
-    // InternalSignalDSL.g:15210:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
+    // InternalSignalDSL.g:15797:1: rule__XTryCatchFinallyExpression__Group__2 : rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 ;
     public final void rule__XTryCatchFinallyExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15214:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
-            // InternalSignalDSL.g:15215:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            // InternalSignalDSL.g:15801:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalSignalDSL.g:15802:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
             {
             pushFollow(FOLLOW_107);
             rule__XTryCatchFinallyExpression__Group__2__Impl();
@@ -50331,23 +52255,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15222:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    // InternalSignalDSL.g:15809:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15226:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
-            // InternalSignalDSL.g:15227:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:15813:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalSignalDSL.g:15814:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
             {
-            // InternalSignalDSL.g:15227:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
-            // InternalSignalDSL.g:15228:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:15814:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalSignalDSL.g:15815:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
             }
-            // InternalSignalDSL.g:15229:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
-            // InternalSignalDSL.g:15229:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
+            // InternalSignalDSL.g:15816:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalSignalDSL.g:15816:3: rule__XTryCatchFinallyExpression__ExpressionAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__ExpressionAssignment_2();
@@ -50382,14 +52306,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3"
-    // InternalSignalDSL.g:15237:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:15824:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15241:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
-            // InternalSignalDSL.g:15242:2: rule__XTryCatchFinallyExpression__Group__3__Impl
+            // InternalSignalDSL.g:15828:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalSignalDSL.g:15829:2: rule__XTryCatchFinallyExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group__3__Impl();
@@ -50415,23 +52339,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group__3__Impl"
-    // InternalSignalDSL.g:15248:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    // InternalSignalDSL.g:15835:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15252:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
-            // InternalSignalDSL.g:15253:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalSignalDSL.g:15839:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalSignalDSL.g:15840:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
             {
-            // InternalSignalDSL.g:15253:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
-            // InternalSignalDSL.g:15254:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalSignalDSL.g:15840:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalSignalDSL.g:15841:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
             }
-            // InternalSignalDSL.g:15255:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
-            // InternalSignalDSL.g:15255:3: rule__XTryCatchFinallyExpression__Alternatives_3
+            // InternalSignalDSL.g:15842:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalSignalDSL.g:15842:3: rule__XTryCatchFinallyExpression__Alternatives_3
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Alternatives_3();
@@ -50466,14 +52390,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0"
-    // InternalSignalDSL.g:15264:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
+    // InternalSignalDSL.g:15851:1: rule__XTryCatchFinallyExpression__Group_3_0__0 : rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15268:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
-            // InternalSignalDSL.g:15269:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            // InternalSignalDSL.g:15855:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalSignalDSL.g:15856:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
             {
             pushFollow(FOLLOW_108);
             rule__XTryCatchFinallyExpression__Group_3_0__0__Impl();
@@ -50504,26 +52428,26 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__0__Impl"
-    // InternalSignalDSL.g:15276:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
+    // InternalSignalDSL.g:15863:1: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl : ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15280:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
-            // InternalSignalDSL.g:15281:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalSignalDSL.g:15867:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalSignalDSL.g:15868:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
             {
-            // InternalSignalDSL.g:15281:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
-            // InternalSignalDSL.g:15282:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalSignalDSL.g:15868:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalSignalDSL.g:15869:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
             {
-            // InternalSignalDSL.g:15282:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
-            // InternalSignalDSL.g:15283:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalSignalDSL.g:15869:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalSignalDSL.g:15870:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalSignalDSL.g:15284:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-            // InternalSignalDSL.g:15284:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            // InternalSignalDSL.g:15871:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalSignalDSL.g:15871:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             {
             pushFollow(FOLLOW_109);
             rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -50539,32 +52463,32 @@
 
             }
 
-            // InternalSignalDSL.g:15287:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
-            // InternalSignalDSL.g:15288:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            // InternalSignalDSL.g:15874:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalSignalDSL.g:15875:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
             }
-            // InternalSignalDSL.g:15289:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
-            loop127:
+            // InternalSignalDSL.g:15876:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            loop125:
             do {
-                int alt127=2;
-                int LA127_0 = input.LA(1);
+                int alt125=2;
+                int LA125_0 = input.LA(1);
 
-                if ( (LA127_0==95) ) {
-                    int LA127_2 = input.LA(2);
+                if ( (LA125_0==104) ) {
+                    int LA125_2 = input.LA(2);
 
-                    if ( (synpred171_InternalSignalDSL()) ) {
-                        alt127=1;
+                    if ( (synpred177_InternalSignalDSL()) ) {
+                        alt125=1;
                     }
 
 
                 }
 
 
-                switch (alt127) {
+                switch (alt125) {
             	case 1 :
-            	    // InternalSignalDSL.g:15289:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    // InternalSignalDSL.g:15876:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
             	    {
             	    pushFollow(FOLLOW_109);
             	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -50576,7 +52500,7 @@
             	    break;
 
             	default :
-            	    break loop127;
+            	    break loop125;
                 }
             } while (true);
 
@@ -50608,14 +52532,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1"
-    // InternalSignalDSL.g:15298:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
+    // InternalSignalDSL.g:15885:1: rule__XTryCatchFinallyExpression__Group_3_0__1 : rule__XTryCatchFinallyExpression__Group_3_0__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15302:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
-            // InternalSignalDSL.g:15303:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
+            // InternalSignalDSL.g:15889:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalSignalDSL.g:15890:2: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0__1__Impl();
@@ -50641,35 +52565,35 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0__1__Impl"
-    // InternalSignalDSL.g:15309:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
+    // InternalSignalDSL.g:15896:1: rule__XTryCatchFinallyExpression__Group_3_0__1__Impl : ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15313:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
-            // InternalSignalDSL.g:15314:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalSignalDSL.g:15900:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalSignalDSL.g:15901:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
             {
-            // InternalSignalDSL.g:15314:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
-            // InternalSignalDSL.g:15315:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            // InternalSignalDSL.g:15901:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalSignalDSL.g:15902:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
             }
-            // InternalSignalDSL.g:15316:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
-            int alt128=2;
-            int LA128_0 = input.LA(1);
+            // InternalSignalDSL.g:15903:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
 
-            if ( (LA128_0==93) ) {
-                int LA128_1 = input.LA(2);
+            if ( (LA126_0==102) ) {
+                int LA126_1 = input.LA(2);
 
-                if ( (synpred172_InternalSignalDSL()) ) {
-                    alt128=1;
+                if ( (synpred178_InternalSignalDSL()) ) {
+                    alt126=1;
                 }
             }
-            switch (alt128) {
+            switch (alt126) {
                 case 1 :
-                    // InternalSignalDSL.g:15316:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+                    // InternalSignalDSL.g:15903:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -50707,14 +52631,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0"
-    // InternalSignalDSL.g:15325:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
+    // InternalSignalDSL.g:15912:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0 : rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15329:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
-            // InternalSignalDSL.g:15330:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            // InternalSignalDSL.g:15916:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalSignalDSL.g:15917:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl();
@@ -50745,25 +52669,25 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl"
-    // InternalSignalDSL.g:15337:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
+    // InternalSignalDSL.g:15924:1: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl : ( ( 'finally' ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15341:1: ( ( ( 'finally' ) ) )
-            // InternalSignalDSL.g:15342:1: ( ( 'finally' ) )
+            // InternalSignalDSL.g:15928:1: ( ( ( 'finally' ) ) )
+            // InternalSignalDSL.g:15929:1: ( ( 'finally' ) )
             {
-            // InternalSignalDSL.g:15342:1: ( ( 'finally' ) )
-            // InternalSignalDSL.g:15343:2: ( 'finally' )
+            // InternalSignalDSL.g:15929:1: ( ( 'finally' ) )
+            // InternalSignalDSL.g:15930:2: ( 'finally' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
             }
-            // InternalSignalDSL.g:15344:2: ( 'finally' )
-            // InternalSignalDSL.g:15344:3: 'finally'
+            // InternalSignalDSL.g:15931:2: ( 'finally' )
+            // InternalSignalDSL.g:15931:3: 'finally'
             {
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -50792,14 +52716,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1"
-    // InternalSignalDSL.g:15352:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
+    // InternalSignalDSL.g:15939:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1 : rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15356:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
-            // InternalSignalDSL.g:15357:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
+            // InternalSignalDSL.g:15943:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalSignalDSL.g:15944:2: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl();
@@ -50825,23 +52749,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl"
-    // InternalSignalDSL.g:15363:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
+    // InternalSignalDSL.g:15950:1: rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15367:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
-            // InternalSignalDSL.g:15368:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalSignalDSL.g:15954:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalSignalDSL.g:15955:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
             {
-            // InternalSignalDSL.g:15368:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
-            // InternalSignalDSL.g:15369:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalSignalDSL.g:15955:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalSignalDSL.g:15956:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
             }
-            // InternalSignalDSL.g:15370:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
-            // InternalSignalDSL.g:15370:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
+            // InternalSignalDSL.g:15957:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalSignalDSL.g:15957:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1();
@@ -50876,14 +52800,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0"
-    // InternalSignalDSL.g:15379:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
+    // InternalSignalDSL.g:15966:1: rule__XTryCatchFinallyExpression__Group_3_1__0 : rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15383:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
-            // InternalSignalDSL.g:15384:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            // InternalSignalDSL.g:15970:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalSignalDSL.g:15971:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
             {
             pushFollow(FOLLOW_35);
             rule__XTryCatchFinallyExpression__Group_3_1__0__Impl();
@@ -50914,22 +52838,22 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__0__Impl"
-    // InternalSignalDSL.g:15391:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
+    // InternalSignalDSL.g:15978:1: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl : ( 'finally' ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15395:1: ( ( 'finally' ) )
-            // InternalSignalDSL.g:15396:1: ( 'finally' )
+            // InternalSignalDSL.g:15982:1: ( ( 'finally' ) )
+            // InternalSignalDSL.g:15983:1: ( 'finally' )
             {
-            // InternalSignalDSL.g:15396:1: ( 'finally' )
-            // InternalSignalDSL.g:15397:2: 'finally'
+            // InternalSignalDSL.g:15983:1: ( 'finally' )
+            // InternalSignalDSL.g:15984:2: 'finally'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
-            match(input,93,FOLLOW_2); if (state.failed) return ;
+            match(input,102,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
             }
@@ -50955,14 +52879,14 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1"
-    // InternalSignalDSL.g:15406:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
+    // InternalSignalDSL.g:15993:1: rule__XTryCatchFinallyExpression__Group_3_1__1 : rule__XTryCatchFinallyExpression__Group_3_1__1__Impl ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15410:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
-            // InternalSignalDSL.g:15411:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
+            // InternalSignalDSL.g:15997:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalSignalDSL.g:15998:2: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__Group_3_1__1__Impl();
@@ -50988,23 +52912,23 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__Group_3_1__1__Impl"
-    // InternalSignalDSL.g:15417:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
+    // InternalSignalDSL.g:16004:1: rule__XTryCatchFinallyExpression__Group_3_1__1__Impl : ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) ;
     public final void rule__XTryCatchFinallyExpression__Group_3_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15421:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
-            // InternalSignalDSL.g:15422:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:16008:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalSignalDSL.g:16009:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
             {
-            // InternalSignalDSL.g:15422:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
-            // InternalSignalDSL.g:15423:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalSignalDSL.g:16009:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalSignalDSL.g:16010:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
             }
-            // InternalSignalDSL.g:15424:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
-            // InternalSignalDSL.g:15424:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
+            // InternalSignalDSL.g:16011:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalSignalDSL.g:16011:3: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1();
@@ -51039,14 +52963,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0"
-    // InternalSignalDSL.g:15433:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
+    // InternalSignalDSL.g:16020:1: rule__XSynchronizedExpression__Group__0 : rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 ;
     public final void rule__XSynchronizedExpression__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15437:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
-            // InternalSignalDSL.g:15438:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            // InternalSignalDSL.g:16024:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalSignalDSL.g:16025:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
             {
             pushFollow(FOLLOW_35);
             rule__XSynchronizedExpression__Group__0__Impl();
@@ -51077,23 +53001,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__0__Impl"
-    // InternalSignalDSL.g:15445:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
+    // InternalSignalDSL.g:16032:1: rule__XSynchronizedExpression__Group__0__Impl : ( ( rule__XSynchronizedExpression__Group_0__0 ) ) ;
     public final void rule__XSynchronizedExpression__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15449:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
-            // InternalSignalDSL.g:15450:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:16036:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalSignalDSL.g:16037:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
             {
-            // InternalSignalDSL.g:15450:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
-            // InternalSignalDSL.g:15451:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalSignalDSL.g:16037:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalSignalDSL.g:16038:2: ( rule__XSynchronizedExpression__Group_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:15452:2: ( rule__XSynchronizedExpression__Group_0__0 )
-            // InternalSignalDSL.g:15452:3: rule__XSynchronizedExpression__Group_0__0
+            // InternalSignalDSL.g:16039:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalSignalDSL.g:16039:3: rule__XSynchronizedExpression__Group_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0();
@@ -51128,14 +53052,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1"
-    // InternalSignalDSL.g:15460:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
+    // InternalSignalDSL.g:16047:1: rule__XSynchronizedExpression__Group__1 : rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 ;
     public final void rule__XSynchronizedExpression__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15464:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
-            // InternalSignalDSL.g:15465:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            // InternalSignalDSL.g:16051:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalSignalDSL.g:16052:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
             {
             pushFollow(FOLLOW_80);
             rule__XSynchronizedExpression__Group__1__Impl();
@@ -51166,23 +53090,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__1__Impl"
-    // InternalSignalDSL.g:15472:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    // InternalSignalDSL.g:16059:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
     public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15476:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
-            // InternalSignalDSL.g:15477:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalSignalDSL.g:16063:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalSignalDSL.g:16064:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
             {
-            // InternalSignalDSL.g:15477:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
-            // InternalSignalDSL.g:15478:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalSignalDSL.g:16064:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalSignalDSL.g:16065:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
             }
-            // InternalSignalDSL.g:15479:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
-            // InternalSignalDSL.g:15479:3: rule__XSynchronizedExpression__ParamAssignment_1
+            // InternalSignalDSL.g:16066:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalSignalDSL.g:16066:3: rule__XSynchronizedExpression__ParamAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ParamAssignment_1();
@@ -51217,14 +53141,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2"
-    // InternalSignalDSL.g:15487:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
+    // InternalSignalDSL.g:16074:1: rule__XSynchronizedExpression__Group__2 : rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 ;
     public final void rule__XSynchronizedExpression__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15491:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
-            // InternalSignalDSL.g:15492:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            // InternalSignalDSL.g:16078:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalSignalDSL.g:16079:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
             {
             pushFollow(FOLLOW_35);
             rule__XSynchronizedExpression__Group__2__Impl();
@@ -51255,22 +53179,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__2__Impl"
-    // InternalSignalDSL.g:15499:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:16086:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
     public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15503:1: ( ( ')' ) )
-            // InternalSignalDSL.g:15504:1: ( ')' )
+            // InternalSignalDSL.g:16090:1: ( ( ')' ) )
+            // InternalSignalDSL.g:16091:1: ( ')' )
             {
-            // InternalSignalDSL.g:15504:1: ( ')' )
-            // InternalSignalDSL.g:15505:2: ')'
+            // InternalSignalDSL.g:16091:1: ( ')' )
+            // InternalSignalDSL.g:16092:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
             }
@@ -51296,14 +53220,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3"
-    // InternalSignalDSL.g:15514:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    // InternalSignalDSL.g:16101:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
     public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15518:1: ( rule__XSynchronizedExpression__Group__3__Impl )
-            // InternalSignalDSL.g:15519:2: rule__XSynchronizedExpression__Group__3__Impl
+            // InternalSignalDSL.g:16105:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalSignalDSL.g:16106:2: rule__XSynchronizedExpression__Group__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group__3__Impl();
@@ -51329,23 +53253,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group__3__Impl"
-    // InternalSignalDSL.g:15525:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    // InternalSignalDSL.g:16112:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
     public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15529:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
-            // InternalSignalDSL.g:15530:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:16116:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalSignalDSL.g:16117:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
             {
-            // InternalSignalDSL.g:15530:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
-            // InternalSignalDSL.g:15531:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalSignalDSL.g:16117:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalSignalDSL.g:16118:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
             }
-            // InternalSignalDSL.g:15532:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
-            // InternalSignalDSL.g:15532:3: rule__XSynchronizedExpression__ExpressionAssignment_3
+            // InternalSignalDSL.g:16119:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalSignalDSL.g:16119:3: rule__XSynchronizedExpression__ExpressionAssignment_3
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__ExpressionAssignment_3();
@@ -51380,14 +53304,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0"
-    // InternalSignalDSL.g:15541:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
+    // InternalSignalDSL.g:16128:1: rule__XSynchronizedExpression__Group_0__0 : rule__XSynchronizedExpression__Group_0__0__Impl ;
     public final void rule__XSynchronizedExpression__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15545:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
-            // InternalSignalDSL.g:15546:2: rule__XSynchronizedExpression__Group_0__0__Impl
+            // InternalSignalDSL.g:16132:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalSignalDSL.g:16133:2: rule__XSynchronizedExpression__Group_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0__0__Impl();
@@ -51413,23 +53337,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0__0__Impl"
-    // InternalSignalDSL.g:15552:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
+    // InternalSignalDSL.g:16139:1: rule__XSynchronizedExpression__Group_0__0__Impl : ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) ;
     public final void rule__XSynchronizedExpression__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15556:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
-            // InternalSignalDSL.g:15557:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:16143:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalSignalDSL.g:16144:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
             {
-            // InternalSignalDSL.g:15557:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
-            // InternalSignalDSL.g:15558:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:16144:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalSignalDSL.g:16145:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
             }
-            // InternalSignalDSL.g:15559:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
-            // InternalSignalDSL.g:15559:3: rule__XSynchronizedExpression__Group_0_0__0
+            // InternalSignalDSL.g:16146:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalSignalDSL.g:16146:3: rule__XSynchronizedExpression__Group_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__0();
@@ -51464,14 +53388,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0"
-    // InternalSignalDSL.g:15568:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
+    // InternalSignalDSL.g:16155:1: rule__XSynchronizedExpression__Group_0_0__0 : rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 ;
     public final void rule__XSynchronizedExpression__Group_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15572:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
-            // InternalSignalDSL.g:15573:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            // InternalSignalDSL.g:16159:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalSignalDSL.g:16160:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
             {
             pushFollow(FOLLOW_110);
             rule__XSynchronizedExpression__Group_0_0__0__Impl();
@@ -51502,23 +53426,23 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__0__Impl"
-    // InternalSignalDSL.g:15580:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:16167:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15584:1: ( ( () ) )
-            // InternalSignalDSL.g:15585:1: ( () )
+            // InternalSignalDSL.g:16171:1: ( ( () ) )
+            // InternalSignalDSL.g:16172:1: ( () )
             {
-            // InternalSignalDSL.g:15585:1: ( () )
-            // InternalSignalDSL.g:15586:2: ()
+            // InternalSignalDSL.g:16172:1: ( () )
+            // InternalSignalDSL.g:16173:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
             }
-            // InternalSignalDSL.g:15587:2: ()
-            // InternalSignalDSL.g:15587:3: 
+            // InternalSignalDSL.g:16174:2: ()
+            // InternalSignalDSL.g:16174:3: 
             {
             }
 
@@ -51543,14 +53467,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1"
-    // InternalSignalDSL.g:15595:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
+    // InternalSignalDSL.g:16182:1: rule__XSynchronizedExpression__Group_0_0__1 : rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 ;
     public final void rule__XSynchronizedExpression__Group_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15599:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
-            // InternalSignalDSL.g:15600:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            // InternalSignalDSL.g:16186:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalSignalDSL.g:16187:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
             {
             pushFollow(FOLLOW_31);
             rule__XSynchronizedExpression__Group_0_0__1__Impl();
@@ -51581,22 +53505,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__1__Impl"
-    // InternalSignalDSL.g:15607:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
+    // InternalSignalDSL.g:16194:1: rule__XSynchronizedExpression__Group_0_0__1__Impl : ( 'synchronized' ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15611:1: ( ( 'synchronized' ) )
-            // InternalSignalDSL.g:15612:1: ( 'synchronized' )
+            // InternalSignalDSL.g:16198:1: ( ( 'synchronized' ) )
+            // InternalSignalDSL.g:16199:1: ( 'synchronized' )
             {
-            // InternalSignalDSL.g:15612:1: ( 'synchronized' )
-            // InternalSignalDSL.g:15613:2: 'synchronized'
+            // InternalSignalDSL.g:16199:1: ( 'synchronized' )
+            // InternalSignalDSL.g:16200:2: 'synchronized'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
-            match(input,94,FOLLOW_2); if (state.failed) return ;
+            match(input,103,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
             }
@@ -51622,14 +53546,14 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2"
-    // InternalSignalDSL.g:15622:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
+    // InternalSignalDSL.g:16209:1: rule__XSynchronizedExpression__Group_0_0__2 : rule__XSynchronizedExpression__Group_0_0__2__Impl ;
     public final void rule__XSynchronizedExpression__Group_0_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15626:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
-            // InternalSignalDSL.g:15627:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
+            // InternalSignalDSL.g:16213:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalSignalDSL.g:16214:2: rule__XSynchronizedExpression__Group_0_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XSynchronizedExpression__Group_0_0__2__Impl();
@@ -51655,22 +53579,22 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__Group_0_0__2__Impl"
-    // InternalSignalDSL.g:15633:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:16220:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
     public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15637:1: ( ( '(' ) )
-            // InternalSignalDSL.g:15638:1: ( '(' )
+            // InternalSignalDSL.g:16224:1: ( ( '(' ) )
+            // InternalSignalDSL.g:16225:1: ( '(' )
             {
-            // InternalSignalDSL.g:15638:1: ( '(' )
-            // InternalSignalDSL.g:15639:2: '('
+            // InternalSignalDSL.g:16225:1: ( '(' )
+            // InternalSignalDSL.g:16226:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
             }
@@ -51696,14 +53620,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0"
-    // InternalSignalDSL.g:15649:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
+    // InternalSignalDSL.g:16236:1: rule__XCatchClause__Group__0 : rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 ;
     public final void rule__XCatchClause__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15653:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
-            // InternalSignalDSL.g:15654:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            // InternalSignalDSL.g:16240:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalSignalDSL.g:16241:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
             {
             pushFollow(FOLLOW_31);
             rule__XCatchClause__Group__0__Impl();
@@ -51734,25 +53658,25 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__0__Impl"
-    // InternalSignalDSL.g:15661:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    // InternalSignalDSL.g:16248:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
     public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15665:1: ( ( ( 'catch' ) ) )
-            // InternalSignalDSL.g:15666:1: ( ( 'catch' ) )
+            // InternalSignalDSL.g:16252:1: ( ( ( 'catch' ) ) )
+            // InternalSignalDSL.g:16253:1: ( ( 'catch' ) )
             {
-            // InternalSignalDSL.g:15666:1: ( ( 'catch' ) )
-            // InternalSignalDSL.g:15667:2: ( 'catch' )
+            // InternalSignalDSL.g:16253:1: ( ( 'catch' ) )
+            // InternalSignalDSL.g:16254:2: ( 'catch' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
             }
-            // InternalSignalDSL.g:15668:2: ( 'catch' )
-            // InternalSignalDSL.g:15668:3: 'catch'
+            // InternalSignalDSL.g:16255:2: ( 'catch' )
+            // InternalSignalDSL.g:16255:3: 'catch'
             {
-            match(input,95,FOLLOW_2); if (state.failed) return ;
+            match(input,104,FOLLOW_2); if (state.failed) return ;
 
             }
 
@@ -51781,14 +53705,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1"
-    // InternalSignalDSL.g:15676:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
+    // InternalSignalDSL.g:16263:1: rule__XCatchClause__Group__1 : rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 ;
     public final void rule__XCatchClause__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15680:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
-            // InternalSignalDSL.g:15681:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            // InternalSignalDSL.g:16267:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalSignalDSL.g:16268:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
             {
             pushFollow(FOLLOW_52);
             rule__XCatchClause__Group__1__Impl();
@@ -51819,22 +53743,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__1__Impl"
-    // InternalSignalDSL.g:15688:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:16275:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
     public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15692:1: ( ( '(' ) )
-            // InternalSignalDSL.g:15693:1: ( '(' )
+            // InternalSignalDSL.g:16279:1: ( ( '(' ) )
+            // InternalSignalDSL.g:16280:1: ( '(' )
             {
-            // InternalSignalDSL.g:15693:1: ( '(' )
-            // InternalSignalDSL.g:15694:2: '('
+            // InternalSignalDSL.g:16280:1: ( '(' )
+            // InternalSignalDSL.g:16281:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
             }
@@ -51860,14 +53784,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2"
-    // InternalSignalDSL.g:15703:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
+    // InternalSignalDSL.g:16290:1: rule__XCatchClause__Group__2 : rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 ;
     public final void rule__XCatchClause__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15707:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
-            // InternalSignalDSL.g:15708:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            // InternalSignalDSL.g:16294:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalSignalDSL.g:16295:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
             {
             pushFollow(FOLLOW_80);
             rule__XCatchClause__Group__2__Impl();
@@ -51898,23 +53822,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__2__Impl"
-    // InternalSignalDSL.g:15715:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    // InternalSignalDSL.g:16302:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
     public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15719:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
-            // InternalSignalDSL.g:15720:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalSignalDSL.g:16306:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalSignalDSL.g:16307:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
             {
-            // InternalSignalDSL.g:15720:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
-            // InternalSignalDSL.g:15721:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalSignalDSL.g:16307:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalSignalDSL.g:16308:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
             }
-            // InternalSignalDSL.g:15722:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
-            // InternalSignalDSL.g:15722:3: rule__XCatchClause__DeclaredParamAssignment_2
+            // InternalSignalDSL.g:16309:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalSignalDSL.g:16309:3: rule__XCatchClause__DeclaredParamAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__DeclaredParamAssignment_2();
@@ -51949,14 +53873,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3"
-    // InternalSignalDSL.g:15730:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
+    // InternalSignalDSL.g:16317:1: rule__XCatchClause__Group__3 : rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 ;
     public final void rule__XCatchClause__Group__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15734:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
-            // InternalSignalDSL.g:15735:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            // InternalSignalDSL.g:16321:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalSignalDSL.g:16322:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
             {
             pushFollow(FOLLOW_35);
             rule__XCatchClause__Group__3__Impl();
@@ -51987,22 +53911,22 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__3__Impl"
-    // InternalSignalDSL.g:15742:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:16329:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
     public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15746:1: ( ( ')' ) )
-            // InternalSignalDSL.g:15747:1: ( ')' )
+            // InternalSignalDSL.g:16333:1: ( ( ')' ) )
+            // InternalSignalDSL.g:16334:1: ( ')' )
             {
-            // InternalSignalDSL.g:15747:1: ( ')' )
-            // InternalSignalDSL.g:15748:2: ')'
+            // InternalSignalDSL.g:16334:1: ( ')' )
+            // InternalSignalDSL.g:16335:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
             }
@@ -52028,14 +53952,14 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4"
-    // InternalSignalDSL.g:15757:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    // InternalSignalDSL.g:16344:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
     public final void rule__XCatchClause__Group__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15761:1: ( rule__XCatchClause__Group__4__Impl )
-            // InternalSignalDSL.g:15762:2: rule__XCatchClause__Group__4__Impl
+            // InternalSignalDSL.g:16348:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalSignalDSL.g:16349:2: rule__XCatchClause__Group__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__Group__4__Impl();
@@ -52061,23 +53985,23 @@
 
 
     // $ANTLR start "rule__XCatchClause__Group__4__Impl"
-    // InternalSignalDSL.g:15768:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    // InternalSignalDSL.g:16355:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
     public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15772:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
-            // InternalSignalDSL.g:15773:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalSignalDSL.g:16359:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalSignalDSL.g:16360:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
             {
-            // InternalSignalDSL.g:15773:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
-            // InternalSignalDSL.g:15774:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalSignalDSL.g:16360:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalSignalDSL.g:16361:2: ( rule__XCatchClause__ExpressionAssignment_4 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
             }
-            // InternalSignalDSL.g:15775:2: ( rule__XCatchClause__ExpressionAssignment_4 )
-            // InternalSignalDSL.g:15775:3: rule__XCatchClause__ExpressionAssignment_4
+            // InternalSignalDSL.g:16362:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalSignalDSL.g:16362:3: rule__XCatchClause__ExpressionAssignment_4
             {
             pushFollow(FOLLOW_2);
             rule__XCatchClause__ExpressionAssignment_4();
@@ -52112,14 +54036,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0"
-    // InternalSignalDSL.g:15784:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
+    // InternalSignalDSL.g:16371:1: rule__QualifiedName__Group__0 : rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 ;
     public final void rule__QualifiedName__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15788:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
-            // InternalSignalDSL.g:15789:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            // InternalSignalDSL.g:16375:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalSignalDSL.g:16376:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
             {
             pushFollow(FOLLOW_111);
             rule__QualifiedName__Group__0__Impl();
@@ -52150,17 +54074,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__0__Impl"
-    // InternalSignalDSL.g:15796:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    // InternalSignalDSL.g:16383:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15800:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:15801:1: ( ruleValidID )
+            // InternalSignalDSL.g:16387:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:16388:1: ( ruleValidID )
             {
-            // InternalSignalDSL.g:15801:1: ( ruleValidID )
-            // InternalSignalDSL.g:15802:2: ruleValidID
+            // InternalSignalDSL.g:16388:1: ( ruleValidID )
+            // InternalSignalDSL.g:16389:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
@@ -52195,14 +54119,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1"
-    // InternalSignalDSL.g:15811:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    // InternalSignalDSL.g:16398:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
     public final void rule__QualifiedName__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15815:1: ( rule__QualifiedName__Group__1__Impl )
-            // InternalSignalDSL.g:15816:2: rule__QualifiedName__Group__1__Impl
+            // InternalSignalDSL.g:16402:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalSignalDSL.g:16403:2: rule__QualifiedName__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group__1__Impl();
@@ -52228,35 +54152,35 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group__1__Impl"
-    // InternalSignalDSL.g:15822:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
+    // InternalSignalDSL.g:16409:1: rule__QualifiedName__Group__1__Impl : ( ( rule__QualifiedName__Group_1__0 )* ) ;
     public final void rule__QualifiedName__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15826:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
-            // InternalSignalDSL.g:15827:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalSignalDSL.g:16413:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalSignalDSL.g:16414:1: ( ( rule__QualifiedName__Group_1__0 )* )
             {
-            // InternalSignalDSL.g:15827:1: ( ( rule__QualifiedName__Group_1__0 )* )
-            // InternalSignalDSL.g:15828:2: ( rule__QualifiedName__Group_1__0 )*
+            // InternalSignalDSL.g:16414:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalSignalDSL.g:16415:2: ( rule__QualifiedName__Group_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:15829:2: ( rule__QualifiedName__Group_1__0 )*
-            loop129:
+            // InternalSignalDSL.g:16416:2: ( rule__QualifiedName__Group_1__0 )*
+            loop127:
             do {
-                int alt129=2;
-                int LA129_0 = input.LA(1);
+                int alt127=2;
+                int LA127_0 = input.LA(1);
 
-                if ( (LA129_0==43) ) {
-                    int LA129_2 = input.LA(2);
+                if ( (LA127_0==43) ) {
+                    int LA127_2 = input.LA(2);
 
-                    if ( (LA129_2==RULE_ID) ) {
-                        int LA129_3 = input.LA(3);
+                    if ( (LA127_2==RULE_ID) ) {
+                        int LA127_3 = input.LA(3);
 
-                        if ( (synpred173_InternalSignalDSL()) ) {
-                            alt129=1;
+                        if ( (synpred179_InternalSignalDSL()) ) {
+                            alt127=1;
                         }
 
 
@@ -52266,9 +54190,9 @@
                 }
 
 
-                switch (alt129) {
+                switch (alt127) {
             	case 1 :
-            	    // InternalSignalDSL.g:15829:3: rule__QualifiedName__Group_1__0
+            	    // InternalSignalDSL.g:16416:3: rule__QualifiedName__Group_1__0
             	    {
             	    pushFollow(FOLLOW_112);
             	    rule__QualifiedName__Group_1__0();
@@ -52280,7 +54204,7 @@
             	    break;
 
             	default :
-            	    break loop129;
+            	    break loop127;
                 }
             } while (true);
 
@@ -52309,16 +54233,16 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0"
-    // InternalSignalDSL.g:15838:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
+    // InternalSignalDSL.g:16425:1: rule__QualifiedName__Group_1__0 : rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 ;
     public final void rule__QualifiedName__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15842:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
-            // InternalSignalDSL.g:15843:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            // InternalSignalDSL.g:16429:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalSignalDSL.g:16430:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__QualifiedName__Group_1__0__Impl();
 
             state._fsp--;
@@ -52347,23 +54271,23 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__0__Impl"
-    // InternalSignalDSL.g:15850:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    // InternalSignalDSL.g:16437:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
     public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15854:1: ( ( ( '.' ) ) )
-            // InternalSignalDSL.g:15855:1: ( ( '.' ) )
+            // InternalSignalDSL.g:16441:1: ( ( ( '.' ) ) )
+            // InternalSignalDSL.g:16442:1: ( ( '.' ) )
             {
-            // InternalSignalDSL.g:15855:1: ( ( '.' ) )
-            // InternalSignalDSL.g:15856:2: ( '.' )
+            // InternalSignalDSL.g:16442:1: ( ( '.' ) )
+            // InternalSignalDSL.g:16443:2: ( '.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
             }
-            // InternalSignalDSL.g:15857:2: ( '.' )
-            // InternalSignalDSL.g:15857:3: '.'
+            // InternalSignalDSL.g:16444:2: ( '.' )
+            // InternalSignalDSL.g:16444:3: '.'
             {
             match(input,43,FOLLOW_2); if (state.failed) return ;
 
@@ -52394,14 +54318,14 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1"
-    // InternalSignalDSL.g:15865:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
+    // InternalSignalDSL.g:16452:1: rule__QualifiedName__Group_1__1 : rule__QualifiedName__Group_1__1__Impl ;
     public final void rule__QualifiedName__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15869:1: ( rule__QualifiedName__Group_1__1__Impl )
-            // InternalSignalDSL.g:15870:2: rule__QualifiedName__Group_1__1__Impl
+            // InternalSignalDSL.g:16456:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalSignalDSL.g:16457:2: rule__QualifiedName__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedName__Group_1__1__Impl();
@@ -52427,17 +54351,17 @@
 
 
     // $ANTLR start "rule__QualifiedName__Group_1__1__Impl"
-    // InternalSignalDSL.g:15876:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    // InternalSignalDSL.g:16463:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15880:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:15881:1: ( ruleValidID )
+            // InternalSignalDSL.g:16467:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:16468:1: ( ruleValidID )
             {
-            // InternalSignalDSL.g:15881:1: ( ruleValidID )
-            // InternalSignalDSL.g:15882:2: ruleValidID
+            // InternalSignalDSL.g:16468:1: ( ruleValidID )
+            // InternalSignalDSL.g:16469:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1()); 
@@ -52472,14 +54396,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0"
-    // InternalSignalDSL.g:15892:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
+    // InternalSignalDSL.g:16479:1: rule__Number__Group_1__0 : rule__Number__Group_1__0__Impl rule__Number__Group_1__1 ;
     public final void rule__Number__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15896:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
-            // InternalSignalDSL.g:15897:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            // InternalSignalDSL.g:16483:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalSignalDSL.g:16484:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
             {
             pushFollow(FOLLOW_111);
             rule__Number__Group_1__0__Impl();
@@ -52510,23 +54434,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1__0__Impl"
-    // InternalSignalDSL.g:15904:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
+    // InternalSignalDSL.g:16491:1: rule__Number__Group_1__0__Impl : ( ( rule__Number__Alternatives_1_0 ) ) ;
     public final void rule__Number__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15908:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
-            // InternalSignalDSL.g:15909:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalSignalDSL.g:16495:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalSignalDSL.g:16496:1: ( ( rule__Number__Alternatives_1_0 ) )
             {
-            // InternalSignalDSL.g:15909:1: ( ( rule__Number__Alternatives_1_0 ) )
-            // InternalSignalDSL.g:15910:2: ( rule__Number__Alternatives_1_0 )
+            // InternalSignalDSL.g:16496:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalSignalDSL.g:16497:2: ( rule__Number__Alternatives_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
             }
-            // InternalSignalDSL.g:15911:2: ( rule__Number__Alternatives_1_0 )
-            // InternalSignalDSL.g:15911:3: rule__Number__Alternatives_1_0
+            // InternalSignalDSL.g:16498:2: ( rule__Number__Alternatives_1_0 )
+            // InternalSignalDSL.g:16498:3: rule__Number__Alternatives_1_0
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_0();
@@ -52561,14 +54485,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1"
-    // InternalSignalDSL.g:15919:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
+    // InternalSignalDSL.g:16506:1: rule__Number__Group_1__1 : rule__Number__Group_1__1__Impl ;
     public final void rule__Number__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15923:1: ( rule__Number__Group_1__1__Impl )
-            // InternalSignalDSL.g:15924:2: rule__Number__Group_1__1__Impl
+            // InternalSignalDSL.g:16510:1: ( rule__Number__Group_1__1__Impl )
+            // InternalSignalDSL.g:16511:2: rule__Number__Group_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1__1__Impl();
@@ -52594,35 +54518,35 @@
 
 
     // $ANTLR start "rule__Number__Group_1__1__Impl"
-    // InternalSignalDSL.g:15930:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
+    // InternalSignalDSL.g:16517:1: rule__Number__Group_1__1__Impl : ( ( rule__Number__Group_1_1__0 )? ) ;
     public final void rule__Number__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15934:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
-            // InternalSignalDSL.g:15935:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalSignalDSL.g:16521:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalSignalDSL.g:16522:1: ( ( rule__Number__Group_1_1__0 )? )
             {
-            // InternalSignalDSL.g:15935:1: ( ( rule__Number__Group_1_1__0 )? )
-            // InternalSignalDSL.g:15936:2: ( rule__Number__Group_1_1__0 )?
+            // InternalSignalDSL.g:16522:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalSignalDSL.g:16523:2: ( rule__Number__Group_1_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getGroup_1_1()); 
             }
-            // InternalSignalDSL.g:15937:2: ( rule__Number__Group_1_1__0 )?
-            int alt130=2;
-            int LA130_0 = input.LA(1);
+            // InternalSignalDSL.g:16524:2: ( rule__Number__Group_1_1__0 )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
 
-            if ( (LA130_0==43) ) {
-                int LA130_1 = input.LA(2);
+            if ( (LA128_0==43) ) {
+                int LA128_1 = input.LA(2);
 
-                if ( ((LA130_1>=RULE_INT && LA130_1<=RULE_DECIMAL)) ) {
-                    alt130=1;
+                if ( ((LA128_1>=RULE_INT && LA128_1<=RULE_DECIMAL)) ) {
+                    alt128=1;
                 }
             }
-            switch (alt130) {
+            switch (alt128) {
                 case 1 :
-                    // InternalSignalDSL.g:15937:3: rule__Number__Group_1_1__0
+                    // InternalSignalDSL.g:16524:3: rule__Number__Group_1_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__Number__Group_1_1__0();
@@ -52660,14 +54584,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0"
-    // InternalSignalDSL.g:15946:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
+    // InternalSignalDSL.g:16533:1: rule__Number__Group_1_1__0 : rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 ;
     public final void rule__Number__Group_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15950:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
-            // InternalSignalDSL.g:15951:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            // InternalSignalDSL.g:16537:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalSignalDSL.g:16538:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
             {
             pushFollow(FOLLOW_113);
             rule__Number__Group_1_1__0__Impl();
@@ -52698,17 +54622,17 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__0__Impl"
-    // InternalSignalDSL.g:15958:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:16545:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
     public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15962:1: ( ( '.' ) )
-            // InternalSignalDSL.g:15963:1: ( '.' )
+            // InternalSignalDSL.g:16549:1: ( ( '.' ) )
+            // InternalSignalDSL.g:16550:1: ( '.' )
             {
-            // InternalSignalDSL.g:15963:1: ( '.' )
-            // InternalSignalDSL.g:15964:2: '.'
+            // InternalSignalDSL.g:16550:1: ( '.' )
+            // InternalSignalDSL.g:16551:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
@@ -52739,14 +54663,14 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1"
-    // InternalSignalDSL.g:15973:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
+    // InternalSignalDSL.g:16560:1: rule__Number__Group_1_1__1 : rule__Number__Group_1_1__1__Impl ;
     public final void rule__Number__Group_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15977:1: ( rule__Number__Group_1_1__1__Impl )
-            // InternalSignalDSL.g:15978:2: rule__Number__Group_1_1__1__Impl
+            // InternalSignalDSL.g:16564:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalSignalDSL.g:16565:2: rule__Number__Group_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__Number__Group_1_1__1__Impl();
@@ -52772,23 +54696,23 @@
 
 
     // $ANTLR start "rule__Number__Group_1_1__1__Impl"
-    // InternalSignalDSL.g:15984:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
+    // InternalSignalDSL.g:16571:1: rule__Number__Group_1_1__1__Impl : ( ( rule__Number__Alternatives_1_1_1 ) ) ;
     public final void rule__Number__Group_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:15988:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
-            // InternalSignalDSL.g:15989:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalSignalDSL.g:16575:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalSignalDSL.g:16576:1: ( ( rule__Number__Alternatives_1_1_1 ) )
             {
-            // InternalSignalDSL.g:15989:1: ( ( rule__Number__Alternatives_1_1_1 ) )
-            // InternalSignalDSL.g:15990:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalSignalDSL.g:16576:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalSignalDSL.g:16577:2: ( rule__Number__Alternatives_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
             }
-            // InternalSignalDSL.g:15991:2: ( rule__Number__Alternatives_1_1_1 )
-            // InternalSignalDSL.g:15991:3: rule__Number__Alternatives_1_1_1
+            // InternalSignalDSL.g:16578:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalSignalDSL.g:16578:3: rule__Number__Alternatives_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__Number__Alternatives_1_1_1();
@@ -52823,14 +54747,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0"
-    // InternalSignalDSL.g:16000:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
+    // InternalSignalDSL.g:16587:1: rule__JvmTypeReference__Group_0__0 : rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 ;
     public final void rule__JvmTypeReference__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16004:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
-            // InternalSignalDSL.g:16005:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            // InternalSignalDSL.g:16591:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalSignalDSL.g:16592:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
             {
             pushFollow(FOLLOW_39);
             rule__JvmTypeReference__Group_0__0__Impl();
@@ -52861,17 +54785,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__0__Impl"
-    // InternalSignalDSL.g:16012:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    // InternalSignalDSL.g:16599:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
     public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16016:1: ( ( ruleJvmParameterizedTypeReference ) )
-            // InternalSignalDSL.g:16017:1: ( ruleJvmParameterizedTypeReference )
+            // InternalSignalDSL.g:16603:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalSignalDSL.g:16604:1: ( ruleJvmParameterizedTypeReference )
             {
-            // InternalSignalDSL.g:16017:1: ( ruleJvmParameterizedTypeReference )
-            // InternalSignalDSL.g:16018:2: ruleJvmParameterizedTypeReference
+            // InternalSignalDSL.g:16604:1: ( ruleJvmParameterizedTypeReference )
+            // InternalSignalDSL.g:16605:2: ruleJvmParameterizedTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
@@ -52906,14 +54830,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1"
-    // InternalSignalDSL.g:16027:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
+    // InternalSignalDSL.g:16614:1: rule__JvmTypeReference__Group_0__1 : rule__JvmTypeReference__Group_0__1__Impl ;
     public final void rule__JvmTypeReference__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16031:1: ( rule__JvmTypeReference__Group_0__1__Impl )
-            // InternalSignalDSL.g:16032:2: rule__JvmTypeReference__Group_0__1__Impl
+            // InternalSignalDSL.g:16618:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalSignalDSL.g:16619:2: rule__JvmTypeReference__Group_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0__1__Impl();
@@ -52939,35 +54863,35 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0__1__Impl"
-    // InternalSignalDSL.g:16038:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
+    // InternalSignalDSL.g:16625:1: rule__JvmTypeReference__Group_0__1__Impl : ( ( rule__JvmTypeReference__Group_0_1__0 )* ) ;
     public final void rule__JvmTypeReference__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16042:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
-            // InternalSignalDSL.g:16043:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalSignalDSL.g:16629:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalSignalDSL.g:16630:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
             {
-            // InternalSignalDSL.g:16043:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
-            // InternalSignalDSL.g:16044:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            // InternalSignalDSL.g:16630:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalSignalDSL.g:16631:2: ( rule__JvmTypeReference__Group_0_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:16045:2: ( rule__JvmTypeReference__Group_0_1__0 )*
-            loop131:
+            // InternalSignalDSL.g:16632:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            loop129:
             do {
-                int alt131=2;
-                int LA131_0 = input.LA(1);
+                int alt129=2;
+                int LA129_0 = input.LA(1);
 
-                if ( (LA131_0==76) ) {
-                    int LA131_2 = input.LA(2);
+                if ( (LA129_0==85) ) {
+                    int LA129_2 = input.LA(2);
 
-                    if ( (LA131_2==74) ) {
-                        int LA131_3 = input.LA(3);
+                    if ( (LA129_2==83) ) {
+                        int LA129_3 = input.LA(3);
 
-                        if ( (synpred175_InternalSignalDSL()) ) {
-                            alt131=1;
+                        if ( (synpred181_InternalSignalDSL()) ) {
+                            alt129=1;
                         }
 
 
@@ -52977,9 +54901,9 @@
                 }
 
 
-                switch (alt131) {
+                switch (alt129) {
             	case 1 :
-            	    // InternalSignalDSL.g:16045:3: rule__JvmTypeReference__Group_0_1__0
+            	    // InternalSignalDSL.g:16632:3: rule__JvmTypeReference__Group_0_1__0
             	    {
             	    pushFollow(FOLLOW_103);
             	    rule__JvmTypeReference__Group_0_1__0();
@@ -52991,7 +54915,7 @@
             	    break;
 
             	default :
-            	    break loop131;
+            	    break loop129;
                 }
             } while (true);
 
@@ -53020,14 +54944,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0"
-    // InternalSignalDSL.g:16054:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
+    // InternalSignalDSL.g:16641:1: rule__JvmTypeReference__Group_0_1__0 : rule__JvmTypeReference__Group_0_1__0__Impl ;
     public final void rule__JvmTypeReference__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16058:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
-            // InternalSignalDSL.g:16059:2: rule__JvmTypeReference__Group_0_1__0__Impl
+            // InternalSignalDSL.g:16645:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalSignalDSL.g:16646:2: rule__JvmTypeReference__Group_0_1__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1__0__Impl();
@@ -53053,23 +54977,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:16065:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
+    // InternalSignalDSL.g:16652:1: rule__JvmTypeReference__Group_0_1__0__Impl : ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) ;
     public final void rule__JvmTypeReference__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16069:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
-            // InternalSignalDSL.g:16070:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalSignalDSL.g:16656:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalSignalDSL.g:16657:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
             {
-            // InternalSignalDSL.g:16070:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
-            // InternalSignalDSL.g:16071:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalSignalDSL.g:16657:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalSignalDSL.g:16658:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
             }
-            // InternalSignalDSL.g:16072:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
-            // InternalSignalDSL.g:16072:3: rule__JvmTypeReference__Group_0_1_0__0
+            // InternalSignalDSL.g:16659:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalSignalDSL.g:16659:3: rule__JvmTypeReference__Group_0_1_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__0();
@@ -53104,14 +55028,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0"
-    // InternalSignalDSL.g:16081:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
+    // InternalSignalDSL.g:16668:1: rule__JvmTypeReference__Group_0_1_0__0 : rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 ;
     public final void rule__JvmTypeReference__Group_0_1_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16085:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
-            // InternalSignalDSL.g:16086:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            // InternalSignalDSL.g:16672:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalSignalDSL.g:16673:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
             {
             pushFollow(FOLLOW_39);
             rule__JvmTypeReference__Group_0_1_0__0__Impl();
@@ -53142,23 +55066,23 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__0__Impl"
-    // InternalSignalDSL.g:16093:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:16680:1: rule__JvmTypeReference__Group_0_1_0__0__Impl : ( () ) ;
     public final void rule__JvmTypeReference__Group_0_1_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16097:1: ( ( () ) )
-            // InternalSignalDSL.g:16098:1: ( () )
+            // InternalSignalDSL.g:16684:1: ( ( () ) )
+            // InternalSignalDSL.g:16685:1: ( () )
             {
-            // InternalSignalDSL.g:16098:1: ( () )
-            // InternalSignalDSL.g:16099:2: ()
+            // InternalSignalDSL.g:16685:1: ( () )
+            // InternalSignalDSL.g:16686:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
             }
-            // InternalSignalDSL.g:16100:2: ()
-            // InternalSignalDSL.g:16100:3: 
+            // InternalSignalDSL.g:16687:2: ()
+            // InternalSignalDSL.g:16687:3: 
             {
             }
 
@@ -53183,14 +55107,14 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1"
-    // InternalSignalDSL.g:16108:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
+    // InternalSignalDSL.g:16695:1: rule__JvmTypeReference__Group_0_1_0__1 : rule__JvmTypeReference__Group_0_1_0__1__Impl ;
     public final void rule__JvmTypeReference__Group_0_1_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16112:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
-            // InternalSignalDSL.g:16113:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
+            // InternalSignalDSL.g:16699:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalSignalDSL.g:16700:2: rule__JvmTypeReference__Group_0_1_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmTypeReference__Group_0_1_0__1__Impl();
@@ -53216,17 +55140,17 @@
 
 
     // $ANTLR start "rule__JvmTypeReference__Group_0_1_0__1__Impl"
-    // InternalSignalDSL.g:16119:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
+    // InternalSignalDSL.g:16706:1: rule__JvmTypeReference__Group_0_1_0__1__Impl : ( ruleArrayBrackets ) ;
     public final void rule__JvmTypeReference__Group_0_1_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16123:1: ( ( ruleArrayBrackets ) )
-            // InternalSignalDSL.g:16124:1: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:16710:1: ( ( ruleArrayBrackets ) )
+            // InternalSignalDSL.g:16711:1: ( ruleArrayBrackets )
             {
-            // InternalSignalDSL.g:16124:1: ( ruleArrayBrackets )
-            // InternalSignalDSL.g:16125:2: ruleArrayBrackets
+            // InternalSignalDSL.g:16711:1: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:16712:2: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
@@ -53261,14 +55185,14 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0"
-    // InternalSignalDSL.g:16135:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
+    // InternalSignalDSL.g:16722:1: rule__ArrayBrackets__Group__0 : rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 ;
     public final void rule__ArrayBrackets__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16139:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
-            // InternalSignalDSL.g:16140:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            // InternalSignalDSL.g:16726:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalSignalDSL.g:16727:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
             {
             pushFollow(FOLLOW_77);
             rule__ArrayBrackets__Group__0__Impl();
@@ -53299,22 +55223,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__0__Impl"
-    // InternalSignalDSL.g:16147:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    // InternalSignalDSL.g:16734:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
     public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16151:1: ( ( '[' ) )
-            // InternalSignalDSL.g:16152:1: ( '[' )
+            // InternalSignalDSL.g:16738:1: ( ( '[' ) )
+            // InternalSignalDSL.g:16739:1: ( '[' )
             {
-            // InternalSignalDSL.g:16152:1: ( '[' )
-            // InternalSignalDSL.g:16153:2: '['
+            // InternalSignalDSL.g:16739:1: ( '[' )
+            // InternalSignalDSL.g:16740:2: '['
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
-            match(input,76,FOLLOW_2); if (state.failed) return ;
+            match(input,85,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
             }
@@ -53340,14 +55264,14 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1"
-    // InternalSignalDSL.g:16162:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    // InternalSignalDSL.g:16749:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
     public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16166:1: ( rule__ArrayBrackets__Group__1__Impl )
-            // InternalSignalDSL.g:16167:2: rule__ArrayBrackets__Group__1__Impl
+            // InternalSignalDSL.g:16753:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalSignalDSL.g:16754:2: rule__ArrayBrackets__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__ArrayBrackets__Group__1__Impl();
@@ -53373,22 +55297,22 @@
 
 
     // $ANTLR start "rule__ArrayBrackets__Group__1__Impl"
-    // InternalSignalDSL.g:16173:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    // InternalSignalDSL.g:16760:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
     public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16177:1: ( ( ']' ) )
-            // InternalSignalDSL.g:16178:1: ( ']' )
+            // InternalSignalDSL.g:16764:1: ( ( ']' ) )
+            // InternalSignalDSL.g:16765:1: ( ']' )
             {
-            // InternalSignalDSL.g:16178:1: ( ']' )
-            // InternalSignalDSL.g:16179:2: ']'
+            // InternalSignalDSL.g:16765:1: ( ']' )
+            // InternalSignalDSL.g:16766:2: ']'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
-            match(input,74,FOLLOW_2); if (state.failed) return ;
+            match(input,83,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
             }
@@ -53414,14 +55338,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0"
-    // InternalSignalDSL.g:16189:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
+    // InternalSignalDSL.g:16776:1: rule__XFunctionTypeRef__Group__0 : rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 ;
     public final void rule__XFunctionTypeRef__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16193:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
-            // InternalSignalDSL.g:16194:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            // InternalSignalDSL.g:16780:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalSignalDSL.g:16781:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__XFunctionTypeRef__Group__0__Impl();
@@ -53452,31 +55376,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__0__Impl"
-    // InternalSignalDSL.g:16201:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
+    // InternalSignalDSL.g:16788:1: rule__XFunctionTypeRef__Group__0__Impl : ( ( rule__XFunctionTypeRef__Group_0__0 )? ) ;
     public final void rule__XFunctionTypeRef__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16205:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
-            // InternalSignalDSL.g:16206:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalSignalDSL.g:16792:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalSignalDSL.g:16793:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
             {
-            // InternalSignalDSL.g:16206:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
-            // InternalSignalDSL.g:16207:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            // InternalSignalDSL.g:16793:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalSignalDSL.g:16794:2: ( rule__XFunctionTypeRef__Group_0__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
             }
-            // InternalSignalDSL.g:16208:2: ( rule__XFunctionTypeRef__Group_0__0 )?
-            int alt132=2;
-            int LA132_0 = input.LA(1);
+            // InternalSignalDSL.g:16795:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            int alt130=2;
+            int LA130_0 = input.LA(1);
 
-            if ( (LA132_0==71) ) {
-                alt132=1;
+            if ( (LA130_0==80) ) {
+                alt130=1;
             }
-            switch (alt132) {
+            switch (alt130) {
                 case 1 :
-                    // InternalSignalDSL.g:16208:3: rule__XFunctionTypeRef__Group_0__0
+                    // InternalSignalDSL.g:16795:3: rule__XFunctionTypeRef__Group_0__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0__0();
@@ -53514,14 +55438,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1"
-    // InternalSignalDSL.g:16216:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
+    // InternalSignalDSL.g:16803:1: rule__XFunctionTypeRef__Group__1 : rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 ;
     public final void rule__XFunctionTypeRef__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16220:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
-            // InternalSignalDSL.g:16221:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            // InternalSignalDSL.g:16807:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalSignalDSL.g:16808:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
             {
             pushFollow(FOLLOW_52);
             rule__XFunctionTypeRef__Group__1__Impl();
@@ -53552,17 +55476,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__1__Impl"
-    // InternalSignalDSL.g:16228:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    // InternalSignalDSL.g:16815:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
     public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16232:1: ( ( '=>' ) )
-            // InternalSignalDSL.g:16233:1: ( '=>' )
+            // InternalSignalDSL.g:16819:1: ( ( '=>' ) )
+            // InternalSignalDSL.g:16820:1: ( '=>' )
             {
-            // InternalSignalDSL.g:16233:1: ( '=>' )
-            // InternalSignalDSL.g:16234:2: '=>'
+            // InternalSignalDSL.g:16820:1: ( '=>' )
+            // InternalSignalDSL.g:16821:2: '=>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
@@ -53593,14 +55517,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2"
-    // InternalSignalDSL.g:16243:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    // InternalSignalDSL.g:16830:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
     public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16247:1: ( rule__XFunctionTypeRef__Group__2__Impl )
-            // InternalSignalDSL.g:16248:2: rule__XFunctionTypeRef__Group__2__Impl
+            // InternalSignalDSL.g:16834:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalSignalDSL.g:16835:2: rule__XFunctionTypeRef__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group__2__Impl();
@@ -53626,23 +55550,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group__2__Impl"
-    // InternalSignalDSL.g:16254:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    // InternalSignalDSL.g:16841:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
     public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16258:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
-            // InternalSignalDSL.g:16259:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalSignalDSL.g:16845:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalSignalDSL.g:16846:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
             {
-            // InternalSignalDSL.g:16259:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
-            // InternalSignalDSL.g:16260:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalSignalDSL.g:16846:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalSignalDSL.g:16847:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
             }
-            // InternalSignalDSL.g:16261:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
-            // InternalSignalDSL.g:16261:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
+            // InternalSignalDSL.g:16848:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalSignalDSL.g:16848:3: rule__XFunctionTypeRef__ReturnTypeAssignment_2
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ReturnTypeAssignment_2();
@@ -53677,14 +55601,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0"
-    // InternalSignalDSL.g:16270:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
+    // InternalSignalDSL.g:16857:1: rule__XFunctionTypeRef__Group_0__0 : rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 ;
     public final void rule__XFunctionTypeRef__Group_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16274:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
-            // InternalSignalDSL.g:16275:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            // InternalSignalDSL.g:16861:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalSignalDSL.g:16862:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
             {
             pushFollow(FOLLOW_114);
             rule__XFunctionTypeRef__Group_0__0__Impl();
@@ -53715,22 +55639,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__0__Impl"
-    // InternalSignalDSL.g:16282:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    // InternalSignalDSL.g:16869:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
     public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16286:1: ( ( '(' ) )
-            // InternalSignalDSL.g:16287:1: ( '(' )
+            // InternalSignalDSL.g:16873:1: ( ( '(' ) )
+            // InternalSignalDSL.g:16874:1: ( '(' )
             {
-            // InternalSignalDSL.g:16287:1: ( '(' )
-            // InternalSignalDSL.g:16288:2: '('
+            // InternalSignalDSL.g:16874:1: ( '(' )
+            // InternalSignalDSL.g:16875:2: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
             }
@@ -53756,14 +55680,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1"
-    // InternalSignalDSL.g:16297:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
+    // InternalSignalDSL.g:16884:1: rule__XFunctionTypeRef__Group_0__1 : rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 ;
     public final void rule__XFunctionTypeRef__Group_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16301:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
-            // InternalSignalDSL.g:16302:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            // InternalSignalDSL.g:16888:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalSignalDSL.g:16889:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
             {
             pushFollow(FOLLOW_114);
             rule__XFunctionTypeRef__Group_0__1__Impl();
@@ -53794,31 +55718,31 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__1__Impl"
-    // InternalSignalDSL.g:16309:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
+    // InternalSignalDSL.g:16896:1: rule__XFunctionTypeRef__Group_0__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) ;
     public final void rule__XFunctionTypeRef__Group_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16313:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
-            // InternalSignalDSL.g:16314:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalSignalDSL.g:16900:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalSignalDSL.g:16901:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
             {
-            // InternalSignalDSL.g:16314:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
-            // InternalSignalDSL.g:16315:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            // InternalSignalDSL.g:16901:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalSignalDSL.g:16902:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
             }
-            // InternalSignalDSL.g:16316:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
-            int alt133=2;
-            int LA133_0 = input.LA(1);
+            // InternalSignalDSL.g:16903:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            int alt131=2;
+            int LA131_0 = input.LA(1);
 
-            if ( (LA133_0==RULE_ID||LA133_0==31||LA133_0==71) ) {
-                alt133=1;
+            if ( (LA131_0==RULE_ID||LA131_0==31||LA131_0==80) ) {
+                alt131=1;
             }
-            switch (alt133) {
+            switch (alt131) {
                 case 1 :
-                    // InternalSignalDSL.g:16316:3: rule__XFunctionTypeRef__Group_0_1__0
+                    // InternalSignalDSL.g:16903:3: rule__XFunctionTypeRef__Group_0_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__XFunctionTypeRef__Group_0_1__0();
@@ -53856,14 +55780,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2"
-    // InternalSignalDSL.g:16324:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
+    // InternalSignalDSL.g:16911:1: rule__XFunctionTypeRef__Group_0__2 : rule__XFunctionTypeRef__Group_0__2__Impl ;
     public final void rule__XFunctionTypeRef__Group_0__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16328:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
-            // InternalSignalDSL.g:16329:2: rule__XFunctionTypeRef__Group_0__2__Impl
+            // InternalSignalDSL.g:16915:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalSignalDSL.g:16916:2: rule__XFunctionTypeRef__Group_0__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0__2__Impl();
@@ -53889,22 +55813,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0__2__Impl"
-    // InternalSignalDSL.g:16335:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    // InternalSignalDSL.g:16922:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
     public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16339:1: ( ( ')' ) )
-            // InternalSignalDSL.g:16340:1: ( ')' )
+            // InternalSignalDSL.g:16926:1: ( ( ')' ) )
+            // InternalSignalDSL.g:16927:1: ( ')' )
             {
-            // InternalSignalDSL.g:16340:1: ( ')' )
-            // InternalSignalDSL.g:16341:2: ')'
+            // InternalSignalDSL.g:16927:1: ( ')' )
+            // InternalSignalDSL.g:16928:2: ')'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
-            match(input,72,FOLLOW_2); if (state.failed) return ;
+            match(input,81,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
             }
@@ -53930,14 +55854,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0"
-    // InternalSignalDSL.g:16351:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
+    // InternalSignalDSL.g:16938:1: rule__XFunctionTypeRef__Group_0_1__0 : rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 ;
     public final void rule__XFunctionTypeRef__Group_0_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16355:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
-            // InternalSignalDSL.g:16356:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            // InternalSignalDSL.g:16942:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalSignalDSL.g:16943:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
             {
             pushFollow(FOLLOW_33);
             rule__XFunctionTypeRef__Group_0_1__0__Impl();
@@ -53968,23 +55892,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__0__Impl"
-    // InternalSignalDSL.g:16363:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
+    // InternalSignalDSL.g:16950:1: rule__XFunctionTypeRef__Group_0_1__0__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) ;
     public final void rule__XFunctionTypeRef__Group_0_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16367:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
-            // InternalSignalDSL.g:16368:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:16954:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalSignalDSL.g:16955:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
             {
-            // InternalSignalDSL.g:16368:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
-            // InternalSignalDSL.g:16369:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalSignalDSL.g:16955:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalSignalDSL.g:16956:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
             }
-            // InternalSignalDSL.g:16370:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
-            // InternalSignalDSL.g:16370:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
+            // InternalSignalDSL.g:16957:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalSignalDSL.g:16957:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0();
@@ -54019,14 +55943,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1"
-    // InternalSignalDSL.g:16378:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
+    // InternalSignalDSL.g:16965:1: rule__XFunctionTypeRef__Group_0_1__1 : rule__XFunctionTypeRef__Group_0_1__1__Impl ;
     public final void rule__XFunctionTypeRef__Group_0_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16382:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
-            // InternalSignalDSL.g:16383:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
+            // InternalSignalDSL.g:16969:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalSignalDSL.g:16970:2: rule__XFunctionTypeRef__Group_0_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1__1__Impl();
@@ -54052,35 +55976,35 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1__1__Impl"
-    // InternalSignalDSL.g:16389:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
+    // InternalSignalDSL.g:16976:1: rule__XFunctionTypeRef__Group_0_1__1__Impl : ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) ;
     public final void rule__XFunctionTypeRef__Group_0_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16393:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
-            // InternalSignalDSL.g:16394:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:16980:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalSignalDSL.g:16981:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
             {
-            // InternalSignalDSL.g:16394:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
-            // InternalSignalDSL.g:16395:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            // InternalSignalDSL.g:16981:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalSignalDSL.g:16982:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
             }
-            // InternalSignalDSL.g:16396:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
-            loop134:
+            // InternalSignalDSL.g:16983:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            loop132:
             do {
-                int alt134=2;
-                int LA134_0 = input.LA(1);
+                int alt132=2;
+                int LA132_0 = input.LA(1);
 
-                if ( (LA134_0==73) ) {
-                    alt134=1;
+                if ( (LA132_0==82) ) {
+                    alt132=1;
                 }
 
 
-                switch (alt134) {
+                switch (alt132) {
             	case 1 :
-            	    // InternalSignalDSL.g:16396:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    // InternalSignalDSL.g:16983:3: rule__XFunctionTypeRef__Group_0_1_1__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__XFunctionTypeRef__Group_0_1_1__0();
@@ -54092,7 +56016,7 @@
             	    break;
 
             	default :
-            	    break loop134;
+            	    break loop132;
                 }
             } while (true);
 
@@ -54121,14 +56045,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0"
-    // InternalSignalDSL.g:16405:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
+    // InternalSignalDSL.g:16992:1: rule__XFunctionTypeRef__Group_0_1_1__0 : rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16409:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
-            // InternalSignalDSL.g:16410:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            // InternalSignalDSL.g:16996:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalSignalDSL.g:16997:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
             {
             pushFollow(FOLLOW_52);
             rule__XFunctionTypeRef__Group_0_1_1__0__Impl();
@@ -54159,22 +56083,22 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__0__Impl"
-    // InternalSignalDSL.g:16417:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:17004:1: rule__XFunctionTypeRef__Group_0_1_1__0__Impl : ( ',' ) ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16421:1: ( ( ',' ) )
-            // InternalSignalDSL.g:16422:1: ( ',' )
+            // InternalSignalDSL.g:17008:1: ( ( ',' ) )
+            // InternalSignalDSL.g:17009:1: ( ',' )
             {
-            // InternalSignalDSL.g:16422:1: ( ',' )
-            // InternalSignalDSL.g:16423:2: ','
+            // InternalSignalDSL.g:17009:1: ( ',' )
+            // InternalSignalDSL.g:17010:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
             }
@@ -54200,14 +56124,14 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1"
-    // InternalSignalDSL.g:16432:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
+    // InternalSignalDSL.g:17019:1: rule__XFunctionTypeRef__Group_0_1_1__1 : rule__XFunctionTypeRef__Group_0_1_1__1__Impl ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16436:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
-            // InternalSignalDSL.g:16437:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
+            // InternalSignalDSL.g:17023:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalSignalDSL.g:17024:2: rule__XFunctionTypeRef__Group_0_1_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__Group_0_1_1__1__Impl();
@@ -54233,23 +56157,23 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__Group_0_1_1__1__Impl"
-    // InternalSignalDSL.g:16443:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
+    // InternalSignalDSL.g:17030:1: rule__XFunctionTypeRef__Group_0_1_1__1__Impl : ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) ;
     public final void rule__XFunctionTypeRef__Group_0_1_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16447:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
-            // InternalSignalDSL.g:16448:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:17034:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalSignalDSL.g:17035:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
             {
-            // InternalSignalDSL.g:16448:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
-            // InternalSignalDSL.g:16449:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:17035:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalSignalDSL.g:17036:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
             }
-            // InternalSignalDSL.g:16450:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
-            // InternalSignalDSL.g:16450:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
+            // InternalSignalDSL.g:17037:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalSignalDSL.g:17037:3: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1
             {
             pushFollow(FOLLOW_2);
             rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1();
@@ -54284,14 +56208,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0"
-    // InternalSignalDSL.g:16459:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
+    // InternalSignalDSL.g:17046:1: rule__JvmParameterizedTypeReference__Group__0 : rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 ;
     public final void rule__JvmParameterizedTypeReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16463:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
-            // InternalSignalDSL.g:16464:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            // InternalSignalDSL.g:17050:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalSignalDSL.g:17051:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
             {
             pushFollow(FOLLOW_42);
             rule__JvmParameterizedTypeReference__Group__0__Impl();
@@ -54322,23 +56246,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__0__Impl"
-    // InternalSignalDSL.g:16471:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    // InternalSignalDSL.g:17058:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16475:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
-            // InternalSignalDSL.g:16476:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalSignalDSL.g:17062:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalSignalDSL.g:17063:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
             {
-            // InternalSignalDSL.g:16476:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
-            // InternalSignalDSL.g:16477:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalSignalDSL.g:17063:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalSignalDSL.g:17064:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
             }
-            // InternalSignalDSL.g:16478:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
-            // InternalSignalDSL.g:16478:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
+            // InternalSignalDSL.g:17065:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalSignalDSL.g:17065:3: rule__JvmParameterizedTypeReference__TypeAssignment_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_0();
@@ -54373,14 +56297,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1"
-    // InternalSignalDSL.g:16486:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    // InternalSignalDSL.g:17073:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16490:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
-            // InternalSignalDSL.g:16491:2: rule__JvmParameterizedTypeReference__Group__1__Impl
+            // InternalSignalDSL.g:17077:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalSignalDSL.g:17078:2: rule__JvmParameterizedTypeReference__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group__1__Impl();
@@ -54406,27 +56330,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group__1__Impl"
-    // InternalSignalDSL.g:16497:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
+    // InternalSignalDSL.g:17084:1: rule__JvmParameterizedTypeReference__Group__1__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) ;
     public final void rule__JvmParameterizedTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16501:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
-            // InternalSignalDSL.g:16502:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalSignalDSL.g:17088:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalSignalDSL.g:17089:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
             {
-            // InternalSignalDSL.g:16502:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
-            // InternalSignalDSL.g:16503:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            // InternalSignalDSL.g:17089:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalSignalDSL.g:17090:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
             }
-            // InternalSignalDSL.g:16504:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
-            int alt135=2;
-            alt135 = dfa135.predict(input);
-            switch (alt135) {
+            // InternalSignalDSL.g:17091:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            int alt133=2;
+            alt133 = dfa133.predict(input);
+            switch (alt133) {
                 case 1 :
-                    // InternalSignalDSL.g:16504:3: rule__JvmParameterizedTypeReference__Group_1__0
+                    // InternalSignalDSL.g:17091:3: rule__JvmParameterizedTypeReference__Group_1__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1__0();
@@ -54464,14 +56388,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0"
-    // InternalSignalDSL.g:16513:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
+    // InternalSignalDSL.g:17100:1: rule__JvmParameterizedTypeReference__Group_1__0 : rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16517:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
-            // InternalSignalDSL.g:16518:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            // InternalSignalDSL.g:17104:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalSignalDSL.g:17105:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
             {
             pushFollow(FOLLOW_72);
             rule__JvmParameterizedTypeReference__Group_1__0__Impl();
@@ -54502,23 +56426,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__0__Impl"
-    // InternalSignalDSL.g:16525:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    // InternalSignalDSL.g:17112:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16529:1: ( ( ( '<' ) ) )
-            // InternalSignalDSL.g:16530:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17116:1: ( ( ( '<' ) ) )
+            // InternalSignalDSL.g:17117:1: ( ( '<' ) )
             {
-            // InternalSignalDSL.g:16530:1: ( ( '<' ) )
-            // InternalSignalDSL.g:16531:2: ( '<' )
+            // InternalSignalDSL.g:17117:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17118:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
             }
-            // InternalSignalDSL.g:16532:2: ( '<' )
-            // InternalSignalDSL.g:16532:3: '<'
+            // InternalSignalDSL.g:17119:2: ( '<' )
+            // InternalSignalDSL.g:17119:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -54549,14 +56473,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1"
-    // InternalSignalDSL.g:16540:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
+    // InternalSignalDSL.g:17127:1: rule__JvmParameterizedTypeReference__Group_1__1 : rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16544:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
-            // InternalSignalDSL.g:16545:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            // InternalSignalDSL.g:17131:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalSignalDSL.g:17132:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
             {
             pushFollow(FOLLOW_73);
             rule__JvmParameterizedTypeReference__Group_1__1__Impl();
@@ -54587,23 +56511,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__1__Impl"
-    // InternalSignalDSL.g:16552:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
+    // InternalSignalDSL.g:17139:1: rule__JvmParameterizedTypeReference__Group_1__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16556:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
-            // InternalSignalDSL.g:16557:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:17143:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalSignalDSL.g:17144:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
             {
-            // InternalSignalDSL.g:16557:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
-            // InternalSignalDSL.g:16558:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:17144:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalSignalDSL.g:17145:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
             }
-            // InternalSignalDSL.g:16559:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
-            // InternalSignalDSL.g:16559:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
+            // InternalSignalDSL.g:17146:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalSignalDSL.g:17146:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1();
@@ -54638,14 +56562,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2"
-    // InternalSignalDSL.g:16567:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
+    // InternalSignalDSL.g:17154:1: rule__JvmParameterizedTypeReference__Group_1__2 : rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16571:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
-            // InternalSignalDSL.g:16572:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            // InternalSignalDSL.g:17158:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalSignalDSL.g:17159:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
             {
             pushFollow(FOLLOW_73);
             rule__JvmParameterizedTypeReference__Group_1__2__Impl();
@@ -54676,35 +56600,35 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__2__Impl"
-    // InternalSignalDSL.g:16579:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
+    // InternalSignalDSL.g:17166:1: rule__JvmParameterizedTypeReference__Group_1__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16583:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
-            // InternalSignalDSL.g:16584:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalSignalDSL.g:17170:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalSignalDSL.g:17171:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
             {
-            // InternalSignalDSL.g:16584:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
-            // InternalSignalDSL.g:16585:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            // InternalSignalDSL.g:17171:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalSignalDSL.g:17172:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
             }
-            // InternalSignalDSL.g:16586:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
-            loop136:
+            // InternalSignalDSL.g:17173:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            loop134:
             do {
-                int alt136=2;
-                int LA136_0 = input.LA(1);
+                int alt134=2;
+                int LA134_0 = input.LA(1);
 
-                if ( (LA136_0==73) ) {
-                    alt136=1;
+                if ( (LA134_0==82) ) {
+                    alt134=1;
                 }
 
 
-                switch (alt136) {
+                switch (alt134) {
             	case 1 :
-            	    // InternalSignalDSL.g:16586:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    // InternalSignalDSL.g:17173:3: rule__JvmParameterizedTypeReference__Group_1_2__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__JvmParameterizedTypeReference__Group_1_2__0();
@@ -54716,7 +56640,7 @@
             	    break;
 
             	default :
-            	    break loop136;
+            	    break loop134;
                 }
             } while (true);
 
@@ -54745,14 +56669,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3"
-    // InternalSignalDSL.g:16594:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
+    // InternalSignalDSL.g:17181:1: rule__JvmParameterizedTypeReference__Group_1__3 : rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16598:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
-            // InternalSignalDSL.g:16599:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            // InternalSignalDSL.g:17185:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalSignalDSL.g:17186:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
             {
             pushFollow(FOLLOW_111);
             rule__JvmParameterizedTypeReference__Group_1__3__Impl();
@@ -54783,17 +56707,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__3__Impl"
-    // InternalSignalDSL.g:16606:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:17193:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16610:1: ( ( '>' ) )
-            // InternalSignalDSL.g:16611:1: ( '>' )
+            // InternalSignalDSL.g:17197:1: ( ( '>' ) )
+            // InternalSignalDSL.g:17198:1: ( '>' )
             {
-            // InternalSignalDSL.g:16611:1: ( '>' )
-            // InternalSignalDSL.g:16612:2: '>'
+            // InternalSignalDSL.g:17198:1: ( '>' )
+            // InternalSignalDSL.g:17199:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
@@ -54824,14 +56748,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4"
-    // InternalSignalDSL.g:16621:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
+    // InternalSignalDSL.g:17208:1: rule__JvmParameterizedTypeReference__Group_1__4 : rule__JvmParameterizedTypeReference__Group_1__4__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1__4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16625:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
-            // InternalSignalDSL.g:16626:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
+            // InternalSignalDSL.g:17212:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalSignalDSL.g:17213:2: rule__JvmParameterizedTypeReference__Group_1__4__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1__4__Impl();
@@ -54857,35 +56781,35 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1__4__Impl"
-    // InternalSignalDSL.g:16632:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
+    // InternalSignalDSL.g:17219:1: rule__JvmParameterizedTypeReference__Group_1__4__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1__4__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16636:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
-            // InternalSignalDSL.g:16637:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalSignalDSL.g:17223:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalSignalDSL.g:17224:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
             {
-            // InternalSignalDSL.g:16637:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
-            // InternalSignalDSL.g:16638:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            // InternalSignalDSL.g:17224:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalSignalDSL.g:17225:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
             }
-            // InternalSignalDSL.g:16639:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
-            loop137:
+            // InternalSignalDSL.g:17226:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            loop135:
             do {
-                int alt137=2;
-                int LA137_0 = input.LA(1);
+                int alt135=2;
+                int LA135_0 = input.LA(1);
 
-                if ( (LA137_0==43) ) {
-                    int LA137_2 = input.LA(2);
+                if ( (LA135_0==43) ) {
+                    int LA135_2 = input.LA(2);
 
-                    if ( (LA137_2==RULE_ID) ) {
-                        int LA137_3 = input.LA(3);
+                    if ( (LA135_2==RULE_ID) ) {
+                        int LA135_3 = input.LA(3);
 
-                        if ( (synpred181_InternalSignalDSL()) ) {
-                            alt137=1;
+                        if ( (synpred187_InternalSignalDSL()) ) {
+                            alt135=1;
                         }
 
 
@@ -54895,9 +56819,9 @@
                 }
 
 
-                switch (alt137) {
+                switch (alt135) {
             	case 1 :
-            	    // InternalSignalDSL.g:16639:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    // InternalSignalDSL.g:17226:3: rule__JvmParameterizedTypeReference__Group_1_4__0
             	    {
             	    pushFollow(FOLLOW_112);
             	    rule__JvmParameterizedTypeReference__Group_1_4__0();
@@ -54909,7 +56833,7 @@
             	    break;
 
             	default :
-            	    break loop137;
+            	    break loop135;
                 }
             } while (true);
 
@@ -54938,14 +56862,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0"
-    // InternalSignalDSL.g:16648:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
+    // InternalSignalDSL.g:17235:1: rule__JvmParameterizedTypeReference__Group_1_2__0 : rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16652:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
-            // InternalSignalDSL.g:16653:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            // InternalSignalDSL.g:17239:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalSignalDSL.g:17240:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
             {
             pushFollow(FOLLOW_72);
             rule__JvmParameterizedTypeReference__Group_1_2__0__Impl();
@@ -54976,22 +56900,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__0__Impl"
-    // InternalSignalDSL.g:16660:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:17247:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16664:1: ( ( ',' ) )
-            // InternalSignalDSL.g:16665:1: ( ',' )
+            // InternalSignalDSL.g:17251:1: ( ( ',' ) )
+            // InternalSignalDSL.g:17252:1: ( ',' )
             {
-            // InternalSignalDSL.g:16665:1: ( ',' )
-            // InternalSignalDSL.g:16666:2: ','
+            // InternalSignalDSL.g:17252:1: ( ',' )
+            // InternalSignalDSL.g:17253:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
             }
@@ -55017,14 +56941,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1"
-    // InternalSignalDSL.g:16675:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
+    // InternalSignalDSL.g:17262:1: rule__JvmParameterizedTypeReference__Group_1_2__1 : rule__JvmParameterizedTypeReference__Group_1_2__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16679:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
-            // InternalSignalDSL.g:16680:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
+            // InternalSignalDSL.g:17266:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalSignalDSL.g:17267:2: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_2__1__Impl();
@@ -55050,23 +56974,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_2__1__Impl"
-    // InternalSignalDSL.g:16686:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
+    // InternalSignalDSL.g:17273:1: rule__JvmParameterizedTypeReference__Group_1_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16690:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
-            // InternalSignalDSL.g:16691:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:17277:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalSignalDSL.g:17278:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
             {
-            // InternalSignalDSL.g:16691:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
-            // InternalSignalDSL.g:16692:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:17278:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalSignalDSL.g:17279:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
             }
-            // InternalSignalDSL.g:16693:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
-            // InternalSignalDSL.g:16693:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
+            // InternalSignalDSL.g:17280:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalSignalDSL.g:17280:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1();
@@ -55101,16 +57025,16 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0"
-    // InternalSignalDSL.g:16702:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
+    // InternalSignalDSL.g:17289:1: rule__JvmParameterizedTypeReference__Group_1_4__0 : rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16706:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
-            // InternalSignalDSL.g:16707:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            // InternalSignalDSL.g:17293:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalSignalDSL.g:17294:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
             {
-            pushFollow(FOLLOW_7);
+            pushFollow(FOLLOW_6);
             rule__JvmParameterizedTypeReference__Group_1_4__0__Impl();
 
             state._fsp--;
@@ -55139,23 +57063,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
-    // InternalSignalDSL.g:16714:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
+    // InternalSignalDSL.g:17301:1: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16718:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
-            // InternalSignalDSL.g:16719:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalSignalDSL.g:17305:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalSignalDSL.g:17306:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
             {
-            // InternalSignalDSL.g:16719:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
-            // InternalSignalDSL.g:16720:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalSignalDSL.g:17306:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalSignalDSL.g:17307:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
             }
-            // InternalSignalDSL.g:16721:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
-            // InternalSignalDSL.g:16721:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
+            // InternalSignalDSL.g:17308:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalSignalDSL.g:17308:3: rule__JvmParameterizedTypeReference__Group_1_4_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0();
@@ -55190,14 +57114,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1"
-    // InternalSignalDSL.g:16729:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
+    // InternalSignalDSL.g:17316:1: rule__JvmParameterizedTypeReference__Group_1_4__1 : rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16733:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
-            // InternalSignalDSL.g:16734:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            // InternalSignalDSL.g:17320:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalSignalDSL.g:17321:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
             {
             pushFollow(FOLLOW_42);
             rule__JvmParameterizedTypeReference__Group_1_4__1__Impl();
@@ -55228,23 +57152,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__1__Impl"
-    // InternalSignalDSL.g:16741:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
+    // InternalSignalDSL.g:17328:1: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16745:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
-            // InternalSignalDSL.g:16746:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalSignalDSL.g:17332:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalSignalDSL.g:17333:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
             {
-            // InternalSignalDSL.g:16746:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
-            // InternalSignalDSL.g:16747:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalSignalDSL.g:17333:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalSignalDSL.g:17334:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
             }
-            // InternalSignalDSL.g:16748:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
-            // InternalSignalDSL.g:16748:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
+            // InternalSignalDSL.g:17335:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalSignalDSL.g:17335:3: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1();
@@ -55279,14 +57203,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2"
-    // InternalSignalDSL.g:16756:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
+    // InternalSignalDSL.g:17343:1: rule__JvmParameterizedTypeReference__Group_1_4__2 : rule__JvmParameterizedTypeReference__Group_1_4__2__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16760:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
-            // InternalSignalDSL.g:16761:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
+            // InternalSignalDSL.g:17347:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalSignalDSL.g:17348:2: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4__2__Impl();
@@ -55312,27 +57236,27 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__2__Impl"
-    // InternalSignalDSL.g:16767:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
+    // InternalSignalDSL.g:17354:1: rule__JvmParameterizedTypeReference__Group_1_4__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16771:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
-            // InternalSignalDSL.g:16772:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalSignalDSL.g:17358:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalSignalDSL.g:17359:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
             {
-            // InternalSignalDSL.g:16772:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
-            // InternalSignalDSL.g:16773:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            // InternalSignalDSL.g:17359:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalSignalDSL.g:17360:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
             }
-            // InternalSignalDSL.g:16774:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
-            int alt138=2;
-            alt138 = dfa138.predict(input);
-            switch (alt138) {
+            // InternalSignalDSL.g:17361:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            int alt136=2;
+            alt136 = dfa136.predict(input);
+            switch (alt136) {
                 case 1 :
-                    // InternalSignalDSL.g:16774:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+                    // InternalSignalDSL.g:17361:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -55370,14 +57294,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0"
-    // InternalSignalDSL.g:16783:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
+    // InternalSignalDSL.g:17370:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16787:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
-            // InternalSignalDSL.g:16788:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
+            // InternalSignalDSL.g:17374:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalSignalDSL.g:17375:2: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl();
@@ -55403,23 +57327,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl"
-    // InternalSignalDSL.g:16794:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
+    // InternalSignalDSL.g:17381:1: rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16798:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
-            // InternalSignalDSL.g:16799:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalSignalDSL.g:17385:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalSignalDSL.g:17386:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
             {
-            // InternalSignalDSL.g:16799:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
-            // InternalSignalDSL.g:16800:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalSignalDSL.g:17386:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalSignalDSL.g:17387:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
             }
-            // InternalSignalDSL.g:16801:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
-            // InternalSignalDSL.g:16801:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
+            // InternalSignalDSL.g:17388:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalSignalDSL.g:17388:3: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0();
@@ -55454,14 +57378,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0"
-    // InternalSignalDSL.g:16810:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
+    // InternalSignalDSL.g:17397:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16814:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
-            // InternalSignalDSL.g:16815:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            // InternalSignalDSL.g:17401:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalSignalDSL.g:17402:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
             {
             pushFollow(FOLLOW_111);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl();
@@ -55492,23 +57416,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl"
-    // InternalSignalDSL.g:16822:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:17409:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl : ( () ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16826:1: ( ( () ) )
-            // InternalSignalDSL.g:16827:1: ( () )
+            // InternalSignalDSL.g:17413:1: ( ( () ) )
+            // InternalSignalDSL.g:17414:1: ( () )
             {
-            // InternalSignalDSL.g:16827:1: ( () )
-            // InternalSignalDSL.g:16828:2: ()
+            // InternalSignalDSL.g:17414:1: ( () )
+            // InternalSignalDSL.g:17415:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
             }
-            // InternalSignalDSL.g:16829:2: ()
-            // InternalSignalDSL.g:16829:3: 
+            // InternalSignalDSL.g:17416:2: ()
+            // InternalSignalDSL.g:17416:3: 
             {
             }
 
@@ -55533,14 +57457,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1"
-    // InternalSignalDSL.g:16837:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
+    // InternalSignalDSL.g:17424:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 : rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16841:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
-            // InternalSignalDSL.g:16842:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
+            // InternalSignalDSL.g:17428:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalSignalDSL.g:17429:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl();
@@ -55566,17 +57490,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl"
-    // InternalSignalDSL.g:16848:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:17435:1: rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl : ( '.' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16852:1: ( ( '.' ) )
-            // InternalSignalDSL.g:16853:1: ( '.' )
+            // InternalSignalDSL.g:17439:1: ( ( '.' ) )
+            // InternalSignalDSL.g:17440:1: ( '.' )
             {
-            // InternalSignalDSL.g:16853:1: ( '.' )
-            // InternalSignalDSL.g:16854:2: '.'
+            // InternalSignalDSL.g:17440:1: ( '.' )
+            // InternalSignalDSL.g:17441:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
@@ -55607,14 +57531,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0"
-    // InternalSignalDSL.g:16864:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
+    // InternalSignalDSL.g:17451:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16868:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
-            // InternalSignalDSL.g:16869:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            // InternalSignalDSL.g:17455:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalSignalDSL.g:17456:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
             {
             pushFollow(FOLLOW_72);
             rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl();
@@ -55645,23 +57569,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl"
-    // InternalSignalDSL.g:16876:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
+    // InternalSignalDSL.g:17463:1: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl : ( ( '<' ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16880:1: ( ( ( '<' ) ) )
-            // InternalSignalDSL.g:16881:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17467:1: ( ( ( '<' ) ) )
+            // InternalSignalDSL.g:17468:1: ( ( '<' ) )
             {
-            // InternalSignalDSL.g:16881:1: ( ( '<' ) )
-            // InternalSignalDSL.g:16882:2: ( '<' )
+            // InternalSignalDSL.g:17468:1: ( ( '<' ) )
+            // InternalSignalDSL.g:17469:2: ( '<' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
             }
-            // InternalSignalDSL.g:16883:2: ( '<' )
-            // InternalSignalDSL.g:16883:3: '<'
+            // InternalSignalDSL.g:17470:2: ( '<' )
+            // InternalSignalDSL.g:17470:3: '<'
             {
             match(input,27,FOLLOW_2); if (state.failed) return ;
 
@@ -55692,14 +57616,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1"
-    // InternalSignalDSL.g:16891:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
+    // InternalSignalDSL.g:17478:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16895:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
-            // InternalSignalDSL.g:16896:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            // InternalSignalDSL.g:17482:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalSignalDSL.g:17483:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
             {
             pushFollow(FOLLOW_73);
             rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl();
@@ -55730,23 +57654,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl"
-    // InternalSignalDSL.g:16903:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
+    // InternalSignalDSL.g:17490:1: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16907:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
-            // InternalSignalDSL.g:16908:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalSignalDSL.g:17494:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalSignalDSL.g:17495:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
             {
-            // InternalSignalDSL.g:16908:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
-            // InternalSignalDSL.g:16909:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalSignalDSL.g:17495:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalSignalDSL.g:17496:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
             }
-            // InternalSignalDSL.g:16910:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
-            // InternalSignalDSL.g:16910:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
+            // InternalSignalDSL.g:17497:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalSignalDSL.g:17497:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1();
@@ -55781,14 +57705,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2"
-    // InternalSignalDSL.g:16918:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
+    // InternalSignalDSL.g:17505:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2 : rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16922:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
-            // InternalSignalDSL.g:16923:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            // InternalSignalDSL.g:17509:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalSignalDSL.g:17510:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
             {
             pushFollow(FOLLOW_73);
             rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl();
@@ -55819,35 +57743,35 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl"
-    // InternalSignalDSL.g:16930:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
+    // InternalSignalDSL.g:17517:1: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl : ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16934:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
-            // InternalSignalDSL.g:16935:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalSignalDSL.g:17521:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalSignalDSL.g:17522:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
             {
-            // InternalSignalDSL.g:16935:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
-            // InternalSignalDSL.g:16936:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            // InternalSignalDSL.g:17522:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalSignalDSL.g:17523:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
             }
-            // InternalSignalDSL.g:16937:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
-            loop139:
+            // InternalSignalDSL.g:17524:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            loop137:
             do {
-                int alt139=2;
-                int LA139_0 = input.LA(1);
+                int alt137=2;
+                int LA137_0 = input.LA(1);
 
-                if ( (LA139_0==73) ) {
-                    alt139=1;
+                if ( (LA137_0==82) ) {
+                    alt137=1;
                 }
 
 
-                switch (alt139) {
+                switch (alt137) {
             	case 1 :
-            	    // InternalSignalDSL.g:16937:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    // InternalSignalDSL.g:17524:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
             	    {
             	    pushFollow(FOLLOW_34);
             	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
@@ -55859,7 +57783,7 @@
             	    break;
 
             	default :
-            	    break loop139;
+            	    break loop137;
                 }
             } while (true);
 
@@ -55888,14 +57812,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3"
-    // InternalSignalDSL.g:16945:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
+    // InternalSignalDSL.g:17532:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3 : rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16949:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
-            // InternalSignalDSL.g:16950:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
+            // InternalSignalDSL.g:17536:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalSignalDSL.g:17537:2: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl();
@@ -55921,17 +57845,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl"
-    // InternalSignalDSL.g:16956:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
+    // InternalSignalDSL.g:17543:1: rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl : ( '>' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16960:1: ( ( '>' ) )
-            // InternalSignalDSL.g:16961:1: ( '>' )
+            // InternalSignalDSL.g:17547:1: ( ( '>' ) )
+            // InternalSignalDSL.g:17548:1: ( '>' )
             {
-            // InternalSignalDSL.g:16961:1: ( '>' )
-            // InternalSignalDSL.g:16962:2: '>'
+            // InternalSignalDSL.g:17548:1: ( '>' )
+            // InternalSignalDSL.g:17549:2: '>'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
@@ -55962,14 +57886,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0"
-    // InternalSignalDSL.g:16972:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
+    // InternalSignalDSL.g:17559:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16976:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
-            // InternalSignalDSL.g:16977:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            // InternalSignalDSL.g:17563:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalSignalDSL.g:17564:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
             {
             pushFollow(FOLLOW_72);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl();
@@ -56000,22 +57924,22 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl"
-    // InternalSignalDSL.g:16984:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
+    // InternalSignalDSL.g:17571:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl : ( ',' ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:16988:1: ( ( ',' ) )
-            // InternalSignalDSL.g:16989:1: ( ',' )
+            // InternalSignalDSL.g:17575:1: ( ( ',' ) )
+            // InternalSignalDSL.g:17576:1: ( ',' )
             {
-            // InternalSignalDSL.g:16989:1: ( ',' )
-            // InternalSignalDSL.g:16990:2: ','
+            // InternalSignalDSL.g:17576:1: ( ',' )
+            // InternalSignalDSL.g:17577:2: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
             }
@@ -56041,14 +57965,14 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1"
-    // InternalSignalDSL.g:16999:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
+    // InternalSignalDSL.g:17586:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 : rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17003:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
-            // InternalSignalDSL.g:17004:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
+            // InternalSignalDSL.g:17590:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalSignalDSL.g:17591:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl();
@@ -56074,23 +57998,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl"
-    // InternalSignalDSL.g:17010:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
+    // InternalSignalDSL.g:17597:1: rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl : ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) ;
     public final void rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17014:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
-            // InternalSignalDSL.g:17015:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalSignalDSL.g:17601:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalSignalDSL.g:17602:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
             {
-            // InternalSignalDSL.g:17015:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
-            // InternalSignalDSL.g:17016:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalSignalDSL.g:17602:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalSignalDSL.g:17603:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
             }
-            // InternalSignalDSL.g:17017:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
-            // InternalSignalDSL.g:17017:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
+            // InternalSignalDSL.g:17604:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalSignalDSL.g:17604:3: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1();
@@ -56125,14 +58049,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0"
-    // InternalSignalDSL.g:17026:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
+    // InternalSignalDSL.g:17613:1: rule__JvmWildcardTypeReference__Group__0 : rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 ;
     public final void rule__JvmWildcardTypeReference__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17030:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
-            // InternalSignalDSL.g:17031:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            // InternalSignalDSL.g:17617:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalSignalDSL.g:17618:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
             {
             pushFollow(FOLLOW_72);
             rule__JvmWildcardTypeReference__Group__0__Impl();
@@ -56163,23 +58087,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__0__Impl"
-    // InternalSignalDSL.g:17038:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    // InternalSignalDSL.g:17625:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
     public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17042:1: ( ( () ) )
-            // InternalSignalDSL.g:17043:1: ( () )
+            // InternalSignalDSL.g:17629:1: ( ( () ) )
+            // InternalSignalDSL.g:17630:1: ( () )
             {
-            // InternalSignalDSL.g:17043:1: ( () )
-            // InternalSignalDSL.g:17044:2: ()
+            // InternalSignalDSL.g:17630:1: ( () )
+            // InternalSignalDSL.g:17631:2: ()
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
             }
-            // InternalSignalDSL.g:17045:2: ()
-            // InternalSignalDSL.g:17045:3: 
+            // InternalSignalDSL.g:17632:2: ()
+            // InternalSignalDSL.g:17632:3: 
             {
             }
 
@@ -56204,14 +58128,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1"
-    // InternalSignalDSL.g:17053:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
+    // InternalSignalDSL.g:17640:1: rule__JvmWildcardTypeReference__Group__1 : rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 ;
     public final void rule__JvmWildcardTypeReference__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17057:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
-            // InternalSignalDSL.g:17058:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            // InternalSignalDSL.g:17644:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalSignalDSL.g:17645:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
             {
             pushFollow(FOLLOW_115);
             rule__JvmWildcardTypeReference__Group__1__Impl();
@@ -56242,22 +58166,22 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__1__Impl"
-    // InternalSignalDSL.g:17065:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    // InternalSignalDSL.g:17652:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
     public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17069:1: ( ( '?' ) )
-            // InternalSignalDSL.g:17070:1: ( '?' )
+            // InternalSignalDSL.g:17656:1: ( ( '?' ) )
+            // InternalSignalDSL.g:17657:1: ( '?' )
             {
-            // InternalSignalDSL.g:17070:1: ( '?' )
-            // InternalSignalDSL.g:17071:2: '?'
+            // InternalSignalDSL.g:17657:1: ( '?' )
+            // InternalSignalDSL.g:17658:2: '?'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
-            match(input,96,FOLLOW_2); if (state.failed) return ;
+            match(input,105,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
             }
@@ -56283,14 +58207,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2"
-    // InternalSignalDSL.g:17080:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    // InternalSignalDSL.g:17667:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
     public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17084:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
-            // InternalSignalDSL.g:17085:2: rule__JvmWildcardTypeReference__Group__2__Impl
+            // InternalSignalDSL.g:17671:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalSignalDSL.g:17672:2: rule__JvmWildcardTypeReference__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group__2__Impl();
@@ -56316,31 +58240,31 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group__2__Impl"
-    // InternalSignalDSL.g:17091:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    // InternalSignalDSL.g:17678:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
     public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17095:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
-            // InternalSignalDSL.g:17096:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalSignalDSL.g:17682:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalSignalDSL.g:17683:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
             {
-            // InternalSignalDSL.g:17096:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
-            // InternalSignalDSL.g:17097:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            // InternalSignalDSL.g:17683:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalSignalDSL.g:17684:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
             }
-            // InternalSignalDSL.g:17098:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
-            int alt140=2;
-            int LA140_0 = input.LA(1);
+            // InternalSignalDSL.g:17685:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            int alt138=2;
+            int LA138_0 = input.LA(1);
 
-            if ( (LA140_0==45||LA140_0==49) ) {
-                alt140=1;
+            if ( (LA138_0==45||LA138_0==49) ) {
+                alt138=1;
             }
-            switch (alt140) {
+            switch (alt138) {
                 case 1 :
-                    // InternalSignalDSL.g:17098:3: rule__JvmWildcardTypeReference__Alternatives_2
+                    // InternalSignalDSL.g:17685:3: rule__JvmWildcardTypeReference__Alternatives_2
                     {
                     pushFollow(FOLLOW_2);
                     rule__JvmWildcardTypeReference__Alternatives_2();
@@ -56378,14 +58302,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0"
-    // InternalSignalDSL.g:17107:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
+    // InternalSignalDSL.g:17694:1: rule__JvmWildcardTypeReference__Group_2_0__0 : rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17111:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
-            // InternalSignalDSL.g:17112:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            // InternalSignalDSL.g:17698:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalSignalDSL.g:17699:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
             {
             pushFollow(FOLLOW_116);
             rule__JvmWildcardTypeReference__Group_2_0__0__Impl();
@@ -56416,23 +58340,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__0__Impl"
-    // InternalSignalDSL.g:17119:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
+    // InternalSignalDSL.g:17706:1: rule__JvmWildcardTypeReference__Group_2_0__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17123:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
-            // InternalSignalDSL.g:17124:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:17710:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalSignalDSL.g:17711:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
             {
-            // InternalSignalDSL.g:17124:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
-            // InternalSignalDSL.g:17125:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalSignalDSL.g:17711:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalSignalDSL.g:17712:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
             }
-            // InternalSignalDSL.g:17126:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
-            // InternalSignalDSL.g:17126:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
+            // InternalSignalDSL.g:17713:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalSignalDSL.g:17713:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0();
@@ -56467,14 +58391,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1"
-    // InternalSignalDSL.g:17134:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
+    // InternalSignalDSL.g:17721:1: rule__JvmWildcardTypeReference__Group_2_0__1 : rule__JvmWildcardTypeReference__Group_2_0__1__Impl ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17138:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
-            // InternalSignalDSL.g:17139:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
+            // InternalSignalDSL.g:17725:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalSignalDSL.g:17726:2: rule__JvmWildcardTypeReference__Group_2_0__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_0__1__Impl();
@@ -56500,35 +58424,35 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_0__1__Impl"
-    // InternalSignalDSL.g:17145:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
+    // InternalSignalDSL.g:17732:1: rule__JvmWildcardTypeReference__Group_2_0__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_0__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17149:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
-            // InternalSignalDSL.g:17150:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalSignalDSL.g:17736:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalSignalDSL.g:17737:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
             {
-            // InternalSignalDSL.g:17150:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
-            // InternalSignalDSL.g:17151:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            // InternalSignalDSL.g:17737:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalSignalDSL.g:17738:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
             }
-            // InternalSignalDSL.g:17152:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
-            loop141:
+            // InternalSignalDSL.g:17739:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            loop139:
             do {
-                int alt141=2;
-                int LA141_0 = input.LA(1);
+                int alt139=2;
+                int LA139_0 = input.LA(1);
 
-                if ( (LA141_0==97) ) {
-                    alt141=1;
+                if ( (LA139_0==106) ) {
+                    alt139=1;
                 }
 
 
-                switch (alt141) {
+                switch (alt139) {
             	case 1 :
-            	    // InternalSignalDSL.g:17152:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    // InternalSignalDSL.g:17739:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
             	    {
             	    pushFollow(FOLLOW_117);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
@@ -56540,7 +58464,7 @@
             	    break;
 
             	default :
-            	    break loop141;
+            	    break loop139;
                 }
             } while (true);
 
@@ -56569,14 +58493,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0"
-    // InternalSignalDSL.g:17161:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
+    // InternalSignalDSL.g:17748:1: rule__JvmWildcardTypeReference__Group_2_1__0 : rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17165:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
-            // InternalSignalDSL.g:17166:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            // InternalSignalDSL.g:17752:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalSignalDSL.g:17753:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
             {
             pushFollow(FOLLOW_116);
             rule__JvmWildcardTypeReference__Group_2_1__0__Impl();
@@ -56607,23 +58531,23 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__0__Impl"
-    // InternalSignalDSL.g:17173:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
+    // InternalSignalDSL.g:17760:1: rule__JvmWildcardTypeReference__Group_2_1__0__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17177:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
-            // InternalSignalDSL.g:17178:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalSignalDSL.g:17764:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalSignalDSL.g:17765:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
             {
-            // InternalSignalDSL.g:17178:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
-            // InternalSignalDSL.g:17179:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalSignalDSL.g:17765:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalSignalDSL.g:17766:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
             }
-            // InternalSignalDSL.g:17180:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
-            // InternalSignalDSL.g:17180:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
+            // InternalSignalDSL.g:17767:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalSignalDSL.g:17767:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0();
@@ -56658,14 +58582,14 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1"
-    // InternalSignalDSL.g:17188:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
+    // InternalSignalDSL.g:17775:1: rule__JvmWildcardTypeReference__Group_2_1__1 : rule__JvmWildcardTypeReference__Group_2_1__1__Impl ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17192:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
-            // InternalSignalDSL.g:17193:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
+            // InternalSignalDSL.g:17779:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalSignalDSL.g:17780:2: rule__JvmWildcardTypeReference__Group_2_1__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmWildcardTypeReference__Group_2_1__1__Impl();
@@ -56691,35 +58615,35 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__Group_2_1__1__Impl"
-    // InternalSignalDSL.g:17199:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
+    // InternalSignalDSL.g:17786:1: rule__JvmWildcardTypeReference__Group_2_1__1__Impl : ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) ;
     public final void rule__JvmWildcardTypeReference__Group_2_1__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17203:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
-            // InternalSignalDSL.g:17204:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalSignalDSL.g:17790:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalSignalDSL.g:17791:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
             {
-            // InternalSignalDSL.g:17204:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
-            // InternalSignalDSL.g:17205:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            // InternalSignalDSL.g:17791:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalSignalDSL.g:17792:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
             }
-            // InternalSignalDSL.g:17206:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
-            loop142:
+            // InternalSignalDSL.g:17793:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            loop140:
             do {
-                int alt142=2;
-                int LA142_0 = input.LA(1);
+                int alt140=2;
+                int LA140_0 = input.LA(1);
 
-                if ( (LA142_0==97) ) {
-                    alt142=1;
+                if ( (LA140_0==106) ) {
+                    alt140=1;
                 }
 
 
-                switch (alt142) {
+                switch (alt140) {
             	case 1 :
-            	    // InternalSignalDSL.g:17206:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    // InternalSignalDSL.g:17793:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
             	    {
             	    pushFollow(FOLLOW_117);
             	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
@@ -56731,7 +58655,7 @@
             	    break;
 
             	default :
-            	    break loop142;
+            	    break loop140;
                 }
             } while (true);
 
@@ -56760,14 +58684,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0"
-    // InternalSignalDSL.g:17215:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
+    // InternalSignalDSL.g:17802:1: rule__JvmUpperBound__Group__0 : rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 ;
     public final void rule__JvmUpperBound__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17219:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
-            // InternalSignalDSL.g:17220:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            // InternalSignalDSL.g:17806:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalSignalDSL.g:17807:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__JvmUpperBound__Group__0__Impl();
@@ -56798,17 +58722,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__0__Impl"
-    // InternalSignalDSL.g:17227:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    // InternalSignalDSL.g:17814:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
     public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17231:1: ( ( 'extends' ) )
-            // InternalSignalDSL.g:17232:1: ( 'extends' )
+            // InternalSignalDSL.g:17818:1: ( ( 'extends' ) )
+            // InternalSignalDSL.g:17819:1: ( 'extends' )
             {
-            // InternalSignalDSL.g:17232:1: ( 'extends' )
-            // InternalSignalDSL.g:17233:2: 'extends'
+            // InternalSignalDSL.g:17819:1: ( 'extends' )
+            // InternalSignalDSL.g:17820:2: 'extends'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
@@ -56839,14 +58763,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1"
-    // InternalSignalDSL.g:17242:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    // InternalSignalDSL.g:17829:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
     public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17246:1: ( rule__JvmUpperBound__Group__1__Impl )
-            // InternalSignalDSL.g:17247:2: rule__JvmUpperBound__Group__1__Impl
+            // InternalSignalDSL.g:17833:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalSignalDSL.g:17834:2: rule__JvmUpperBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__Group__1__Impl();
@@ -56872,23 +58796,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__Group__1__Impl"
-    // InternalSignalDSL.g:17253:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:17840:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17257:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17258:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:17844:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:17845:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17258:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17259:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:17845:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:17846:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17260:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17260:3: rule__JvmUpperBound__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:17847:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:17847:3: rule__JvmUpperBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBound__TypeReferenceAssignment_1();
@@ -56923,14 +58847,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0"
-    // InternalSignalDSL.g:17269:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
+    // InternalSignalDSL.g:17856:1: rule__JvmUpperBoundAnded__Group__0 : rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 ;
     public final void rule__JvmUpperBoundAnded__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17273:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
-            // InternalSignalDSL.g:17274:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            // InternalSignalDSL.g:17860:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalSignalDSL.g:17861:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__JvmUpperBoundAnded__Group__0__Impl();
@@ -56961,22 +58885,22 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__0__Impl"
-    // InternalSignalDSL.g:17281:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalSignalDSL.g:17868:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17285:1: ( ( '&' ) )
-            // InternalSignalDSL.g:17286:1: ( '&' )
+            // InternalSignalDSL.g:17872:1: ( ( '&' ) )
+            // InternalSignalDSL.g:17873:1: ( '&' )
             {
-            // InternalSignalDSL.g:17286:1: ( '&' )
-            // InternalSignalDSL.g:17287:2: '&'
+            // InternalSignalDSL.g:17873:1: ( '&' )
+            // InternalSignalDSL.g:17874:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,106,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -57002,14 +58926,14 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1"
-    // InternalSignalDSL.g:17296:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    // InternalSignalDSL.g:17883:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
     public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17300:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
-            // InternalSignalDSL.g:17301:2: rule__JvmUpperBoundAnded__Group__1__Impl
+            // InternalSignalDSL.g:17887:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalSignalDSL.g:17888:2: rule__JvmUpperBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__Group__1__Impl();
@@ -57035,23 +58959,23 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__Group__1__Impl"
-    // InternalSignalDSL.g:17307:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:17894:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17311:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17312:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:17898:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:17899:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17312:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17313:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:17899:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:17900:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17314:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17314:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:17901:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:17901:3: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmUpperBoundAnded__TypeReferenceAssignment_1();
@@ -57086,14 +59010,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0"
-    // InternalSignalDSL.g:17323:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
+    // InternalSignalDSL.g:17910:1: rule__JvmLowerBound__Group__0 : rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 ;
     public final void rule__JvmLowerBound__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17327:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
-            // InternalSignalDSL.g:17328:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            // InternalSignalDSL.g:17914:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalSignalDSL.g:17915:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__JvmLowerBound__Group__0__Impl();
@@ -57124,17 +59048,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__0__Impl"
-    // InternalSignalDSL.g:17335:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    // InternalSignalDSL.g:17922:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
     public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17339:1: ( ( 'super' ) )
-            // InternalSignalDSL.g:17340:1: ( 'super' )
+            // InternalSignalDSL.g:17926:1: ( ( 'super' ) )
+            // InternalSignalDSL.g:17927:1: ( 'super' )
             {
-            // InternalSignalDSL.g:17340:1: ( 'super' )
-            // InternalSignalDSL.g:17341:2: 'super'
+            // InternalSignalDSL.g:17927:1: ( 'super' )
+            // InternalSignalDSL.g:17928:2: 'super'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
@@ -57165,14 +59089,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1"
-    // InternalSignalDSL.g:17350:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    // InternalSignalDSL.g:17937:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
     public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17354:1: ( rule__JvmLowerBound__Group__1__Impl )
-            // InternalSignalDSL.g:17355:2: rule__JvmLowerBound__Group__1__Impl
+            // InternalSignalDSL.g:17941:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalSignalDSL.g:17942:2: rule__JvmLowerBound__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__Group__1__Impl();
@@ -57198,23 +59122,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__Group__1__Impl"
-    // InternalSignalDSL.g:17361:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:17948:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17365:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17366:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:17952:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:17953:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17366:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17367:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:17953:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:17954:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17368:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17368:3: rule__JvmLowerBound__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:17955:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:17955:3: rule__JvmLowerBound__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBound__TypeReferenceAssignment_1();
@@ -57249,14 +59173,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0"
-    // InternalSignalDSL.g:17377:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
+    // InternalSignalDSL.g:17964:1: rule__JvmLowerBoundAnded__Group__0 : rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 ;
     public final void rule__JvmLowerBoundAnded__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17381:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
-            // InternalSignalDSL.g:17382:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            // InternalSignalDSL.g:17968:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalSignalDSL.g:17969:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
             {
             pushFollow(FOLLOW_52);
             rule__JvmLowerBoundAnded__Group__0__Impl();
@@ -57287,22 +59211,22 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__0__Impl"
-    // InternalSignalDSL.g:17389:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    // InternalSignalDSL.g:17976:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
     public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17393:1: ( ( '&' ) )
-            // InternalSignalDSL.g:17394:1: ( '&' )
+            // InternalSignalDSL.g:17980:1: ( ( '&' ) )
+            // InternalSignalDSL.g:17981:1: ( '&' )
             {
-            // InternalSignalDSL.g:17394:1: ( '&' )
-            // InternalSignalDSL.g:17395:2: '&'
+            // InternalSignalDSL.g:17981:1: ( '&' )
+            // InternalSignalDSL.g:17982:2: '&'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
-            match(input,97,FOLLOW_2); if (state.failed) return ;
+            match(input,106,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
             }
@@ -57328,14 +59252,14 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1"
-    // InternalSignalDSL.g:17404:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    // InternalSignalDSL.g:17991:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
     public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17408:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
-            // InternalSignalDSL.g:17409:2: rule__JvmLowerBoundAnded__Group__1__Impl
+            // InternalSignalDSL.g:17995:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalSignalDSL.g:17996:2: rule__JvmLowerBoundAnded__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__Group__1__Impl();
@@ -57361,23 +59285,23 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__Group__1__Impl"
-    // InternalSignalDSL.g:17415:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    // InternalSignalDSL.g:18002:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
     public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17419:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
-            // InternalSignalDSL.g:17420:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18006:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalSignalDSL.g:18007:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
             {
-            // InternalSignalDSL.g:17420:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
-            // InternalSignalDSL.g:17421:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18007:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalSignalDSL.g:18008:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
             }
-            // InternalSignalDSL.g:17422:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
-            // InternalSignalDSL.g:17422:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
+            // InternalSignalDSL.g:18009:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalSignalDSL.g:18009:3: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1
             {
             pushFollow(FOLLOW_2);
             rule__JvmLowerBoundAnded__TypeReferenceAssignment_1();
@@ -57412,14 +59336,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0"
-    // InternalSignalDSL.g:17431:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
+    // InternalSignalDSL.g:18018:1: rule__QualifiedNameWithWildcard__Group__0 : rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 ;
     public final void rule__QualifiedNameWithWildcard__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17435:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
-            // InternalSignalDSL.g:17436:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            // InternalSignalDSL.g:18022:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalSignalDSL.g:18023:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
             {
             pushFollow(FOLLOW_111);
             rule__QualifiedNameWithWildcard__Group__0__Impl();
@@ -57450,17 +59374,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__0__Impl"
-    // InternalSignalDSL.g:17443:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    // InternalSignalDSL.g:18030:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
     public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17447:1: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:17448:1: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18034:1: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18035:1: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:17448:1: ( ruleQualifiedName )
-            // InternalSignalDSL.g:17449:2: ruleQualifiedName
+            // InternalSignalDSL.g:18035:1: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18036:2: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0()); 
@@ -57495,14 +59419,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1"
-    // InternalSignalDSL.g:17458:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
+    // InternalSignalDSL.g:18045:1: rule__QualifiedNameWithWildcard__Group__1 : rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 ;
     public final void rule__QualifiedNameWithWildcard__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17462:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
-            // InternalSignalDSL.g:17463:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            // InternalSignalDSL.g:18049:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalSignalDSL.g:18050:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
             {
             pushFollow(FOLLOW_118);
             rule__QualifiedNameWithWildcard__Group__1__Impl();
@@ -57533,17 +59457,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__1__Impl"
-    // InternalSignalDSL.g:17470:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:18057:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17474:1: ( ( '.' ) )
-            // InternalSignalDSL.g:17475:1: ( '.' )
+            // InternalSignalDSL.g:18061:1: ( ( '.' ) )
+            // InternalSignalDSL.g:18062:1: ( '.' )
             {
-            // InternalSignalDSL.g:17475:1: ( '.' )
-            // InternalSignalDSL.g:17476:2: '.'
+            // InternalSignalDSL.g:18062:1: ( '.' )
+            // InternalSignalDSL.g:18063:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
@@ -57574,14 +59498,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2"
-    // InternalSignalDSL.g:17485:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    // InternalSignalDSL.g:18072:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
     public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17489:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
-            // InternalSignalDSL.g:17490:2: rule__QualifiedNameWithWildcard__Group__2__Impl
+            // InternalSignalDSL.g:18076:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalSignalDSL.g:18077:2: rule__QualifiedNameWithWildcard__Group__2__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameWithWildcard__Group__2__Impl();
@@ -57607,17 +59531,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameWithWildcard__Group__2__Impl"
-    // InternalSignalDSL.g:17496:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    // InternalSignalDSL.g:18083:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
     public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17500:1: ( ( '*' ) )
-            // InternalSignalDSL.g:17501:1: ( '*' )
+            // InternalSignalDSL.g:18087:1: ( ( '*' ) )
+            // InternalSignalDSL.g:18088:1: ( '*' )
             {
-            // InternalSignalDSL.g:17501:1: ( '*' )
-            // InternalSignalDSL.g:17502:2: '*'
+            // InternalSignalDSL.g:18088:1: ( '*' )
+            // InternalSignalDSL.g:18089:2: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
@@ -57648,14 +59572,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0"
-    // InternalSignalDSL.g:17512:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
+    // InternalSignalDSL.g:18099:1: rule__QualifiedNameInStaticImport__Group__0 : rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 ;
     public final void rule__QualifiedNameInStaticImport__Group__0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17516:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
-            // InternalSignalDSL.g:17517:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            // InternalSignalDSL.g:18103:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalSignalDSL.g:18104:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
             {
             pushFollow(FOLLOW_111);
             rule__QualifiedNameInStaticImport__Group__0__Impl();
@@ -57686,17 +59610,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__0__Impl"
-    // InternalSignalDSL.g:17524:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    // InternalSignalDSL.g:18111:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
     public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17528:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:17529:1: ( ruleValidID )
+            // InternalSignalDSL.g:18115:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:18116:1: ( ruleValidID )
             {
-            // InternalSignalDSL.g:17529:1: ( ruleValidID )
-            // InternalSignalDSL.g:17530:2: ruleValidID
+            // InternalSignalDSL.g:18116:1: ( ruleValidID )
+            // InternalSignalDSL.g:18117:2: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0()); 
@@ -57731,14 +59655,14 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1"
-    // InternalSignalDSL.g:17539:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    // InternalSignalDSL.g:18126:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
     public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17543:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
-            // InternalSignalDSL.g:17544:2: rule__QualifiedNameInStaticImport__Group__1__Impl
+            // InternalSignalDSL.g:18130:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalSignalDSL.g:18131:2: rule__QualifiedNameInStaticImport__Group__1__Impl
             {
             pushFollow(FOLLOW_2);
             rule__QualifiedNameInStaticImport__Group__1__Impl();
@@ -57764,17 +59688,17 @@
 
 
     // $ANTLR start "rule__QualifiedNameInStaticImport__Group__1__Impl"
-    // InternalSignalDSL.g:17550:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    // InternalSignalDSL.g:18137:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
     public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17554:1: ( ( '.' ) )
-            // InternalSignalDSL.g:17555:1: ( '.' )
+            // InternalSignalDSL.g:18141:1: ( ( '.' ) )
+            // InternalSignalDSL.g:18142:1: ( '.' )
             {
-            // InternalSignalDSL.g:17555:1: ( '.' )
-            // InternalSignalDSL.g:17556:2: '.'
+            // InternalSignalDSL.g:18142:1: ( '.' )
+            // InternalSignalDSL.g:18143:2: '.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
@@ -57805,17 +59729,17 @@
 
 
     // $ANTLR start "rule__SignalModel__ImportSectionAssignment_0"
-    // InternalSignalDSL.g:17566:1: rule__SignalModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    // InternalSignalDSL.g:18153:1: rule__SignalModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
     public final void rule__SignalModel__ImportSectionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17570:1: ( ( ruleXImportSection ) )
-            // InternalSignalDSL.g:17571:2: ( ruleXImportSection )
+            // InternalSignalDSL.g:18157:1: ( ( ruleXImportSection ) )
+            // InternalSignalDSL.g:18158:2: ( ruleXImportSection )
             {
-            // InternalSignalDSL.g:17571:2: ( ruleXImportSection )
-            // InternalSignalDSL.g:17572:3: ruleXImportSection
+            // InternalSignalDSL.g:18158:2: ( ruleXImportSection )
+            // InternalSignalDSL.g:18159:3: ruleXImportSection
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
@@ -57850,17 +59774,17 @@
 
 
     // $ANTLR start "rule__SignalModel__PackagesAssignment_1"
-    // InternalSignalDSL.g:17581:1: rule__SignalModel__PackagesAssignment_1 : ( ruleSignalPackage ) ;
+    // InternalSignalDSL.g:18168:1: rule__SignalModel__PackagesAssignment_1 : ( ruleSignalPackage ) ;
     public final void rule__SignalModel__PackagesAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17585:1: ( ( ruleSignalPackage ) )
-            // InternalSignalDSL.g:17586:2: ( ruleSignalPackage )
+            // InternalSignalDSL.g:18172:1: ( ( ruleSignalPackage ) )
+            // InternalSignalDSL.g:18173:2: ( ruleSignalPackage )
             {
-            // InternalSignalDSL.g:17586:2: ( ruleSignalPackage )
-            // InternalSignalDSL.g:17587:3: ruleSignalPackage
+            // InternalSignalDSL.g:18173:2: ( ruleSignalPackage )
+            // InternalSignalDSL.g:18174:3: ruleSignalPackage
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalModelAccess().getPackagesSignalPackageParserRuleCall_1_0()); 
@@ -57895,17 +59819,17 @@
 
 
     // $ANTLR start "rule__SignalPackage__NameAssignment_2"
-    // InternalSignalDSL.g:17596:1: rule__SignalPackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    // InternalSignalDSL.g:18183:1: rule__SignalPackage__NameAssignment_2 : ( ruleQualifiedName ) ;
     public final void rule__SignalPackage__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17600:1: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:17601:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18187:1: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18188:2: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:17601:2: ( ruleQualifiedName )
-            // InternalSignalDSL.g:17602:3: ruleQualifiedName
+            // InternalSignalDSL.g:18188:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18189:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
@@ -57940,17 +59864,17 @@
 
 
     // $ANTLR start "rule__SignalPackage__WatchersAssignment_3_1"
-    // InternalSignalDSL.g:17611:1: rule__SignalPackage__WatchersAssignment_3_1 : ( ruleSignalWatcher ) ;
+    // InternalSignalDSL.g:18198:1: rule__SignalPackage__WatchersAssignment_3_1 : ( ruleSignalWatcher ) ;
     public final void rule__SignalPackage__WatchersAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17615:1: ( ( ruleSignalWatcher ) )
-            // InternalSignalDSL.g:17616:2: ( ruleSignalWatcher )
+            // InternalSignalDSL.g:18202:1: ( ( ruleSignalWatcher ) )
+            // InternalSignalDSL.g:18203:2: ( ruleSignalWatcher )
             {
-            // InternalSignalDSL.g:17616:2: ( ruleSignalWatcher )
-            // InternalSignalDSL.g:17617:3: ruleSignalWatcher
+            // InternalSignalDSL.g:18203:2: ( ruleSignalWatcher )
+            // InternalSignalDSL.g:18204:3: ruleSignalWatcher
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalPackageAccess().getWatchersSignalWatcherParserRuleCall_3_1_0()); 
@@ -57985,17 +59909,17 @@
 
 
     // $ANTLR start "rule__SignalWatcher__NameAssignment_2"
-    // InternalSignalDSL.g:17626:1: rule__SignalWatcher__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalSignalDSL.g:18213:1: rule__SignalWatcher__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__SignalWatcher__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17630:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:17631:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18217:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:18218:2: ( ruleTRANSLATABLEID )
             {
-            // InternalSignalDSL.g:17631:2: ( ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:17632:3: ruleTRANSLATABLEID
+            // InternalSignalDSL.g:18218:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18219:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -58030,17 +59954,17 @@
 
 
     // $ANTLR start "rule__SignalWatcher__DirectoryAssignment_4"
-    // InternalSignalDSL.g:17641:1: rule__SignalWatcher__DirectoryAssignment_4 : ( RULE_STRING ) ;
+    // InternalSignalDSL.g:18228:1: rule__SignalWatcher__DirectoryAssignment_4 : ( RULE_STRING ) ;
     public final void rule__SignalWatcher__DirectoryAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17645:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:17646:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18232:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18233:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:17646:2: ( RULE_STRING )
-            // InternalSignalDSL.g:17647:3: RULE_STRING
+            // InternalSignalDSL.g:18233:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18234:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalWatcherAccess().getDirectorySTRINGTerminalRuleCall_4_0()); 
@@ -58070,66 +59994,21 @@
     // $ANTLR end "rule__SignalWatcher__DirectoryAssignment_4"
 
 
-    // $ANTLR start "rule__SignalWatcher__SignalAssignment_6"
-    // InternalSignalDSL.g:17656:1: rule__SignalWatcher__SignalAssignment_6 : ( ruleSignalTypeEnum ) ;
-    public final void rule__SignalWatcher__SignalAssignment_6() throws RecognitionException {
+    // $ANTLR start "rule__SignalWatcher__HandlersAssignment_6"
+    // InternalSignalDSL.g:18243:1: rule__SignalWatcher__HandlersAssignment_6 : ( ruleSignalHandler ) ;
+    public final void rule__SignalWatcher__HandlersAssignment_6() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17660:1: ( ( ruleSignalTypeEnum ) )
-            // InternalSignalDSL.g:17661:2: ( ruleSignalTypeEnum )
+            // InternalSignalDSL.g:18247:1: ( ( ruleSignalHandler ) )
+            // InternalSignalDSL.g:18248:2: ( ruleSignalHandler )
             {
-            // InternalSignalDSL.g:17661:2: ( ruleSignalTypeEnum )
-            // InternalSignalDSL.g:17662:3: ruleSignalTypeEnum
+            // InternalSignalDSL.g:18248:2: ( ruleSignalHandler )
+            // InternalSignalDSL.g:18249:3: ruleSignalHandler
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getSignalSignalTypeEnumEnumRuleCall_6_0()); 
-            }
-            pushFollow(FOLLOW_2);
-            ruleSignalTypeEnum();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getSignalSignalTypeEnumEnumRuleCall_6_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalWatcher__SignalAssignment_6"
-
-
-    // $ANTLR start "rule__SignalWatcher__HandlersAssignment_8"
-    // InternalSignalDSL.g:17671:1: rule__SignalWatcher__HandlersAssignment_8 : ( ruleSignalHandler ) ;
-    public final void rule__SignalWatcher__HandlersAssignment_8() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:17675:1: ( ( ruleSignalHandler ) )
-            // InternalSignalDSL.g:17676:2: ( ruleSignalHandler )
-            {
-            // InternalSignalDSL.g:17676:2: ( ruleSignalHandler )
-            // InternalSignalDSL.g:17677:3: ruleSignalHandler
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_8_0()); 
+               before(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); 
             }
             pushFollow(FOLLOW_2);
             ruleSignalHandler();
@@ -58137,7 +60016,7 @@
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_8_0()); 
+               after(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0()); 
             }
 
             }
@@ -58157,21 +60036,21 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalWatcher__HandlersAssignment_8"
+    // $ANTLR end "rule__SignalWatcher__HandlersAssignment_6"
 
 
     // $ANTLR start "rule__SignalHandler__NameAssignment_2"
-    // InternalSignalDSL.g:17686:1: rule__SignalHandler__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    // InternalSignalDSL.g:18258:1: rule__SignalHandler__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
     public final void rule__SignalHandler__NameAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17690:1: ( ( ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:17691:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18262:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:18263:2: ( ruleTRANSLATABLEID )
             {
-            // InternalSignalDSL.g:17691:2: ( ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:17692:3: ruleTRANSLATABLEID
+            // InternalSignalDSL.g:18263:2: ( ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:18264:3: ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
@@ -58205,29 +60084,29 @@
     // $ANTLR end "rule__SignalHandler__NameAssignment_2"
 
 
-    // $ANTLR start "rule__SignalHandler__ActionTypeAssignment_3"
-    // InternalSignalDSL.g:17701:1: rule__SignalHandler__ActionTypeAssignment_3 : ( ruleSignalHandlerTypeEnum ) ;
-    public final void rule__SignalHandler__ActionTypeAssignment_3() throws RecognitionException {
+    // $ANTLR start "rule__SignalHandler__InterchangesAssignment_3"
+    // InternalSignalDSL.g:18273:1: rule__SignalHandler__InterchangesAssignment_3 : ( ruleSignalDatainterchange ) ;
+    public final void rule__SignalHandler__InterchangesAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17705:1: ( ( ruleSignalHandlerTypeEnum ) )
-            // InternalSignalDSL.g:17706:2: ( ruleSignalHandlerTypeEnum )
+            // InternalSignalDSL.g:18277:1: ( ( ruleSignalDatainterchange ) )
+            // InternalSignalDSL.g:18278:2: ( ruleSignalDatainterchange )
             {
-            // InternalSignalDSL.g:17706:2: ( ruleSignalHandlerTypeEnum )
-            // InternalSignalDSL.g:17707:3: ruleSignalHandlerTypeEnum
+            // InternalSignalDSL.g:18278:2: ( ruleSignalDatainterchange )
+            // InternalSignalDSL.g:18279:3: ruleSignalDatainterchange
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0()); 
+               before(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); 
             }
             pushFollow(FOLLOW_2);
-            ruleSignalHandlerTypeEnum();
+            ruleSignalDatainterchange();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0()); 
+               after(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); 
             }
 
             }
@@ -58247,69 +60126,24 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__ActionTypeAssignment_3"
+    // $ANTLR end "rule__SignalHandler__InterchangesAssignment_3"
 
 
-    // $ANTLR start "rule__SignalHandler__DataAssignment_4"
-    // InternalSignalDSL.g:17716:1: rule__SignalHandler__DataAssignment_4 : ( ruleDataTransfer ) ;
-    public final void rule__SignalHandler__DataAssignment_4() throws RecognitionException {
+    // $ANTLR start "rule__SignalHandler__ExecutiontypeAssignment_4"
+    // InternalSignalDSL.g:18288:1: rule__SignalHandler__ExecutiontypeAssignment_4 : ( ruleSignalExecutionTypeEnum ) ;
+    public final void rule__SignalHandler__ExecutiontypeAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17720:1: ( ( ruleDataTransfer ) )
-            // InternalSignalDSL.g:17721:2: ( ruleDataTransfer )
+            // InternalSignalDSL.g:18292:1: ( ( ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:18293:2: ( ruleSignalExecutionTypeEnum )
             {
-            // InternalSignalDSL.g:17721:2: ( ruleDataTransfer )
-            // InternalSignalDSL.g:17722:3: ruleDataTransfer
+            // InternalSignalDSL.g:18293:2: ( ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:18294:3: ruleSignalExecutionTypeEnum
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getDataDataTransferParserRuleCall_4_0()); 
-            }
-            pushFollow(FOLLOW_2);
-            ruleDataTransfer();
-
-            state._fsp--;
-            if (state.failed) return ;
-            if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getDataDataTransferParserRuleCall_4_0()); 
-            }
-
-            }
-
-
-            }
-
-        }
-        catch (RecognitionException re) {
-            reportError(re);
-            recover(input,re);
-        }
-        finally {
-
-            	restoreStackSize(stackSize);
-
-        }
-        return ;
-    }
-    // $ANTLR end "rule__SignalHandler__DataAssignment_4"
-
-
-    // $ANTLR start "rule__SignalHandler__ExecutiontypeAssignment_5"
-    // InternalSignalDSL.g:17731:1: rule__SignalHandler__ExecutiontypeAssignment_5 : ( ruleSignalExecutionTypeEnum ) ;
-    public final void rule__SignalHandler__ExecutiontypeAssignment_5() throws RecognitionException {
-
-        		int stackSize = keepStackSize();
-        	
-        try {
-            // InternalSignalDSL.g:17735:1: ( ( ruleSignalExecutionTypeEnum ) )
-            // InternalSignalDSL.g:17736:2: ( ruleSignalExecutionTypeEnum )
-            {
-            // InternalSignalDSL.g:17736:2: ( ruleSignalExecutionTypeEnum )
-            // InternalSignalDSL.g:17737:3: ruleSignalExecutionTypeEnum
-            {
-            if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0()); 
+               before(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); 
             }
             pushFollow(FOLLOW_2);
             ruleSignalExecutionTypeEnum();
@@ -58317,7 +60151,7 @@
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0()); 
+               after(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0()); 
             }
 
             }
@@ -58337,28 +60171,73 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__ExecutiontypeAssignment_5"
+    // $ANTLR end "rule__SignalHandler__ExecutiontypeAssignment_4"
 
 
-    // $ANTLR start "rule__SignalHandler__FilemaskAssignment_7"
-    // InternalSignalDSL.g:17746:1: rule__SignalHandler__FilemaskAssignment_7 : ( RULE_STRING ) ;
-    public final void rule__SignalHandler__FilemaskAssignment_7() throws RecognitionException {
+    // $ANTLR start "rule__SignalHandler__TriggerpolicyAssignment_5"
+    // InternalSignalDSL.g:18303:1: rule__SignalHandler__TriggerpolicyAssignment_5 : ( ruleTriggerPolicy ) ;
+    public final void rule__SignalHandler__TriggerpolicyAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17750:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:17751:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18307:1: ( ( ruleTriggerPolicy ) )
+            // InternalSignalDSL.g:18308:2: ( ruleTriggerPolicy )
             {
-            // InternalSignalDSL.g:17751:2: ( RULE_STRING )
-            // InternalSignalDSL.g:17752:3: RULE_STRING
+            // InternalSignalDSL.g:18308:2: ( ruleTriggerPolicy )
+            // InternalSignalDSL.g:18309:3: ruleTriggerPolicy
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSignalHandlerAccess().getFilemaskSTRINGTerminalRuleCall_7_0()); 
+               before(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTriggerPolicy();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignalHandler__TriggerpolicyAssignment_5"
+
+
+    // $ANTLR start "rule__TriggerFile__FilemaskAssignment_1"
+    // InternalSignalDSL.g:18318:1: rule__TriggerFile__FilemaskAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__TriggerFile__FilemaskAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18322:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18323:2: ( RULE_STRING )
+            {
+            // InternalSignalDSL.g:18323:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18324:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); 
             }
             match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSignalHandlerAccess().getFilemaskSTRINGTerminalRuleCall_7_0()); 
+               after(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0()); 
             }
 
             }
@@ -58378,32 +60257,32 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SignalHandler__FilemaskAssignment_7"
+    // $ANTLR end "rule__TriggerFile__FilemaskAssignment_1"
 
 
-    // $ANTLR start "rule__ListTransfer__InterchangesAssignment_3"
-    // InternalSignalDSL.g:17761:1: rule__ListTransfer__InterchangesAssignment_3 : ( ruleSignalDatainterchange ) ;
-    public final void rule__ListTransfer__InterchangesAssignment_3() throws RecognitionException {
+    // $ANTLR start "rule__SignalScheduler__SchedulerAssignment_1"
+    // InternalSignalDSL.g:18333:1: rule__SignalScheduler__SchedulerAssignment_1 : ( ruleScheduler ) ;
+    public final void rule__SignalScheduler__SchedulerAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17765:1: ( ( ruleSignalDatainterchange ) )
-            // InternalSignalDSL.g:17766:2: ( ruleSignalDatainterchange )
+            // InternalSignalDSL.g:18337:1: ( ( ruleScheduler ) )
+            // InternalSignalDSL.g:18338:2: ( ruleScheduler )
             {
-            // InternalSignalDSL.g:17766:2: ( ruleSignalDatainterchange )
-            // InternalSignalDSL.g:17767:3: ruleSignalDatainterchange
+            // InternalSignalDSL.g:18338:2: ( ruleScheduler )
+            // InternalSignalDSL.g:18339:3: ruleScheduler
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getListTransferAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); 
+               before(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); 
             }
             pushFollow(FOLLOW_2);
-            ruleSignalDatainterchange();
+            ruleScheduler();
 
             state._fsp--;
             if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getListTransferAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0()); 
+               after(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0()); 
             }
 
             }
@@ -58423,32 +60302,28 @@
         }
         return ;
     }
-    // $ANTLR end "rule__ListTransfer__InterchangesAssignment_3"
+    // $ANTLR end "rule__SignalScheduler__SchedulerAssignment_1"
 
 
-    // $ANTLR start "rule__SingleTransfer__InterchangeAssignment"
-    // InternalSignalDSL.g:17776:1: rule__SingleTransfer__InterchangeAssignment : ( ruleSignalDatainterchange ) ;
-    public final void rule__SingleTransfer__InterchangeAssignment() throws RecognitionException {
+    // $ANTLR start "rule__CronScheduler__ExpressionAssignment_1"
+    // InternalSignalDSL.g:18348:1: rule__CronScheduler__ExpressionAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__CronScheduler__ExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17780:1: ( ( ruleSignalDatainterchange ) )
-            // InternalSignalDSL.g:17781:2: ( ruleSignalDatainterchange )
+            // InternalSignalDSL.g:18352:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18353:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:17781:2: ( ruleSignalDatainterchange )
-            // InternalSignalDSL.g:17782:3: ruleSignalDatainterchange
+            // InternalSignalDSL.g:18353:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18354:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
-               before(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0()); 
+               before(grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0()); 
             }
-            pushFollow(FOLLOW_2);
-            ruleSignalDatainterchange();
-
-            state._fsp--;
-            if (state.failed) return ;
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
-               after(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0()); 
+               after(grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0()); 
             }
 
             }
@@ -58468,21 +60343,394 @@
         }
         return ;
     }
-    // $ANTLR end "rule__SingleTransfer__InterchangeAssignment"
+    // $ANTLR end "rule__CronScheduler__ExpressionAssignment_1"
+
+
+    // $ANTLR start "rule__HourlyScheduler__MinuteAssignment_1"
+    // InternalSignalDSL.g:18363:1: rule__HourlyScheduler__MinuteAssignment_1 : ( RULE_INT ) ;
+    public final void rule__HourlyScheduler__MinuteAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18367:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18368:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18368:2: ( RULE_INT )
+            // InternalSignalDSL.g:18369:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__HourlyScheduler__MinuteAssignment_1"
+
+
+    // $ANTLR start "rule__DailyScheduler__HourAssignment_1"
+    // InternalSignalDSL.g:18378:1: rule__DailyScheduler__HourAssignment_1 : ( RULE_INT ) ;
+    public final void rule__DailyScheduler__HourAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18382:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18383:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18383:2: ( RULE_INT )
+            // InternalSignalDSL.g:18384:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__HourAssignment_1"
+
+
+    // $ANTLR start "rule__DailyScheduler__MinuteAssignment_3"
+    // InternalSignalDSL.g:18393:1: rule__DailyScheduler__MinuteAssignment_3 : ( RULE_INT ) ;
+    public final void rule__DailyScheduler__MinuteAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18397:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18398:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18398:2: ( RULE_INT )
+            // InternalSignalDSL.g:18399:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__DailyScheduler__MinuteAssignment_3"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__DayofweekAssignment_1"
+    // InternalSignalDSL.g:18408:1: rule__WeeklyScheduler__DayofweekAssignment_1 : ( ruleDayOfWeekEnum ) ;
+    public final void rule__WeeklyScheduler__DayofweekAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18412:1: ( ( ruleDayOfWeekEnum ) )
+            // InternalSignalDSL.g:18413:2: ( ruleDayOfWeekEnum )
+            {
+            // InternalSignalDSL.g:18413:2: ( ruleDayOfWeekEnum )
+            // InternalSignalDSL.g:18414:3: ruleDayOfWeekEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleDayOfWeekEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__DayofweekAssignment_1"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__HourAssignment_3"
+    // InternalSignalDSL.g:18423:1: rule__WeeklyScheduler__HourAssignment_3 : ( RULE_INT ) ;
+    public final void rule__WeeklyScheduler__HourAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18427:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18428:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18428:2: ( RULE_INT )
+            // InternalSignalDSL.g:18429:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__HourAssignment_3"
+
+
+    // $ANTLR start "rule__WeeklyScheduler__MinuteAssignment_5"
+    // InternalSignalDSL.g:18438:1: rule__WeeklyScheduler__MinuteAssignment_5 : ( RULE_INT ) ;
+    public final void rule__WeeklyScheduler__MinuteAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18442:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18443:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18443:2: ( RULE_INT )
+            // InternalSignalDSL.g:18444:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__WeeklyScheduler__MinuteAssignment_5"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__DayofmonthAssignment_1"
+    // InternalSignalDSL.g:18453:1: rule__MonthlyScheduler__DayofmonthAssignment_1 : ( RULE_INT ) ;
+    public final void rule__MonthlyScheduler__DayofmonthAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18457:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18458:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18458:2: ( RULE_INT )
+            // InternalSignalDSL.g:18459:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__DayofmonthAssignment_1"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__HourAssignment_3"
+    // InternalSignalDSL.g:18468:1: rule__MonthlyScheduler__HourAssignment_3 : ( RULE_INT ) ;
+    public final void rule__MonthlyScheduler__HourAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18472:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18473:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18473:2: ( RULE_INT )
+            // InternalSignalDSL.g:18474:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__HourAssignment_3"
+
+
+    // $ANTLR start "rule__MonthlyScheduler__MinuteAssignment_5"
+    // InternalSignalDSL.g:18483:1: rule__MonthlyScheduler__MinuteAssignment_5 : ( RULE_INT ) ;
+    public final void rule__MonthlyScheduler__MinuteAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalSignalDSL.g:18487:1: ( ( RULE_INT ) )
+            // InternalSignalDSL.g:18488:2: ( RULE_INT )
+            {
+            // InternalSignalDSL.g:18488:2: ( RULE_INT )
+            // InternalSignalDSL.g:18489:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__MonthlyScheduler__MinuteAssignment_5"
 
 
     // $ANTLR start "rule__SignalDatainterchange__DataActionAssignment_0"
-    // InternalSignalDSL.g:17791:1: rule__SignalDatainterchange__DataActionAssignment_0 : ( ruleSignalActionEnum ) ;
+    // InternalSignalDSL.g:18498:1: rule__SignalDatainterchange__DataActionAssignment_0 : ( ruleSignalActionEnum ) ;
     public final void rule__SignalDatainterchange__DataActionAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17795:1: ( ( ruleSignalActionEnum ) )
-            // InternalSignalDSL.g:17796:2: ( ruleSignalActionEnum )
+            // InternalSignalDSL.g:18502:1: ( ( ruleSignalActionEnum ) )
+            // InternalSignalDSL.g:18503:2: ( ruleSignalActionEnum )
             {
-            // InternalSignalDSL.g:17796:2: ( ruleSignalActionEnum )
-            // InternalSignalDSL.g:17797:3: ruleSignalActionEnum
+            // InternalSignalDSL.g:18503:2: ( ruleSignalActionEnum )
+            // InternalSignalDSL.g:18504:3: ruleSignalActionEnum
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataActionSignalActionEnumEnumRuleCall_0_0()); 
@@ -58517,23 +60765,23 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__DataRefAssignment_1"
-    // InternalSignalDSL.g:17806:1: rule__SignalDatainterchange__DataRefAssignment_1 : ( ( RULE_ID ) ) ;
+    // InternalSignalDSL.g:18513:1: rule__SignalDatainterchange__DataRefAssignment_1 : ( ( RULE_ID ) ) ;
     public final void rule__SignalDatainterchange__DataRefAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17810:1: ( ( ( RULE_ID ) ) )
-            // InternalSignalDSL.g:17811:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:18517:1: ( ( ( RULE_ID ) ) )
+            // InternalSignalDSL.g:18518:2: ( ( RULE_ID ) )
             {
-            // InternalSignalDSL.g:17811:2: ( ( RULE_ID ) )
-            // InternalSignalDSL.g:17812:3: ( RULE_ID )
+            // InternalSignalDSL.g:18518:2: ( ( RULE_ID ) )
+            // InternalSignalDSL.g:18519:3: ( RULE_ID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataRefDataInterchangeCrossReference_1_0()); 
             }
-            // InternalSignalDSL.g:17813:3: ( RULE_ID )
-            // InternalSignalDSL.g:17814:4: RULE_ID
+            // InternalSignalDSL.g:18520:3: ( RULE_ID )
+            // InternalSignalDSL.g:18521:4: RULE_ID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getDataRefDataInterchangeIDTerminalRuleCall_1_0_1()); 
@@ -58570,17 +60818,17 @@
 
 
     // $ANTLR start "rule__SignalDatainterchange__FileNameAssignment_3"
-    // InternalSignalDSL.g:17825:1: rule__SignalDatainterchange__FileNameAssignment_3 : ( RULE_STRING ) ;
+    // InternalSignalDSL.g:18532:1: rule__SignalDatainterchange__FileNameAssignment_3 : ( RULE_STRING ) ;
     public final void rule__SignalDatainterchange__FileNameAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17829:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:17830:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18536:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:18537:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:17830:2: ( RULE_STRING )
-            // InternalSignalDSL.g:17831:3: RULE_STRING
+            // InternalSignalDSL.g:18537:2: ( RULE_STRING )
+            // InternalSignalDSL.g:18538:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getSignalDatainterchangeAccess().getFileNameSTRINGTerminalRuleCall_3_0()); 
@@ -58611,23 +60859,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
-    // InternalSignalDSL.g:17840:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    // InternalSignalDSL.g:18547:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
     public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17844:1: ( ( ( 'static' ) ) )
-            // InternalSignalDSL.g:17845:2: ( ( 'static' ) )
+            // InternalSignalDSL.g:18551:1: ( ( ( 'static' ) ) )
+            // InternalSignalDSL.g:18552:2: ( ( 'static' ) )
             {
-            // InternalSignalDSL.g:17845:2: ( ( 'static' ) )
-            // InternalSignalDSL.g:17846:3: ( 'static' )
+            // InternalSignalDSL.g:18552:2: ( ( 'static' ) )
+            // InternalSignalDSL.g:18553:3: ( 'static' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
             }
-            // InternalSignalDSL.g:17847:3: ( 'static' )
-            // InternalSignalDSL.g:17848:4: 'static'
+            // InternalSignalDSL.g:18554:3: ( 'static' )
+            // InternalSignalDSL.g:18555:4: 'static'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
@@ -58664,23 +60912,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ExtensionAssignment_2_0_1"
-    // InternalSignalDSL.g:17859:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    // InternalSignalDSL.g:18566:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
     public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17863:1: ( ( ( 'extension' ) ) )
-            // InternalSignalDSL.g:17864:2: ( ( 'extension' ) )
+            // InternalSignalDSL.g:18570:1: ( ( ( 'extension' ) ) )
+            // InternalSignalDSL.g:18571:2: ( ( 'extension' ) )
             {
-            // InternalSignalDSL.g:17864:2: ( ( 'extension' ) )
-            // InternalSignalDSL.g:17865:3: ( 'extension' )
+            // InternalSignalDSL.g:18571:2: ( ( 'extension' ) )
+            // InternalSignalDSL.g:18572:3: ( 'extension' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
             }
-            // InternalSignalDSL.g:17866:3: ( 'extension' )
-            // InternalSignalDSL.g:17867:4: 'extension'
+            // InternalSignalDSL.g:18573:3: ( 'extension' )
+            // InternalSignalDSL.g:18574:4: 'extension'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
@@ -58717,23 +60965,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_0_2"
-    // InternalSignalDSL.g:17878:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    // InternalSignalDSL.g:18585:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17882:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
-            // InternalSignalDSL.g:17883:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalSignalDSL.g:18589:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalSignalDSL.g:18590:2: ( ( ruleQualifiedNameInStaticImport ) )
             {
-            // InternalSignalDSL.g:17883:2: ( ( ruleQualifiedNameInStaticImport ) )
-            // InternalSignalDSL.g:17884:3: ( ruleQualifiedNameInStaticImport )
+            // InternalSignalDSL.g:18590:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalSignalDSL.g:18591:3: ( ruleQualifiedNameInStaticImport )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
             }
-            // InternalSignalDSL.g:17885:3: ( ruleQualifiedNameInStaticImport )
-            // InternalSignalDSL.g:17886:4: ruleQualifiedNameInStaticImport
+            // InternalSignalDSL.g:18592:3: ( ruleQualifiedNameInStaticImport )
+            // InternalSignalDSL.g:18593:4: ruleQualifiedNameInStaticImport
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameInStaticImportParserRuleCall_2_0_2_0_1()); 
@@ -58774,23 +61022,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__WildcardAssignment_2_0_3_0"
-    // InternalSignalDSL.g:17897:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    // InternalSignalDSL.g:18604:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
     public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17901:1: ( ( ( '*' ) ) )
-            // InternalSignalDSL.g:17902:2: ( ( '*' ) )
+            // InternalSignalDSL.g:18608:1: ( ( ( '*' ) ) )
+            // InternalSignalDSL.g:18609:2: ( ( '*' ) )
             {
-            // InternalSignalDSL.g:17902:2: ( ( '*' ) )
-            // InternalSignalDSL.g:17903:3: ( '*' )
+            // InternalSignalDSL.g:18609:2: ( ( '*' ) )
+            // InternalSignalDSL.g:18610:3: ( '*' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
             }
-            // InternalSignalDSL.g:17904:3: ( '*' )
-            // InternalSignalDSL.g:17905:4: '*'
+            // InternalSignalDSL.g:18611:3: ( '*' )
+            // InternalSignalDSL.g:18612:4: '*'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
@@ -58827,17 +61075,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__MemberNameAssignment_2_0_3_1"
-    // InternalSignalDSL.g:17916:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:18623:1: rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 : ( ruleValidID ) ;
     public final void rule__XImportDeclaration__MemberNameAssignment_2_0_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17920:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:17921:2: ( ruleValidID )
+            // InternalSignalDSL.g:18627:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:18628:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:17921:2: ( ruleValidID )
-            // InternalSignalDSL.g:17922:3: ruleValidID
+            // InternalSignalDSL.g:18628:2: ( ruleValidID )
+            // InternalSignalDSL.g:18629:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0()); 
@@ -58872,23 +61120,23 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedTypeAssignment_2_1"
-    // InternalSignalDSL.g:17931:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:18638:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17935:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:17936:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18642:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:18643:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:17936:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:17937:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18643:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18644:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
             }
-            // InternalSignalDSL.g:17938:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:17939:4: ruleQualifiedName
+            // InternalSignalDSL.g:18645:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18646:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeQualifiedNameParserRuleCall_2_1_0_1()); 
@@ -58929,17 +61177,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedNamespaceAssignment_2_2"
-    // InternalSignalDSL.g:17950:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    // InternalSignalDSL.g:18657:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
     public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17954:1: ( ( ruleQualifiedNameWithWildcard ) )
-            // InternalSignalDSL.g:17955:2: ( ruleQualifiedNameWithWildcard )
+            // InternalSignalDSL.g:18661:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalSignalDSL.g:18662:2: ( ruleQualifiedNameWithWildcard )
             {
-            // InternalSignalDSL.g:17955:2: ( ruleQualifiedNameWithWildcard )
-            // InternalSignalDSL.g:17956:3: ruleQualifiedNameWithWildcard
+            // InternalSignalDSL.g:18662:2: ( ruleQualifiedNameWithWildcard )
+            // InternalSignalDSL.g:18663:3: ruleQualifiedNameWithWildcard
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0()); 
@@ -58974,28 +61222,28 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__FqnImportAssignment_2_3_0"
-    // InternalSignalDSL.g:17965:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    // InternalSignalDSL.g:18672:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
     public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17969:1: ( ( ( 'ns' ) ) )
-            // InternalSignalDSL.g:17970:2: ( ( 'ns' ) )
+            // InternalSignalDSL.g:18676:1: ( ( ( 'ns' ) ) )
+            // InternalSignalDSL.g:18677:2: ( ( 'ns' ) )
             {
-            // InternalSignalDSL.g:17970:2: ( ( 'ns' ) )
-            // InternalSignalDSL.g:17971:3: ( 'ns' )
+            // InternalSignalDSL.g:18677:2: ( ( 'ns' ) )
+            // InternalSignalDSL.g:18678:3: ( 'ns' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            // InternalSignalDSL.g:17972:3: ( 'ns' )
-            // InternalSignalDSL.g:17973:4: 'ns'
+            // InternalSignalDSL.g:18679:3: ( 'ns' )
+            // InternalSignalDSL.g:18680:4: 'ns'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
-            match(input,98,FOLLOW_2); if (state.failed) return ;
+            match(input,107,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
             }
@@ -59027,17 +61275,17 @@
 
 
     // $ANTLR start "rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1"
-    // InternalSignalDSL.g:17984:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    // InternalSignalDSL.g:18691:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
     public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:17988:1: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:17989:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18695:1: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18696:2: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:17989:2: ( ruleQualifiedName )
-            // InternalSignalDSL.g:17990:3: ruleQualifiedName
+            // InternalSignalDSL.g:18696:2: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18697:3: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0()); 
@@ -59072,23 +61320,23 @@
 
 
     // $ANTLR start "rule__XAnnotation__AnnotationTypeAssignment_2"
-    // InternalSignalDSL.g:17999:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:18706:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18003:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:18004:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18710:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:18711:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:18004:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:18005:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18711:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:18712:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
             }
-            // InternalSignalDSL.g:18006:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:18007:4: ruleQualifiedName
+            // InternalSignalDSL.g:18713:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:18714:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeQualifiedNameParserRuleCall_2_0_1()); 
@@ -59129,17 +61377,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0"
-    // InternalSignalDSL.g:18018:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalSignalDSL.g:18725:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 : ( ruleXAnnotationElementValuePair ) ;
     public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18022:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalSignalDSL.g:18023:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:18729:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalSignalDSL.g:18730:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalSignalDSL.g:18023:2: ( ruleXAnnotationElementValuePair )
-            // InternalSignalDSL.g:18024:3: ruleXAnnotationElementValuePair
+            // InternalSignalDSL.g:18730:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:18731:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_0_0()); 
@@ -59174,17 +61422,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1"
-    // InternalSignalDSL.g:18033:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
+    // InternalSignalDSL.g:18740:1: rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 : ( ruleXAnnotationElementValuePair ) ;
     public final void rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18037:1: ( ( ruleXAnnotationElementValuePair ) )
-            // InternalSignalDSL.g:18038:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:18744:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalSignalDSL.g:18745:2: ( ruleXAnnotationElementValuePair )
             {
-            // InternalSignalDSL.g:18038:2: ( ruleXAnnotationElementValuePair )
-            // InternalSignalDSL.g:18039:3: ruleXAnnotationElementValuePair
+            // InternalSignalDSL.g:18745:2: ( ruleXAnnotationElementValuePair )
+            // InternalSignalDSL.g:18746:3: ruleXAnnotationElementValuePair
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
@@ -59219,17 +61467,17 @@
 
 
     // $ANTLR start "rule__XAnnotation__ValueAssignment_3_1_1"
-    // InternalSignalDSL.g:18048:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    // InternalSignalDSL.g:18755:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
     public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18052:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
-            // InternalSignalDSL.g:18053:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalSignalDSL.g:18759:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalSignalDSL.g:18760:2: ( ruleXAnnotationElementValueOrCommaList )
             {
-            // InternalSignalDSL.g:18053:2: ( ruleXAnnotationElementValueOrCommaList )
-            // InternalSignalDSL.g:18054:3: ruleXAnnotationElementValueOrCommaList
+            // InternalSignalDSL.g:18760:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalSignalDSL.g:18761:3: ruleXAnnotationElementValueOrCommaList
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
@@ -59264,23 +61512,23 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0"
-    // InternalSignalDSL.g:18063:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    // InternalSignalDSL.g:18770:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
     public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18067:1: ( ( ( ruleValidID ) ) )
-            // InternalSignalDSL.g:18068:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:18774:1: ( ( ( ruleValidID ) ) )
+            // InternalSignalDSL.g:18775:2: ( ( ruleValidID ) )
             {
-            // InternalSignalDSL.g:18068:2: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:18069:3: ( ruleValidID )
+            // InternalSignalDSL.g:18775:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:18776:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
             }
-            // InternalSignalDSL.g:18070:3: ( ruleValidID )
-            // InternalSignalDSL.g:18071:4: ruleValidID
+            // InternalSignalDSL.g:18777:3: ( ruleValidID )
+            // InternalSignalDSL.g:18778:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationValidIDParserRuleCall_0_0_0_0_1()); 
@@ -59321,17 +61569,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValuePair__ValueAssignment_1"
-    // InternalSignalDSL.g:18082:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    // InternalSignalDSL.g:18789:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
     public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18086:1: ( ( ruleXAnnotationElementValue ) )
-            // InternalSignalDSL.g:18087:2: ( ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:18793:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalSignalDSL.g:18794:2: ( ruleXAnnotationElementValue )
             {
-            // InternalSignalDSL.g:18087:2: ( ruleXAnnotationElementValue )
-            // InternalSignalDSL.g:18088:3: ruleXAnnotationElementValue
+            // InternalSignalDSL.g:18794:2: ( ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:18795:3: ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
@@ -59366,17 +61614,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0"
-    // InternalSignalDSL.g:18097:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:18804:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18101:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18102:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18808:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:18809:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18102:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18103:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:18809:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18810:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -59411,17 +61659,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1"
-    // InternalSignalDSL.g:18112:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:18819:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18116:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18117:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18823:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:18824:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18117:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18118:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:18824:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18825:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -59456,17 +61704,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1"
-    // InternalSignalDSL.g:18127:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:18834:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18131:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18132:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18838:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:18839:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18132:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18133:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:18839:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18840:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
@@ -59501,17 +61749,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_0"
-    // InternalSignalDSL.g:18142:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:18849:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18146:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18147:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18853:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:18854:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18147:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18148:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:18854:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18855:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
@@ -59546,17 +61794,17 @@
 
 
     // $ANTLR start "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1"
-    // InternalSignalDSL.g:18157:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:18864:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 : ( ruleXAnnotationOrExpression ) ;
     public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18161:1: ( ( ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:18162:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18868:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:18869:2: ( ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:18162:2: ( ruleXAnnotationOrExpression )
-            // InternalSignalDSL.g:18163:3: ruleXAnnotationOrExpression
+            // InternalSignalDSL.g:18869:2: ( ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:18870:3: ruleXAnnotationOrExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
@@ -59591,23 +61839,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_0_1"
-    // InternalSignalDSL.g:18172:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    // InternalSignalDSL.g:18879:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18176:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalSignalDSL.g:18177:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:18883:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalSignalDSL.g:18884:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalSignalDSL.g:18177:2: ( ( ruleFeatureCallID ) )
-            // InternalSignalDSL.g:18178:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:18884:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:18885:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalSignalDSL.g:18179:3: ( ruleFeatureCallID )
-            // InternalSignalDSL.g:18180:4: ruleFeatureCallID
+            // InternalSignalDSL.g:18886:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:18887:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_0_1_0_1()); 
@@ -59648,17 +61896,17 @@
 
 
     // $ANTLR start "rule__XAssignment__ValueAssignment_0_3"
-    // InternalSignalDSL.g:18191:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:18898:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18195:1: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:18196:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:18902:1: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:18903:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:18196:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:18197:3: ruleXAssignment
+            // InternalSignalDSL.g:18903:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:18904:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
@@ -59693,23 +61941,23 @@
 
 
     // $ANTLR start "rule__XAssignment__FeatureAssignment_1_1_0_0_1"
-    // InternalSignalDSL.g:18206:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
+    // InternalSignalDSL.g:18913:1: rule__XAssignment__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpMultiAssign ) ) ;
     public final void rule__XAssignment__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18210:1: ( ( ( ruleOpMultiAssign ) ) )
-            // InternalSignalDSL.g:18211:2: ( ( ruleOpMultiAssign ) )
+            // InternalSignalDSL.g:18917:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalSignalDSL.g:18918:2: ( ( ruleOpMultiAssign ) )
             {
-            // InternalSignalDSL.g:18211:2: ( ( ruleOpMultiAssign ) )
-            // InternalSignalDSL.g:18212:3: ( ruleOpMultiAssign )
+            // InternalSignalDSL.g:18918:2: ( ( ruleOpMultiAssign ) )
+            // InternalSignalDSL.g:18919:3: ( ruleOpMultiAssign )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18213:3: ( ruleOpMultiAssign )
-            // InternalSignalDSL.g:18214:4: ruleOpMultiAssign
+            // InternalSignalDSL.g:18920:3: ( ruleOpMultiAssign )
+            // InternalSignalDSL.g:18921:4: ruleOpMultiAssign
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementOpMultiAssignParserRuleCall_1_1_0_0_1_0_1()); 
@@ -59750,17 +61998,17 @@
 
 
     // $ANTLR start "rule__XAssignment__RightOperandAssignment_1_1_1"
-    // InternalSignalDSL.g:18225:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:18932:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
     public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18229:1: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:18230:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:18936:1: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:18937:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:18230:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:18231:3: ruleXAssignment
+            // InternalSignalDSL.g:18937:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:18938:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
@@ -59795,23 +62043,23 @@
 
 
     // $ANTLR start "rule__XOrExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18240:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
+    // InternalSignalDSL.g:18947:1: rule__XOrExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOr ) ) ;
     public final void rule__XOrExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18244:1: ( ( ( ruleOpOr ) ) )
-            // InternalSignalDSL.g:18245:2: ( ( ruleOpOr ) )
+            // InternalSignalDSL.g:18951:1: ( ( ( ruleOpOr ) ) )
+            // InternalSignalDSL.g:18952:2: ( ( ruleOpOr ) )
             {
-            // InternalSignalDSL.g:18245:2: ( ( ruleOpOr ) )
-            // InternalSignalDSL.g:18246:3: ( ruleOpOr )
+            // InternalSignalDSL.g:18952:2: ( ( ruleOpOr ) )
+            // InternalSignalDSL.g:18953:3: ( ruleOpOr )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18247:3: ( ruleOpOr )
-            // InternalSignalDSL.g:18248:4: ruleOpOr
+            // InternalSignalDSL.g:18954:3: ( ruleOpOr )
+            // InternalSignalDSL.g:18955:4: ruleOpOr
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementOpOrParserRuleCall_1_0_0_1_0_1()); 
@@ -59852,17 +62100,17 @@
 
 
     // $ANTLR start "rule__XOrExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18259:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    // InternalSignalDSL.g:18966:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
     public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18263:1: ( ( ruleXAndExpression ) )
-            // InternalSignalDSL.g:18264:2: ( ruleXAndExpression )
+            // InternalSignalDSL.g:18970:1: ( ( ruleXAndExpression ) )
+            // InternalSignalDSL.g:18971:2: ( ruleXAndExpression )
             {
-            // InternalSignalDSL.g:18264:2: ( ruleXAndExpression )
-            // InternalSignalDSL.g:18265:3: ruleXAndExpression
+            // InternalSignalDSL.g:18971:2: ( ruleXAndExpression )
+            // InternalSignalDSL.g:18972:3: ruleXAndExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOrExpressionAccess().getRightOperandXAndExpressionParserRuleCall_1_1_0()); 
@@ -59897,23 +62145,23 @@
 
 
     // $ANTLR start "rule__XAndExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18274:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
+    // InternalSignalDSL.g:18981:1: rule__XAndExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAnd ) ) ;
     public final void rule__XAndExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18278:1: ( ( ( ruleOpAnd ) ) )
-            // InternalSignalDSL.g:18279:2: ( ( ruleOpAnd ) )
+            // InternalSignalDSL.g:18985:1: ( ( ( ruleOpAnd ) ) )
+            // InternalSignalDSL.g:18986:2: ( ( ruleOpAnd ) )
             {
-            // InternalSignalDSL.g:18279:2: ( ( ruleOpAnd ) )
-            // InternalSignalDSL.g:18280:3: ( ruleOpAnd )
+            // InternalSignalDSL.g:18986:2: ( ( ruleOpAnd ) )
+            // InternalSignalDSL.g:18987:3: ( ruleOpAnd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18281:3: ( ruleOpAnd )
-            // InternalSignalDSL.g:18282:4: ruleOpAnd
+            // InternalSignalDSL.g:18988:3: ( ruleOpAnd )
+            // InternalSignalDSL.g:18989:4: ruleOpAnd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementOpAndParserRuleCall_1_0_0_1_0_1()); 
@@ -59954,17 +62202,17 @@
 
 
     // $ANTLR start "rule__XAndExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18293:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    // InternalSignalDSL.g:19000:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
     public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18297:1: ( ( ruleXEqualityExpression ) )
-            // InternalSignalDSL.g:18298:2: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:19004:1: ( ( ruleXEqualityExpression ) )
+            // InternalSignalDSL.g:19005:2: ( ruleXEqualityExpression )
             {
-            // InternalSignalDSL.g:18298:2: ( ruleXEqualityExpression )
-            // InternalSignalDSL.g:18299:3: ruleXEqualityExpression
+            // InternalSignalDSL.g:19005:2: ( ruleXEqualityExpression )
+            // InternalSignalDSL.g:19006:3: ruleXEqualityExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
@@ -59999,23 +62247,23 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18308:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
+    // InternalSignalDSL.g:19015:1: rule__XEqualityExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpEquality ) ) ;
     public final void rule__XEqualityExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18312:1: ( ( ( ruleOpEquality ) ) )
-            // InternalSignalDSL.g:18313:2: ( ( ruleOpEquality ) )
+            // InternalSignalDSL.g:19019:1: ( ( ( ruleOpEquality ) ) )
+            // InternalSignalDSL.g:19020:2: ( ( ruleOpEquality ) )
             {
-            // InternalSignalDSL.g:18313:2: ( ( ruleOpEquality ) )
-            // InternalSignalDSL.g:18314:3: ( ruleOpEquality )
+            // InternalSignalDSL.g:19020:2: ( ( ruleOpEquality ) )
+            // InternalSignalDSL.g:19021:3: ( ruleOpEquality )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18315:3: ( ruleOpEquality )
-            // InternalSignalDSL.g:18316:4: ruleOpEquality
+            // InternalSignalDSL.g:19022:3: ( ruleOpEquality )
+            // InternalSignalDSL.g:19023:4: ruleOpEquality
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementOpEqualityParserRuleCall_1_0_0_1_0_1()); 
@@ -60056,17 +62304,17 @@
 
 
     // $ANTLR start "rule__XEqualityExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18327:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    // InternalSignalDSL.g:19034:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
     public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18331:1: ( ( ruleXRelationalExpression ) )
-            // InternalSignalDSL.g:18332:2: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:19038:1: ( ( ruleXRelationalExpression ) )
+            // InternalSignalDSL.g:19039:2: ( ruleXRelationalExpression )
             {
-            // InternalSignalDSL.g:18332:2: ( ruleXRelationalExpression )
-            // InternalSignalDSL.g:18333:3: ruleXRelationalExpression
+            // InternalSignalDSL.g:19039:2: ( ruleXRelationalExpression )
+            // InternalSignalDSL.g:19040:3: ruleXRelationalExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
@@ -60101,17 +62349,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__TypeAssignment_1_0_1"
-    // InternalSignalDSL.g:18342:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:19049:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18346:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:18347:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19053:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:19054:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:18347:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:18348:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:19054:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19055:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
@@ -60146,23 +62394,23 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1"
-    // InternalSignalDSL.g:18357:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
+    // InternalSignalDSL.g:19064:1: rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 : ( ( ruleOpCompare ) ) ;
     public final void rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18361:1: ( ( ( ruleOpCompare ) ) )
-            // InternalSignalDSL.g:18362:2: ( ( ruleOpCompare ) )
+            // InternalSignalDSL.g:19068:1: ( ( ( ruleOpCompare ) ) )
+            // InternalSignalDSL.g:19069:2: ( ( ruleOpCompare ) )
             {
-            // InternalSignalDSL.g:18362:2: ( ( ruleOpCompare ) )
-            // InternalSignalDSL.g:18363:3: ( ruleOpCompare )
+            // InternalSignalDSL.g:19069:2: ( ( ruleOpCompare ) )
+            // InternalSignalDSL.g:19070:3: ( ruleOpCompare )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18364:3: ( ruleOpCompare )
-            // InternalSignalDSL.g:18365:4: ruleOpCompare
+            // InternalSignalDSL.g:19071:3: ( ruleOpCompare )
+            // InternalSignalDSL.g:19072:4: ruleOpCompare
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementOpCompareParserRuleCall_1_1_0_0_1_0_1()); 
@@ -60203,17 +62451,17 @@
 
 
     // $ANTLR start "rule__XRelationalExpression__RightOperandAssignment_1_1_1"
-    // InternalSignalDSL.g:18376:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    // InternalSignalDSL.g:19083:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
     public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18380:1: ( ( ruleXOtherOperatorExpression ) )
-            // InternalSignalDSL.g:18381:2: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:19087:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalSignalDSL.g:19088:2: ( ruleXOtherOperatorExpression )
             {
-            // InternalSignalDSL.g:18381:2: ( ruleXOtherOperatorExpression )
-            // InternalSignalDSL.g:18382:3: ruleXOtherOperatorExpression
+            // InternalSignalDSL.g:19088:2: ( ruleXOtherOperatorExpression )
+            // InternalSignalDSL.g:19089:3: ruleXOtherOperatorExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
@@ -60248,23 +62496,23 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18391:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
+    // InternalSignalDSL.g:19098:1: rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpOther ) ) ;
     public final void rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18395:1: ( ( ( ruleOpOther ) ) )
-            // InternalSignalDSL.g:18396:2: ( ( ruleOpOther ) )
+            // InternalSignalDSL.g:19102:1: ( ( ( ruleOpOther ) ) )
+            // InternalSignalDSL.g:19103:2: ( ( ruleOpOther ) )
             {
-            // InternalSignalDSL.g:18396:2: ( ( ruleOpOther ) )
-            // InternalSignalDSL.g:18397:3: ( ruleOpOther )
+            // InternalSignalDSL.g:19103:2: ( ( ruleOpOther ) )
+            // InternalSignalDSL.g:19104:3: ( ruleOpOther )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18398:3: ( ruleOpOther )
-            // InternalSignalDSL.g:18399:4: ruleOpOther
+            // InternalSignalDSL.g:19105:3: ( ruleOpOther )
+            // InternalSignalDSL.g:19106:4: ruleOpOther
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementOpOtherParserRuleCall_1_0_0_1_0_1()); 
@@ -60305,17 +62553,17 @@
 
 
     // $ANTLR start "rule__XOtherOperatorExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18410:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    // InternalSignalDSL.g:19117:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
     public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18414:1: ( ( ruleXAdditiveExpression ) )
-            // InternalSignalDSL.g:18415:2: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:19121:1: ( ( ruleXAdditiveExpression ) )
+            // InternalSignalDSL.g:19122:2: ( ruleXAdditiveExpression )
             {
-            // InternalSignalDSL.g:18415:2: ( ruleXAdditiveExpression )
-            // InternalSignalDSL.g:18416:3: ruleXAdditiveExpression
+            // InternalSignalDSL.g:19122:2: ( ruleXAdditiveExpression )
+            // InternalSignalDSL.g:19123:3: ruleXAdditiveExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
@@ -60350,23 +62598,23 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18425:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
+    // InternalSignalDSL.g:19132:1: rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpAdd ) ) ;
     public final void rule__XAdditiveExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18429:1: ( ( ( ruleOpAdd ) ) )
-            // InternalSignalDSL.g:18430:2: ( ( ruleOpAdd ) )
+            // InternalSignalDSL.g:19136:1: ( ( ( ruleOpAdd ) ) )
+            // InternalSignalDSL.g:19137:2: ( ( ruleOpAdd ) )
             {
-            // InternalSignalDSL.g:18430:2: ( ( ruleOpAdd ) )
-            // InternalSignalDSL.g:18431:3: ( ruleOpAdd )
+            // InternalSignalDSL.g:19137:2: ( ( ruleOpAdd ) )
+            // InternalSignalDSL.g:19138:3: ( ruleOpAdd )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18432:3: ( ruleOpAdd )
-            // InternalSignalDSL.g:18433:4: ruleOpAdd
+            // InternalSignalDSL.g:19139:3: ( ruleOpAdd )
+            // InternalSignalDSL.g:19140:4: ruleOpAdd
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementOpAddParserRuleCall_1_0_0_1_0_1()); 
@@ -60407,17 +62655,17 @@
 
 
     // $ANTLR start "rule__XAdditiveExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18444:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    // InternalSignalDSL.g:19151:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
     public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18448:1: ( ( ruleXMultiplicativeExpression ) )
-            // InternalSignalDSL.g:18449:2: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:19155:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalSignalDSL.g:19156:2: ( ruleXMultiplicativeExpression )
             {
-            // InternalSignalDSL.g:18449:2: ( ruleXMultiplicativeExpression )
-            // InternalSignalDSL.g:18450:3: ruleXMultiplicativeExpression
+            // InternalSignalDSL.g:19156:2: ( ruleXMultiplicativeExpression )
+            // InternalSignalDSL.g:19157:3: ruleXMultiplicativeExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0()); 
@@ -60452,23 +62700,23 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1"
-    // InternalSignalDSL.g:18459:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
+    // InternalSignalDSL.g:19166:1: rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 : ( ( ruleOpMulti ) ) ;
     public final void rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18463:1: ( ( ( ruleOpMulti ) ) )
-            // InternalSignalDSL.g:18464:2: ( ( ruleOpMulti ) )
+            // InternalSignalDSL.g:19170:1: ( ( ( ruleOpMulti ) ) )
+            // InternalSignalDSL.g:19171:2: ( ( ruleOpMulti ) )
             {
-            // InternalSignalDSL.g:18464:2: ( ( ruleOpMulti ) )
-            // InternalSignalDSL.g:18465:3: ( ruleOpMulti )
+            // InternalSignalDSL.g:19171:2: ( ( ruleOpMulti ) )
+            // InternalSignalDSL.g:19172:3: ( ruleOpMulti )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
             }
-            // InternalSignalDSL.g:18466:3: ( ruleOpMulti )
-            // InternalSignalDSL.g:18467:4: ruleOpMulti
+            // InternalSignalDSL.g:19173:3: ( ruleOpMulti )
+            // InternalSignalDSL.g:19174:4: ruleOpMulti
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementOpMultiParserRuleCall_1_0_0_1_0_1()); 
@@ -60509,17 +62757,17 @@
 
 
     // $ANTLR start "rule__XMultiplicativeExpression__RightOperandAssignment_1_1"
-    // InternalSignalDSL.g:18478:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    // InternalSignalDSL.g:19185:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
     public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18482:1: ( ( ruleXUnaryOperation ) )
-            // InternalSignalDSL.g:18483:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19189:1: ( ( ruleXUnaryOperation ) )
+            // InternalSignalDSL.g:19190:2: ( ruleXUnaryOperation )
             {
-            // InternalSignalDSL.g:18483:2: ( ruleXUnaryOperation )
-            // InternalSignalDSL.g:18484:3: ruleXUnaryOperation
+            // InternalSignalDSL.g:19190:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19191:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
@@ -60554,23 +62802,23 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__FeatureAssignment_0_1"
-    // InternalSignalDSL.g:18493:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    // InternalSignalDSL.g:19200:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
     public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18497:1: ( ( ( ruleOpUnary ) ) )
-            // InternalSignalDSL.g:18498:2: ( ( ruleOpUnary ) )
+            // InternalSignalDSL.g:19204:1: ( ( ( ruleOpUnary ) ) )
+            // InternalSignalDSL.g:19205:2: ( ( ruleOpUnary ) )
             {
-            // InternalSignalDSL.g:18498:2: ( ( ruleOpUnary ) )
-            // InternalSignalDSL.g:18499:3: ( ruleOpUnary )
+            // InternalSignalDSL.g:19205:2: ( ( ruleOpUnary ) )
+            // InternalSignalDSL.g:19206:3: ( ruleOpUnary )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
             }
-            // InternalSignalDSL.g:18500:3: ( ruleOpUnary )
-            // InternalSignalDSL.g:18501:4: ruleOpUnary
+            // InternalSignalDSL.g:19207:3: ( ruleOpUnary )
+            // InternalSignalDSL.g:19208:4: ruleOpUnary
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementOpUnaryParserRuleCall_0_1_0_1()); 
@@ -60611,17 +62859,17 @@
 
 
     // $ANTLR start "rule__XUnaryOperation__OperandAssignment_0_2"
-    // InternalSignalDSL.g:18512:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    // InternalSignalDSL.g:19219:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
     public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18516:1: ( ( ruleXUnaryOperation ) )
-            // InternalSignalDSL.g:18517:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19223:1: ( ( ruleXUnaryOperation ) )
+            // InternalSignalDSL.g:19224:2: ( ruleXUnaryOperation )
             {
-            // InternalSignalDSL.g:18517:2: ( ruleXUnaryOperation )
-            // InternalSignalDSL.g:18518:3: ruleXUnaryOperation
+            // InternalSignalDSL.g:19224:2: ( ruleXUnaryOperation )
+            // InternalSignalDSL.g:19225:3: ruleXUnaryOperation
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
@@ -60656,17 +62904,17 @@
 
 
     // $ANTLR start "rule__XCastedExpression__TypeAssignment_1_1"
-    // InternalSignalDSL.g:18527:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:19234:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18531:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:18532:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19238:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:19239:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:18532:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:18533:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:19239:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19240:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
@@ -60701,23 +62949,23 @@
 
 
     // $ANTLR start "rule__XPostfixOperation__FeatureAssignment_1_0_1"
-    // InternalSignalDSL.g:18542:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    // InternalSignalDSL.g:19249:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
     public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18546:1: ( ( ( ruleOpPostfix ) ) )
-            // InternalSignalDSL.g:18547:2: ( ( ruleOpPostfix ) )
+            // InternalSignalDSL.g:19253:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalSignalDSL.g:19254:2: ( ( ruleOpPostfix ) )
             {
-            // InternalSignalDSL.g:18547:2: ( ( ruleOpPostfix ) )
-            // InternalSignalDSL.g:18548:3: ( ruleOpPostfix )
+            // InternalSignalDSL.g:19254:2: ( ( ruleOpPostfix ) )
+            // InternalSignalDSL.g:19255:3: ( ruleOpPostfix )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
             }
-            // InternalSignalDSL.g:18549:3: ( ruleOpPostfix )
-            // InternalSignalDSL.g:18550:4: ruleOpPostfix
+            // InternalSignalDSL.g:19256:3: ( ruleOpPostfix )
+            // InternalSignalDSL.g:19257:4: ruleOpPostfix
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementOpPostfixParserRuleCall_1_0_1_0_1()); 
@@ -60758,28 +63006,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1"
-    // InternalSignalDSL.g:18561:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
+    // InternalSignalDSL.g:19268:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 : ( ( '::' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18565:1: ( ( ( '::' ) ) )
-            // InternalSignalDSL.g:18566:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19272:1: ( ( ( '::' ) ) )
+            // InternalSignalDSL.g:19273:2: ( ( '::' ) )
             {
-            // InternalSignalDSL.g:18566:2: ( ( '::' ) )
-            // InternalSignalDSL.g:18567:3: ( '::' )
+            // InternalSignalDSL.g:19273:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19274:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            // InternalSignalDSL.g:18568:3: ( '::' )
-            // InternalSignalDSL.g:18569:4: '::'
+            // InternalSignalDSL.g:19275:3: ( '::' )
+            // InternalSignalDSL.g:19276:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,108,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
             }
@@ -60811,23 +63059,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2"
-    // InternalSignalDSL.g:18580:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
+    // InternalSignalDSL.g:19287:1: rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 : ( ( ruleFeatureCallID ) ) ;
     public final void rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18584:1: ( ( ( ruleFeatureCallID ) ) )
-            // InternalSignalDSL.g:18585:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:19291:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalSignalDSL.g:19292:2: ( ( ruleFeatureCallID ) )
             {
-            // InternalSignalDSL.g:18585:2: ( ( ruleFeatureCallID ) )
-            // InternalSignalDSL.g:18586:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:19292:2: ( ( ruleFeatureCallID ) )
+            // InternalSignalDSL.g:19293:3: ( ruleFeatureCallID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
             }
-            // InternalSignalDSL.g:18587:3: ( ruleFeatureCallID )
-            // InternalSignalDSL.g:18588:4: ruleFeatureCallID
+            // InternalSignalDSL.g:19294:3: ( ruleFeatureCallID )
+            // InternalSignalDSL.g:19295:4: ruleFeatureCallID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementFeatureCallIDParserRuleCall_1_0_0_0_2_0_1()); 
@@ -60868,17 +63116,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ValueAssignment_1_0_1"
-    // InternalSignalDSL.g:18599:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    // InternalSignalDSL.g:19306:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
     public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18603:1: ( ( ruleXAssignment ) )
-            // InternalSignalDSL.g:18604:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19310:1: ( ( ruleXAssignment ) )
+            // InternalSignalDSL.g:19311:2: ( ruleXAssignment )
             {
-            // InternalSignalDSL.g:18604:2: ( ruleXAssignment )
-            // InternalSignalDSL.g:18605:3: ruleXAssignment
+            // InternalSignalDSL.g:19311:2: ( ruleXAssignment )
+            // InternalSignalDSL.g:19312:3: ruleXAssignment
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0()); 
@@ -60913,28 +63161,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1"
-    // InternalSignalDSL.g:18614:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
+    // InternalSignalDSL.g:19321:1: rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 : ( ( '?.' ) ) ;
     public final void rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18618:1: ( ( ( '?.' ) ) )
-            // InternalSignalDSL.g:18619:2: ( ( '?.' ) )
+            // InternalSignalDSL.g:19325:1: ( ( ( '?.' ) ) )
+            // InternalSignalDSL.g:19326:2: ( ( '?.' ) )
             {
-            // InternalSignalDSL.g:18619:2: ( ( '?.' ) )
-            // InternalSignalDSL.g:18620:3: ( '?.' )
+            // InternalSignalDSL.g:19326:2: ( ( '?.' ) )
+            // InternalSignalDSL.g:19327:3: ( '?.' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            // InternalSignalDSL.g:18621:3: ( '?.' )
-            // InternalSignalDSL.g:18622:4: '?.'
+            // InternalSignalDSL.g:19328:3: ( '?.' )
+            // InternalSignalDSL.g:19329:4: '?.'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
-            match(input,100,FOLLOW_2); if (state.failed) return ;
+            match(input,109,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
             }
@@ -60966,28 +63214,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2"
-    // InternalSignalDSL.g:18633:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
+    // InternalSignalDSL.g:19340:1: rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 : ( ( '::' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18637:1: ( ( ( '::' ) ) )
-            // InternalSignalDSL.g:18638:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19344:1: ( ( ( '::' ) ) )
+            // InternalSignalDSL.g:19345:2: ( ( '::' ) )
             {
-            // InternalSignalDSL.g:18638:2: ( ( '::' ) )
-            // InternalSignalDSL.g:18639:3: ( '::' )
+            // InternalSignalDSL.g:19345:2: ( ( '::' ) )
+            // InternalSignalDSL.g:19346:3: ( '::' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            // InternalSignalDSL.g:18640:3: ( '::' )
-            // InternalSignalDSL.g:18641:4: '::'
+            // InternalSignalDSL.g:19347:3: ( '::' )
+            // InternalSignalDSL.g:19348:4: '::'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
-            match(input,99,FOLLOW_2); if (state.failed) return ;
+            match(input,108,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
             }
@@ -61019,17 +63267,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1"
-    // InternalSignalDSL.g:18652:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:19359:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18656:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:18657:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19363:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:19364:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:18657:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:18658:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:19364:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19365:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0()); 
@@ -61064,17 +63312,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1"
-    // InternalSignalDSL.g:18667:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:19374:1: rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18671:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:18672:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19378:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:19379:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:18672:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:18673:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:19379:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:19380:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0()); 
@@ -61109,23 +63357,23 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__FeatureAssignment_1_1_2"
-    // InternalSignalDSL.g:18682:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalSignalDSL.g:19389:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18686:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalSignalDSL.g:18687:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:19393:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalSignalDSL.g:19394:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalSignalDSL.g:18687:2: ( ( ruleIdOrSuper ) )
-            // InternalSignalDSL.g:18688:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:19394:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:19395:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
             }
-            // InternalSignalDSL.g:18689:3: ( ruleIdOrSuper )
-            // InternalSignalDSL.g:18690:4: ruleIdOrSuper
+            // InternalSignalDSL.g:19396:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:19397:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_1_1_2_0_1()); 
@@ -61166,28 +63414,28 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0"
-    // InternalSignalDSL.g:18701:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:19408:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
     public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18705:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:18706:2: ( ( '(' ) )
+            // InternalSignalDSL.g:19412:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:19413:2: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:18706:2: ( ( '(' ) )
-            // InternalSignalDSL.g:18707:3: ( '(' )
+            // InternalSignalDSL.g:19413:2: ( ( '(' ) )
+            // InternalSignalDSL.g:19414:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            // InternalSignalDSL.g:18708:3: ( '(' )
-            // InternalSignalDSL.g:18709:4: '('
+            // InternalSignalDSL.g:19415:3: ( '(' )
+            // InternalSignalDSL.g:19416:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
             }
@@ -61219,17 +63467,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0"
-    // InternalSignalDSL.g:18720:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalSignalDSL.g:19427:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18724:1: ( ( ruleXShortClosure ) )
-            // InternalSignalDSL.g:18725:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:19431:1: ( ( ruleXShortClosure ) )
+            // InternalSignalDSL.g:19432:2: ( ruleXShortClosure )
             {
-            // InternalSignalDSL.g:18725:2: ( ruleXShortClosure )
-            // InternalSignalDSL.g:18726:3: ruleXShortClosure
+            // InternalSignalDSL.g:19432:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:19433:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0()); 
@@ -61264,17 +63512,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0"
-    // InternalSignalDSL.g:18735:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19442:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18739:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18740:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19446:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19447:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18740:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18741:3: ruleXExpression
+            // InternalSignalDSL.g:19447:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19448:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0()); 
@@ -61309,17 +63557,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1"
-    // InternalSignalDSL.g:18750:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19457:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18754:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18755:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19461:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19462:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18755:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18756:3: ruleXExpression
+            // InternalSignalDSL.g:19462:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19463:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0()); 
@@ -61354,17 +63602,17 @@
 
 
     // $ANTLR start "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4"
-    // InternalSignalDSL.g:18765:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    // InternalSignalDSL.g:19472:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
     public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18769:1: ( ( ruleXClosure ) )
-            // InternalSignalDSL.g:18770:2: ( ruleXClosure )
+            // InternalSignalDSL.g:19476:1: ( ( ruleXClosure ) )
+            // InternalSignalDSL.g:19477:2: ( ruleXClosure )
             {
-            // InternalSignalDSL.g:18770:2: ( ruleXClosure )
-            // InternalSignalDSL.g:18771:3: ruleXClosure
+            // InternalSignalDSL.g:19477:2: ( ruleXClosure )
+            // InternalSignalDSL.g:19478:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0()); 
@@ -61399,17 +63647,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_0"
-    // InternalSignalDSL.g:18780:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19487:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18784:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18785:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19491:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19492:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18785:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18786:3: ruleXExpression
+            // InternalSignalDSL.g:19492:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19493:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -61444,17 +63692,17 @@
 
 
     // $ANTLR start "rule__XSetLiteral__ElementsAssignment_3_1_1"
-    // InternalSignalDSL.g:18795:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19502:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18799:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18800:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19506:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19507:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18800:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18801:3: ruleXExpression
+            // InternalSignalDSL.g:19507:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19508:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -61489,17 +63737,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_0"
-    // InternalSignalDSL.g:18810:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19517:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18814:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18815:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19521:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19522:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18815:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18816:3: ruleXExpression
+            // InternalSignalDSL.g:19522:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19523:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0()); 
@@ -61534,17 +63782,17 @@
 
 
     // $ANTLR start "rule__XListLiteral__ElementsAssignment_3_1_1"
-    // InternalSignalDSL.g:18825:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19532:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18829:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18830:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19536:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19537:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18830:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18831:3: ruleXExpression
+            // InternalSignalDSL.g:19537:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19538:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0()); 
@@ -61579,17 +63827,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0"
-    // InternalSignalDSL.g:18840:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19547:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18844:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:18845:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19551:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19552:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:18845:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:18846:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19552:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19553:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0()); 
@@ -61624,17 +63872,17 @@
 
 
     // $ANTLR start "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1"
-    // InternalSignalDSL.g:18855:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19562:1: rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18859:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:18860:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19566:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19567:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:18860:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:18861:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19567:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19568:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0()); 
@@ -61669,28 +63917,28 @@
 
 
     // $ANTLR start "rule__XClosure__ExplicitSyntaxAssignment_1_0_1"
-    // InternalSignalDSL.g:18870:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    // InternalSignalDSL.g:19577:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
     public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18874:1: ( ( ( '|' ) ) )
-            // InternalSignalDSL.g:18875:2: ( ( '|' ) )
+            // InternalSignalDSL.g:19581:1: ( ( ( '|' ) ) )
+            // InternalSignalDSL.g:19582:2: ( ( '|' ) )
             {
-            // InternalSignalDSL.g:18875:2: ( ( '|' ) )
-            // InternalSignalDSL.g:18876:3: ( '|' )
+            // InternalSignalDSL.g:19582:2: ( ( '|' ) )
+            // InternalSignalDSL.g:19583:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            // InternalSignalDSL.g:18877:3: ( '|' )
-            // InternalSignalDSL.g:18878:4: '|'
+            // InternalSignalDSL.g:19584:3: ( '|' )
+            // InternalSignalDSL.g:19585:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,110,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
             }
@@ -61722,17 +63970,17 @@
 
 
     // $ANTLR start "rule__XClosure__ExpressionAssignment_2"
-    // InternalSignalDSL.g:18889:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    // InternalSignalDSL.g:19596:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
     public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18893:1: ( ( ruleXExpressionInClosure ) )
-            // InternalSignalDSL.g:18894:2: ( ruleXExpressionInClosure )
+            // InternalSignalDSL.g:19600:1: ( ( ruleXExpressionInClosure ) )
+            // InternalSignalDSL.g:19601:2: ( ruleXExpressionInClosure )
             {
-            // InternalSignalDSL.g:18894:2: ( ruleXExpressionInClosure )
-            // InternalSignalDSL.g:18895:3: ruleXExpressionInClosure
+            // InternalSignalDSL.g:19601:2: ( ruleXExpressionInClosure )
+            // InternalSignalDSL.g:19602:3: ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0()); 
@@ -61767,17 +64015,17 @@
 
 
     // $ANTLR start "rule__XExpressionInClosure__ExpressionsAssignment_1_0"
-    // InternalSignalDSL.g:18904:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:19611:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18908:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:18909:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:19615:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:19616:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:18909:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:18910:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:19616:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:19617:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0()); 
@@ -61812,17 +64060,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0"
-    // InternalSignalDSL.g:18919:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19626:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18923:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:18924:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19630:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19631:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:18924:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:18925:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19631:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19632:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0()); 
@@ -61857,17 +64105,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1"
-    // InternalSignalDSL.g:18934:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19641:1: rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18938:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:18939:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19645:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19646:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:18939:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:18940:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19646:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19647:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0()); 
@@ -61902,28 +64150,28 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2"
-    // InternalSignalDSL.g:18949:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    // InternalSignalDSL.g:19656:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
     public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18953:1: ( ( ( '|' ) ) )
-            // InternalSignalDSL.g:18954:2: ( ( '|' ) )
+            // InternalSignalDSL.g:19660:1: ( ( ( '|' ) ) )
+            // InternalSignalDSL.g:19661:2: ( ( '|' ) )
             {
-            // InternalSignalDSL.g:18954:2: ( ( '|' ) )
-            // InternalSignalDSL.g:18955:3: ( '|' )
+            // InternalSignalDSL.g:19661:2: ( ( '|' ) )
+            // InternalSignalDSL.g:19662:3: ( '|' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            // InternalSignalDSL.g:18956:3: ( '|' )
-            // InternalSignalDSL.g:18957:4: '|'
+            // InternalSignalDSL.g:19663:3: ( '|' )
+            // InternalSignalDSL.g:19664:4: '|'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
-            match(input,101,FOLLOW_2); if (state.failed) return ;
+            match(input,110,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
             }
@@ -61955,17 +64203,17 @@
 
 
     // $ANTLR start "rule__XShortClosure__ExpressionAssignment_1"
-    // InternalSignalDSL.g:18968:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19675:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18972:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18973:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19679:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19680:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18973:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18974:3: ruleXExpression
+            // InternalSignalDSL.g:19680:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19681:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXShortClosureAccess().getExpressionXExpressionParserRuleCall_1_0()); 
@@ -62000,17 +64248,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__IfAssignment_3"
-    // InternalSignalDSL.g:18983:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19690:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:18987:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:18988:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19694:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19695:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:18988:2: ( ruleXExpression )
-            // InternalSignalDSL.g:18989:3: ruleXExpression
+            // InternalSignalDSL.g:19695:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19696:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0()); 
@@ -62045,17 +64293,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ThenAssignment_5"
-    // InternalSignalDSL.g:18998:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19705:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19002:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19003:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19709:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19710:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19003:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19004:3: ruleXExpression
+            // InternalSignalDSL.g:19710:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19711:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0()); 
@@ -62090,17 +64338,17 @@
 
 
     // $ANTLR start "rule__XIfExpression__ElseAssignment_6_1"
-    // InternalSignalDSL.g:19013:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19720:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
     public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19017:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19018:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19724:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19725:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19018:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19019:3: ruleXExpression
+            // InternalSignalDSL.g:19725:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19726:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXIfExpressionAccess().getElseXExpressionParserRuleCall_6_1_0()); 
@@ -62135,17 +64383,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1"
-    // InternalSignalDSL.g:19028:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19735:1: rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 : ( ruleJvmFormalParameter ) ;
     public final void rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19032:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19033:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19739:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19740:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19033:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19034:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19740:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19741:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0()); 
@@ -62180,17 +64428,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_0_1"
-    // InternalSignalDSL.g:19043:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19750:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19047:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19048:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19754:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19755:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19048:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19049:3: ruleXExpression
+            // InternalSignalDSL.g:19755:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19756:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0()); 
@@ -62225,17 +64473,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0"
-    // InternalSignalDSL.g:19058:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19765:1: rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 : ( ruleJvmFormalParameter ) ;
     public final void rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19062:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19063:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19769:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19770:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19063:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19064:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19770:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19771:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0()); 
@@ -62270,17 +64518,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__SwitchAssignment_2_1_1"
-    // InternalSignalDSL.g:19073:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19780:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19077:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19078:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19784:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19785:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19078:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19079:3: ruleXExpression
+            // InternalSignalDSL.g:19785:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19786:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0()); 
@@ -62315,17 +64563,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__CasesAssignment_4"
-    // InternalSignalDSL.g:19088:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    // InternalSignalDSL.g:19795:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
     public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19092:1: ( ( ruleXCasePart ) )
-            // InternalSignalDSL.g:19093:2: ( ruleXCasePart )
+            // InternalSignalDSL.g:19799:1: ( ( ruleXCasePart ) )
+            // InternalSignalDSL.g:19800:2: ( ruleXCasePart )
             {
-            // InternalSignalDSL.g:19093:2: ( ruleXCasePart )
-            // InternalSignalDSL.g:19094:3: ruleXCasePart
+            // InternalSignalDSL.g:19800:2: ( ruleXCasePart )
+            // InternalSignalDSL.g:19801:3: ruleXCasePart
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0()); 
@@ -62360,17 +64608,17 @@
 
 
     // $ANTLR start "rule__XSwitchExpression__DefaultAssignment_5_2"
-    // InternalSignalDSL.g:19103:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19810:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
     public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19107:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19108:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19814:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19815:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19108:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19109:3: ruleXExpression
+            // InternalSignalDSL.g:19815:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19816:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0()); 
@@ -62405,17 +64653,17 @@
 
 
     // $ANTLR start "rule__XCasePart__TypeGuardAssignment_1"
-    // InternalSignalDSL.g:19118:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:19825:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19122:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19123:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19829:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:19830:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19123:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19124:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:19830:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:19831:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0()); 
@@ -62450,17 +64698,17 @@
 
 
     // $ANTLR start "rule__XCasePart__CaseAssignment_2_1"
-    // InternalSignalDSL.g:19133:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19840:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19137:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19138:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19844:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19845:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19138:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19139:3: ruleXExpression
+            // InternalSignalDSL.g:19845:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19846:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0()); 
@@ -62495,17 +64743,17 @@
 
 
     // $ANTLR start "rule__XCasePart__ThenAssignment_3_0_1"
-    // InternalSignalDSL.g:19148:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19855:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
     public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19152:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19153:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19859:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19860:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19153:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19154:3: ruleXExpression
+            // InternalSignalDSL.g:19860:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19861:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getThenXExpressionParserRuleCall_3_0_1_0()); 
@@ -62540,28 +64788,28 @@
 
 
     // $ANTLR start "rule__XCasePart__FallThroughAssignment_3_1"
-    // InternalSignalDSL.g:19163:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    // InternalSignalDSL.g:19870:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
     public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19167:1: ( ( ( ',' ) ) )
-            // InternalSignalDSL.g:19168:2: ( ( ',' ) )
+            // InternalSignalDSL.g:19874:1: ( ( ( ',' ) ) )
+            // InternalSignalDSL.g:19875:2: ( ( ',' ) )
             {
-            // InternalSignalDSL.g:19168:2: ( ( ',' ) )
-            // InternalSignalDSL.g:19169:3: ( ',' )
+            // InternalSignalDSL.g:19875:2: ( ( ',' ) )
+            // InternalSignalDSL.g:19876:3: ( ',' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            // InternalSignalDSL.g:19170:3: ( ',' )
-            // InternalSignalDSL.g:19171:4: ','
+            // InternalSignalDSL.g:19877:3: ( ',' )
+            // InternalSignalDSL.g:19878:4: ','
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
-            match(input,73,FOLLOW_2); if (state.failed) return ;
+            match(input,82,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
             }
@@ -62593,17 +64841,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3"
-    // InternalSignalDSL.g:19182:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    // InternalSignalDSL.g:19889:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
     public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19186:1: ( ( ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:19187:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19893:1: ( ( ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:19894:2: ( ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19187:2: ( ruleJvmFormalParameter )
-            // InternalSignalDSL.g:19188:3: ruleJvmFormalParameter
+            // InternalSignalDSL.g:19894:2: ( ruleJvmFormalParameter )
+            // InternalSignalDSL.g:19895:3: ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0()); 
@@ -62638,17 +64886,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__ForExpressionAssignment_1"
-    // InternalSignalDSL.g:19197:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19904:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19201:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19202:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19908:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19909:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19202:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19203:3: ruleXExpression
+            // InternalSignalDSL.g:19909:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19910:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0()); 
@@ -62683,17 +64931,17 @@
 
 
     // $ANTLR start "rule__XForLoopExpression__EachExpressionAssignment_3"
-    // InternalSignalDSL.g:19212:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19919:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19216:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19217:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19923:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19924:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19217:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19218:3: ruleXExpression
+            // InternalSignalDSL.g:19924:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19925:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_3_0()); 
@@ -62728,17 +64976,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0"
-    // InternalSignalDSL.g:19227:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:19934:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19231:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:19232:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:19938:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:19939:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:19232:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:19233:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:19939:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:19940:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0()); 
@@ -62773,17 +65021,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1"
-    // InternalSignalDSL.g:19242:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:19949:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19246:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:19247:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:19953:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:19954:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:19247:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:19248:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:19954:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:19955:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0()); 
@@ -62818,17 +65066,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__ExpressionAssignment_5"
-    // InternalSignalDSL.g:19257:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19964:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19261:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19262:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19968:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19969:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19262:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19263:3: ruleXExpression
+            // InternalSignalDSL.g:19969:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19970:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0()); 
@@ -62863,17 +65111,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0"
-    // InternalSignalDSL.g:19272:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19979:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19276:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19277:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19983:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19984:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19277:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19278:3: ruleXExpression
+            // InternalSignalDSL.g:19984:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19985:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0()); 
@@ -62908,17 +65156,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1"
-    // InternalSignalDSL.g:19287:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:19994:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19291:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19292:2: ( ruleXExpression )
+            // InternalSignalDSL.g:19998:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:19999:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19292:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19293:3: ruleXExpression
+            // InternalSignalDSL.g:19999:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20000:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0()); 
@@ -62953,17 +65201,17 @@
 
 
     // $ANTLR start "rule__XBasicForLoopExpression__EachExpressionAssignment_9"
-    // InternalSignalDSL.g:19302:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20009:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
     public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19306:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19307:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20013:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20014:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19307:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19308:3: ruleXExpression
+            // InternalSignalDSL.g:20014:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20015:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionXExpressionParserRuleCall_9_0()); 
@@ -62998,17 +65246,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__PredicateAssignment_3"
-    // InternalSignalDSL.g:19317:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20024:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19321:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19322:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20028:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20029:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19322:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19323:3: ruleXExpression
+            // InternalSignalDSL.g:20029:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20030:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0()); 
@@ -63043,17 +65291,17 @@
 
 
     // $ANTLR start "rule__XWhileExpression__BodyAssignment_5"
-    // InternalSignalDSL.g:19332:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20039:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19336:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19337:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20043:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20044:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19337:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19338:3: ruleXExpression
+            // InternalSignalDSL.g:20044:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20045:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXWhileExpressionAccess().getBodyXExpressionParserRuleCall_5_0()); 
@@ -63088,17 +65336,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__BodyAssignment_2"
-    // InternalSignalDSL.g:19347:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20054:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19351:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19352:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20058:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20059:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19352:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19353:3: ruleXExpression
+            // InternalSignalDSL.g:20059:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20060:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0()); 
@@ -63133,17 +65381,17 @@
 
 
     // $ANTLR start "rule__XDoWhileExpression__PredicateAssignment_5"
-    // InternalSignalDSL.g:19362:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20069:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
     public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19366:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19367:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20073:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20074:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19367:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19368:3: ruleXExpression
+            // InternalSignalDSL.g:20074:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20075:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0()); 
@@ -63178,17 +65426,17 @@
 
 
     // $ANTLR start "rule__XBlockExpression__ExpressionsAssignment_2_0"
-    // InternalSignalDSL.g:19377:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    // InternalSignalDSL.g:20084:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
     public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19381:1: ( ( ruleXExpressionOrVarDeclaration ) )
-            // InternalSignalDSL.g:19382:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20088:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalSignalDSL.g:20089:2: ( ruleXExpressionOrVarDeclaration )
             {
-            // InternalSignalDSL.g:19382:2: ( ruleXExpressionOrVarDeclaration )
-            // InternalSignalDSL.g:19383:3: ruleXExpressionOrVarDeclaration
+            // InternalSignalDSL.g:20089:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalSignalDSL.g:20090:3: ruleXExpressionOrVarDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0()); 
@@ -63223,28 +65471,28 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__WriteableAssignment_1_0"
-    // InternalSignalDSL.g:19392:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    // InternalSignalDSL.g:20099:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
     public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19396:1: ( ( ( 'var' ) ) )
-            // InternalSignalDSL.g:19397:2: ( ( 'var' ) )
+            // InternalSignalDSL.g:20103:1: ( ( ( 'var' ) ) )
+            // InternalSignalDSL.g:20104:2: ( ( 'var' ) )
             {
-            // InternalSignalDSL.g:19397:2: ( ( 'var' ) )
-            // InternalSignalDSL.g:19398:3: ( 'var' )
+            // InternalSignalDSL.g:20104:2: ( ( 'var' ) )
+            // InternalSignalDSL.g:20105:3: ( 'var' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            // InternalSignalDSL.g:19399:3: ( 'var' )
-            // InternalSignalDSL.g:19400:4: 'var'
+            // InternalSignalDSL.g:20106:3: ( 'var' )
+            // InternalSignalDSL.g:20107:4: 'var'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
-            match(input,102,FOLLOW_2); if (state.failed) return ;
+            match(input,111,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
             }
@@ -63276,17 +65524,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__TypeAssignment_2_0_0_0"
-    // InternalSignalDSL.g:19411:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20118:1: rule__XVariableDeclaration__TypeAssignment_2_0_0_0 : ( ruleJvmTypeReference ) ;
     public final void rule__XVariableDeclaration__TypeAssignment_2_0_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19415:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19416:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20122:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20123:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19416:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19417:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20123:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20124:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getTypeJvmTypeReferenceParserRuleCall_2_0_0_0_0()); 
@@ -63321,17 +65569,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_0_0_1"
-    // InternalSignalDSL.g:19426:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20133:1: rule__XVariableDeclaration__NameAssignment_2_0_0_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_0_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19430:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:19431:2: ( ruleValidID )
+            // InternalSignalDSL.g:20137:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20138:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:19431:2: ( ruleValidID )
-            // InternalSignalDSL.g:19432:3: ruleValidID
+            // InternalSignalDSL.g:20138:2: ( ruleValidID )
+            // InternalSignalDSL.g:20139:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0()); 
@@ -63366,17 +65614,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__NameAssignment_2_1"
-    // InternalSignalDSL.g:19441:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20148:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
     public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19445:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:19446:2: ( ruleValidID )
+            // InternalSignalDSL.g:20152:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20153:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:19446:2: ( ruleValidID )
-            // InternalSignalDSL.g:19447:3: ruleValidID
+            // InternalSignalDSL.g:20153:2: ( ruleValidID )
+            // InternalSignalDSL.g:20154:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0()); 
@@ -63411,17 +65659,17 @@
 
 
     // $ANTLR start "rule__XVariableDeclaration__RightAssignment_3_1"
-    // InternalSignalDSL.g:19456:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20163:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
     public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19460:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19461:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20167:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20168:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19461:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19462:3: ruleXExpression
+            // InternalSignalDSL.g:20168:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20169:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXVariableDeclarationAccess().getRightXExpressionParserRuleCall_3_1_0()); 
@@ -63456,17 +65704,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalSignalDSL.g:19471:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20178:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19475:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19476:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20182:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20183:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19476:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19477:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20183:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20184:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -63501,17 +65749,17 @@
 
 
     // $ANTLR start "rule__JvmFormalParameter__NameAssignment_1"
-    // InternalSignalDSL.g:19486:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20193:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19490:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:19491:2: ( ruleValidID )
+            // InternalSignalDSL.g:20197:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20198:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:19491:2: ( ruleValidID )
-            // InternalSignalDSL.g:19492:3: ruleValidID
+            // InternalSignalDSL.g:20198:2: ( ruleValidID )
+            // InternalSignalDSL.g:20199:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -63546,17 +65794,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__ParameterTypeAssignment_0"
-    // InternalSignalDSL.g:19501:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20208:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
     public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19505:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:19506:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20212:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20213:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:19506:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:19507:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20213:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20214:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeJvmTypeReferenceParserRuleCall_0_0()); 
@@ -63591,17 +65839,17 @@
 
 
     // $ANTLR start "rule__FullJvmFormalParameter__NameAssignment_1"
-    // InternalSignalDSL.g:19516:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    // InternalSignalDSL.g:20223:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
     public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19520:1: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:19521:2: ( ruleValidID )
+            // InternalSignalDSL.g:20227:1: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20228:2: ( ruleValidID )
             {
-            // InternalSignalDSL.g:19521:2: ( ruleValidID )
-            // InternalSignalDSL.g:19522:3: ruleValidID
+            // InternalSignalDSL.g:20228:2: ( ruleValidID )
+            // InternalSignalDSL.g:20229:3: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getFullJvmFormalParameterAccess().getNameValidIDParserRuleCall_1_0()); 
@@ -63636,17 +65884,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_1"
-    // InternalSignalDSL.g:19531:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20238:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19535:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:19536:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20242:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20243:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:19536:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:19537:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20243:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20244:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -63681,17 +65929,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1"
-    // InternalSignalDSL.g:19546:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20253:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19550:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:19551:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20257:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20258:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:19551:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:19552:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20258:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20259:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -63726,23 +65974,23 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureAssignment_2"
-    // InternalSignalDSL.g:19561:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    // InternalSignalDSL.g:20268:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
     public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19565:1: ( ( ( ruleIdOrSuper ) ) )
-            // InternalSignalDSL.g:19566:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:20272:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalSignalDSL.g:20273:2: ( ( ruleIdOrSuper ) )
             {
-            // InternalSignalDSL.g:19566:2: ( ( ruleIdOrSuper ) )
-            // InternalSignalDSL.g:19567:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:20273:2: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:20274:3: ( ruleIdOrSuper )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
             }
-            // InternalSignalDSL.g:19568:3: ( ruleIdOrSuper )
-            // InternalSignalDSL.g:19569:4: ruleIdOrSuper
+            // InternalSignalDSL.g:20275:3: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:20276:4: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementIdOrSuperParserRuleCall_2_0_1()); 
@@ -63783,28 +66031,28 @@
 
 
     // $ANTLR start "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0"
-    // InternalSignalDSL.g:19580:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:20287:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
     public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19584:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:19585:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20291:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:20292:2: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:19585:2: ( ( '(' ) )
-            // InternalSignalDSL.g:19586:3: ( '(' )
+            // InternalSignalDSL.g:20292:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20293:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            // InternalSignalDSL.g:19587:3: ( '(' )
-            // InternalSignalDSL.g:19588:4: '('
+            // InternalSignalDSL.g:20294:3: ( '(' )
+            // InternalSignalDSL.g:20295:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
             }
@@ -63836,17 +66084,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0"
-    // InternalSignalDSL.g:19599:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    // InternalSignalDSL.g:20306:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19603:1: ( ( ruleXShortClosure ) )
-            // InternalSignalDSL.g:19604:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20310:1: ( ( ruleXShortClosure ) )
+            // InternalSignalDSL.g:20311:2: ( ruleXShortClosure )
             {
-            // InternalSignalDSL.g:19604:2: ( ruleXShortClosure )
-            // InternalSignalDSL.g:19605:3: ruleXShortClosure
+            // InternalSignalDSL.g:20311:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20312:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0()); 
@@ -63881,17 +66129,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0"
-    // InternalSignalDSL.g:19614:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20321:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19618:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19619:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20325:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20326:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19619:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19620:3: ruleXExpression
+            // InternalSignalDSL.g:20326:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20327:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0()); 
@@ -63926,17 +66174,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1"
-    // InternalSignalDSL.g:19629:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20336:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19633:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19634:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20340:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20341:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19634:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19635:3: ruleXExpression
+            // InternalSignalDSL.g:20341:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20342:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0()); 
@@ -63971,17 +66219,17 @@
 
 
     // $ANTLR start "rule__XFeatureCall__FeatureCallArgumentsAssignment_4"
-    // InternalSignalDSL.g:19644:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    // InternalSignalDSL.g:20351:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
     public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19648:1: ( ( ruleXClosure ) )
-            // InternalSignalDSL.g:19649:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20355:1: ( ( ruleXClosure ) )
+            // InternalSignalDSL.g:20356:2: ( ruleXClosure )
             {
-            // InternalSignalDSL.g:19649:2: ( ruleXClosure )
-            // InternalSignalDSL.g:19650:3: ruleXClosure
+            // InternalSignalDSL.g:20356:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20357:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXClosureParserRuleCall_4_0()); 
@@ -64016,23 +66264,23 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ConstructorAssignment_2"
-    // InternalSignalDSL.g:19659:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:20366:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19663:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:19664:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20370:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:20371:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:19664:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:19665:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20371:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20372:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
             }
-            // InternalSignalDSL.g:19666:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:19667:4: ruleQualifiedName
+            // InternalSignalDSL.g:20373:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20374:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorQualifiedNameParserRuleCall_2_0_1()); 
@@ -64073,17 +66321,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_1"
-    // InternalSignalDSL.g:19678:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20385:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19682:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:19683:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20389:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20390:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:19683:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:19684:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20390:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20391:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0()); 
@@ -64118,17 +66366,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1"
-    // InternalSignalDSL.g:19693:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20400:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19697:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:19698:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20404:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20405:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:19698:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:19699:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20405:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20406:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0()); 
@@ -64163,28 +66411,28 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0"
-    // InternalSignalDSL.g:19708:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    // InternalSignalDSL.g:20415:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
     public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19712:1: ( ( ( '(' ) ) )
-            // InternalSignalDSL.g:19713:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20419:1: ( ( ( '(' ) ) )
+            // InternalSignalDSL.g:20420:2: ( ( '(' ) )
             {
-            // InternalSignalDSL.g:19713:2: ( ( '(' ) )
-            // InternalSignalDSL.g:19714:3: ( '(' )
+            // InternalSignalDSL.g:20420:2: ( ( '(' ) )
+            // InternalSignalDSL.g:20421:3: ( '(' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            // InternalSignalDSL.g:19715:3: ( '(' )
-            // InternalSignalDSL.g:19716:4: '('
+            // InternalSignalDSL.g:20422:3: ( '(' )
+            // InternalSignalDSL.g:20423:4: '('
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
-            match(input,71,FOLLOW_2); if (state.failed) return ;
+            match(input,80,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
             }
@@ -64216,17 +66464,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_0"
-    // InternalSignalDSL.g:19727:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    // InternalSignalDSL.g:20434:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19731:1: ( ( ruleXShortClosure ) )
-            // InternalSignalDSL.g:19732:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20438:1: ( ( ruleXShortClosure ) )
+            // InternalSignalDSL.g:20439:2: ( ruleXShortClosure )
             {
-            // InternalSignalDSL.g:19732:2: ( ruleXShortClosure )
-            // InternalSignalDSL.g:19733:3: ruleXShortClosure
+            // InternalSignalDSL.g:20439:2: ( ruleXShortClosure )
+            // InternalSignalDSL.g:20440:3: ruleXShortClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0()); 
@@ -64261,17 +66509,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0"
-    // InternalSignalDSL.g:19742:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20449:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 : ( ruleXExpression ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19746:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19747:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20453:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20454:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19747:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19748:3: ruleXExpression
+            // InternalSignalDSL.g:20454:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20455:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0()); 
@@ -64306,17 +66554,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1"
-    // InternalSignalDSL.g:19757:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20464:1: rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 : ( ruleXExpression ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19761:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19762:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20468:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20469:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19762:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19763:3: ruleXExpression
+            // InternalSignalDSL.g:20469:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20470:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0()); 
@@ -64351,17 +66599,17 @@
 
 
     // $ANTLR start "rule__XConstructorCall__ArgumentsAssignment_5"
-    // InternalSignalDSL.g:19772:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    // InternalSignalDSL.g:20479:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
     public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19776:1: ( ( ruleXClosure ) )
-            // InternalSignalDSL.g:19777:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20483:1: ( ( ruleXClosure ) )
+            // InternalSignalDSL.g:20484:2: ( ruleXClosure )
             {
-            // InternalSignalDSL.g:19777:2: ( ruleXClosure )
-            // InternalSignalDSL.g:19778:3: ruleXClosure
+            // InternalSignalDSL.g:20484:2: ( ruleXClosure )
+            // InternalSignalDSL.g:20485:3: ruleXClosure
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXConstructorCallAccess().getArgumentsXClosureParserRuleCall_5_0()); 
@@ -64396,28 +66644,28 @@
 
 
     // $ANTLR start "rule__XBooleanLiteral__IsTrueAssignment_1_1"
-    // InternalSignalDSL.g:19787:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    // InternalSignalDSL.g:20494:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
     public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19791:1: ( ( ( 'true' ) ) )
-            // InternalSignalDSL.g:19792:2: ( ( 'true' ) )
+            // InternalSignalDSL.g:20498:1: ( ( ( 'true' ) ) )
+            // InternalSignalDSL.g:20499:2: ( ( 'true' ) )
             {
-            // InternalSignalDSL.g:19792:2: ( ( 'true' ) )
-            // InternalSignalDSL.g:19793:3: ( 'true' )
+            // InternalSignalDSL.g:20499:2: ( ( 'true' ) )
+            // InternalSignalDSL.g:20500:3: ( 'true' )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            // InternalSignalDSL.g:19794:3: ( 'true' )
-            // InternalSignalDSL.g:19795:4: 'true'
+            // InternalSignalDSL.g:20501:3: ( 'true' )
+            // InternalSignalDSL.g:20502:4: 'true'
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
-            match(input,103,FOLLOW_2); if (state.failed) return ;
+            match(input,112,FOLLOW_2); if (state.failed) return ;
             if ( state.backtracking==0 ) {
                after(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
             }
@@ -64449,17 +66697,17 @@
 
 
     // $ANTLR start "rule__XNumberLiteral__ValueAssignment_1"
-    // InternalSignalDSL.g:19806:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    // InternalSignalDSL.g:20513:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
     public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19810:1: ( ( ruleNumber ) )
-            // InternalSignalDSL.g:19811:2: ( ruleNumber )
+            // InternalSignalDSL.g:20517:1: ( ( ruleNumber ) )
+            // InternalSignalDSL.g:20518:2: ( ruleNumber )
             {
-            // InternalSignalDSL.g:19811:2: ( ruleNumber )
-            // InternalSignalDSL.g:19812:3: ruleNumber
+            // InternalSignalDSL.g:20518:2: ( ruleNumber )
+            // InternalSignalDSL.g:20519:3: ruleNumber
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXNumberLiteralAccess().getValueNumberParserRuleCall_1_0()); 
@@ -64494,17 +66742,17 @@
 
 
     // $ANTLR start "rule__XStringLiteral__ValueAssignment_1"
-    // InternalSignalDSL.g:19821:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    // InternalSignalDSL.g:20528:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
     public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19825:1: ( ( RULE_STRING ) )
-            // InternalSignalDSL.g:19826:2: ( RULE_STRING )
+            // InternalSignalDSL.g:20532:1: ( ( RULE_STRING ) )
+            // InternalSignalDSL.g:20533:2: ( RULE_STRING )
             {
-            // InternalSignalDSL.g:19826:2: ( RULE_STRING )
-            // InternalSignalDSL.g:19827:3: RULE_STRING
+            // InternalSignalDSL.g:20533:2: ( RULE_STRING )
+            // InternalSignalDSL.g:20534:3: RULE_STRING
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
@@ -64535,23 +66783,23 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__TypeAssignment_3"
-    // InternalSignalDSL.g:19836:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:20543:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
     public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19840:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:19841:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20547:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:20548:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:19841:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:19842:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20548:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20549:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
             }
-            // InternalSignalDSL.g:19843:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:19844:4: ruleQualifiedName
+            // InternalSignalDSL.g:20550:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20551:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeQualifiedNameParserRuleCall_3_0_1()); 
@@ -64592,17 +66840,17 @@
 
 
     // $ANTLR start "rule__XTypeLiteral__ArrayDimensionsAssignment_4"
-    // InternalSignalDSL.g:19855:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    // InternalSignalDSL.g:20562:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
     public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19859:1: ( ( ruleArrayBrackets ) )
-            // InternalSignalDSL.g:19860:2: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:20566:1: ( ( ruleArrayBrackets ) )
+            // InternalSignalDSL.g:20567:2: ( ruleArrayBrackets )
             {
-            // InternalSignalDSL.g:19860:2: ( ruleArrayBrackets )
-            // InternalSignalDSL.g:19861:3: ruleArrayBrackets
+            // InternalSignalDSL.g:20567:2: ( ruleArrayBrackets )
+            // InternalSignalDSL.g:20568:3: ruleArrayBrackets
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
@@ -64637,17 +66885,17 @@
 
 
     // $ANTLR start "rule__XThrowExpression__ExpressionAssignment_2"
-    // InternalSignalDSL.g:19870:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20577:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19874:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19875:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20581:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20582:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19875:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19876:3: ruleXExpression
+            // InternalSignalDSL.g:20582:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20583:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -64682,17 +66930,17 @@
 
 
     // $ANTLR start "rule__XReturnExpression__ExpressionAssignment_2"
-    // InternalSignalDSL.g:19885:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20592:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19889:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19890:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20596:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20597:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19890:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19891:3: ruleXExpression
+            // InternalSignalDSL.g:20597:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20598:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -64727,17 +66975,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__ExpressionAssignment_2"
-    // InternalSignalDSL.g:19900:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20607:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19904:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19905:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20611:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20612:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19905:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19906:3: ruleXExpression
+            // InternalSignalDSL.g:20612:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20613:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
@@ -64772,17 +67020,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0"
-    // InternalSignalDSL.g:19915:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    // InternalSignalDSL.g:20622:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
     public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19919:1: ( ( ruleXCatchClause ) )
-            // InternalSignalDSL.g:19920:2: ( ruleXCatchClause )
+            // InternalSignalDSL.g:20626:1: ( ( ruleXCatchClause ) )
+            // InternalSignalDSL.g:20627:2: ( ruleXCatchClause )
             {
-            // InternalSignalDSL.g:19920:2: ( ruleXCatchClause )
-            // InternalSignalDSL.g:19921:3: ruleXCatchClause
+            // InternalSignalDSL.g:20627:2: ( ruleXCatchClause )
+            // InternalSignalDSL.g:20628:3: ruleXCatchClause
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
@@ -64817,17 +67065,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1"
-    // InternalSignalDSL.g:19930:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20637:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19934:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19935:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20641:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20642:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19935:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19936:3: ruleXExpression
+            // InternalSignalDSL.g:20642:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20643:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
@@ -64862,17 +67110,17 @@
 
 
     // $ANTLR start "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1"
-    // InternalSignalDSL.g:19945:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20652:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
     public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19949:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19950:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20656:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20657:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19950:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19951:3: ruleXExpression
+            // InternalSignalDSL.g:20657:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20658:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
@@ -64907,17 +67155,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ParamAssignment_1"
-    // InternalSignalDSL.g:19960:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20667:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19964:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19965:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20671:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20672:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19965:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19966:3: ruleXExpression
+            // InternalSignalDSL.g:20672:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20673:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
@@ -64952,17 +67200,17 @@
 
 
     // $ANTLR start "rule__XSynchronizedExpression__ExpressionAssignment_3"
-    // InternalSignalDSL.g:19975:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20682:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
     public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19979:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:19980:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20686:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20687:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:19980:2: ( ruleXExpression )
-            // InternalSignalDSL.g:19981:3: ruleXExpression
+            // InternalSignalDSL.g:20687:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20688:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
@@ -64997,17 +67245,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__DeclaredParamAssignment_2"
-    // InternalSignalDSL.g:19990:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    // InternalSignalDSL.g:20697:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
     public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:19994:1: ( ( ruleFullJvmFormalParameter ) )
-            // InternalSignalDSL.g:19995:2: ( ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:20701:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalSignalDSL.g:20702:2: ( ruleFullJvmFormalParameter )
             {
-            // InternalSignalDSL.g:19995:2: ( ruleFullJvmFormalParameter )
-            // InternalSignalDSL.g:19996:3: ruleFullJvmFormalParameter
+            // InternalSignalDSL.g:20702:2: ( ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:20703:3: ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
@@ -65042,17 +67290,17 @@
 
 
     // $ANTLR start "rule__XCatchClause__ExpressionAssignment_4"
-    // InternalSignalDSL.g:20005:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    // InternalSignalDSL.g:20712:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
     public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20009:1: ( ( ruleXExpression ) )
-            // InternalSignalDSL.g:20010:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20716:1: ( ( ruleXExpression ) )
+            // InternalSignalDSL.g:20717:2: ( ruleXExpression )
             {
-            // InternalSignalDSL.g:20010:2: ( ruleXExpression )
-            // InternalSignalDSL.g:20011:3: ruleXExpression
+            // InternalSignalDSL.g:20717:2: ( ruleXExpression )
+            // InternalSignalDSL.g:20718:3: ruleXExpression
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
@@ -65087,17 +67335,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0"
-    // InternalSignalDSL.g:20020:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20727:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20024:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20025:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20731:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20732:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20025:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20026:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20732:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20733:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
@@ -65132,17 +67380,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1"
-    // InternalSignalDSL.g:20035:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20742:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20039:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20040:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20746:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20747:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20040:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20041:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20747:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20748:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
@@ -65177,17 +67425,17 @@
 
 
     // $ANTLR start "rule__XFunctionTypeRef__ReturnTypeAssignment_2"
-    // InternalSignalDSL.g:20050:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20757:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
     public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20054:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20055:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20761:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20762:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20055:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20056:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20762:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20763:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
@@ -65222,23 +67470,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_0"
-    // InternalSignalDSL.g:20065:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    // InternalSignalDSL.g:20772:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20069:1: ( ( ( ruleQualifiedName ) ) )
-            // InternalSignalDSL.g:20070:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20776:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalSignalDSL.g:20777:2: ( ( ruleQualifiedName ) )
             {
-            // InternalSignalDSL.g:20070:2: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:20071:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20777:2: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:20778:3: ( ruleQualifiedName )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
             }
-            // InternalSignalDSL.g:20072:3: ( ruleQualifiedName )
-            // InternalSignalDSL.g:20073:4: ruleQualifiedName
+            // InternalSignalDSL.g:20779:3: ( ruleQualifiedName )
+            // InternalSignalDSL.g:20780:4: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeQualifiedNameParserRuleCall_0_0_1()); 
@@ -65279,17 +67527,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1"
-    // InternalSignalDSL.g:20084:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20791:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20088:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20089:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20795:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20796:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20089:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20090:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20796:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20797:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
@@ -65324,17 +67572,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1"
-    // InternalSignalDSL.g:20099:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20806:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20103:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20104:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20810:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20811:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20104:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20105:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20811:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20812:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
@@ -65369,23 +67617,23 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1"
-    // InternalSignalDSL.g:20114:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    // InternalSignalDSL.g:20821:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
     public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20118:1: ( ( ( ruleValidID ) ) )
-            // InternalSignalDSL.g:20119:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20825:1: ( ( ( ruleValidID ) ) )
+            // InternalSignalDSL.g:20826:2: ( ( ruleValidID ) )
             {
-            // InternalSignalDSL.g:20119:2: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:20120:3: ( ruleValidID )
+            // InternalSignalDSL.g:20826:2: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:20827:3: ( ruleValidID )
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
             }
-            // InternalSignalDSL.g:20121:3: ( ruleValidID )
-            // InternalSignalDSL.g:20122:4: ruleValidID
+            // InternalSignalDSL.g:20828:3: ( ruleValidID )
+            // InternalSignalDSL.g:20829:4: ruleValidID
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeValidIDParserRuleCall_1_4_1_0_1()); 
@@ -65426,17 +67674,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1"
-    // InternalSignalDSL.g:20133:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20840:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20137:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20138:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20844:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20845:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20138:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20139:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20845:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20846:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
@@ -65471,17 +67719,17 @@
 
 
     // $ANTLR start "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1"
-    // InternalSignalDSL.g:20148:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    // InternalSignalDSL.g:20855:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 : ( ruleJvmArgumentTypeReference ) ;
     public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20152:1: ( ( ruleJvmArgumentTypeReference ) )
-            // InternalSignalDSL.g:20153:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20859:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalSignalDSL.g:20860:2: ( ruleJvmArgumentTypeReference )
             {
-            // InternalSignalDSL.g:20153:2: ( ruleJvmArgumentTypeReference )
-            // InternalSignalDSL.g:20154:3: ruleJvmArgumentTypeReference
+            // InternalSignalDSL.g:20860:2: ( ruleJvmArgumentTypeReference )
+            // InternalSignalDSL.g:20861:3: ruleJvmArgumentTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
@@ -65516,17 +67764,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0"
-    // InternalSignalDSL.g:20163:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    // InternalSignalDSL.g:20870:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20167:1: ( ( ruleJvmUpperBound ) )
-            // InternalSignalDSL.g:20168:2: ( ruleJvmUpperBound )
+            // InternalSignalDSL.g:20874:1: ( ( ruleJvmUpperBound ) )
+            // InternalSignalDSL.g:20875:2: ( ruleJvmUpperBound )
             {
-            // InternalSignalDSL.g:20168:2: ( ruleJvmUpperBound )
-            // InternalSignalDSL.g:20169:3: ruleJvmUpperBound
+            // InternalSignalDSL.g:20875:2: ( ruleJvmUpperBound )
+            // InternalSignalDSL.g:20876:3: ruleJvmUpperBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
@@ -65561,17 +67809,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1"
-    // InternalSignalDSL.g:20178:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    // InternalSignalDSL.g:20885:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20182:1: ( ( ruleJvmUpperBoundAnded ) )
-            // InternalSignalDSL.g:20183:2: ( ruleJvmUpperBoundAnded )
+            // InternalSignalDSL.g:20889:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalSignalDSL.g:20890:2: ( ruleJvmUpperBoundAnded )
             {
-            // InternalSignalDSL.g:20183:2: ( ruleJvmUpperBoundAnded )
-            // InternalSignalDSL.g:20184:3: ruleJvmUpperBoundAnded
+            // InternalSignalDSL.g:20890:2: ( ruleJvmUpperBoundAnded )
+            // InternalSignalDSL.g:20891:3: ruleJvmUpperBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0()); 
@@ -65606,17 +67854,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0"
-    // InternalSignalDSL.g:20193:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    // InternalSignalDSL.g:20900:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20197:1: ( ( ruleJvmLowerBound ) )
-            // InternalSignalDSL.g:20198:2: ( ruleJvmLowerBound )
+            // InternalSignalDSL.g:20904:1: ( ( ruleJvmLowerBound ) )
+            // InternalSignalDSL.g:20905:2: ( ruleJvmLowerBound )
             {
-            // InternalSignalDSL.g:20198:2: ( ruleJvmLowerBound )
-            // InternalSignalDSL.g:20199:3: ruleJvmLowerBound
+            // InternalSignalDSL.g:20905:2: ( ruleJvmLowerBound )
+            // InternalSignalDSL.g:20906:3: ruleJvmLowerBound
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0()); 
@@ -65651,17 +67899,17 @@
 
 
     // $ANTLR start "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1"
-    // InternalSignalDSL.g:20208:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    // InternalSignalDSL.g:20915:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
     public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20212:1: ( ( ruleJvmLowerBoundAnded ) )
-            // InternalSignalDSL.g:20213:2: ( ruleJvmLowerBoundAnded )
+            // InternalSignalDSL.g:20919:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalSignalDSL.g:20920:2: ( ruleJvmLowerBoundAnded )
             {
-            // InternalSignalDSL.g:20213:2: ( ruleJvmLowerBoundAnded )
-            // InternalSignalDSL.g:20214:3: ruleJvmLowerBoundAnded
+            // InternalSignalDSL.g:20920:2: ( ruleJvmLowerBoundAnded )
+            // InternalSignalDSL.g:20921:3: ruleJvmLowerBoundAnded
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0()); 
@@ -65696,17 +67944,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBound__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20223:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20930:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20227:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20228:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20934:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20935:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20228:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20229:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20935:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20936:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -65741,17 +67989,17 @@
 
 
     // $ANTLR start "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20238:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20945:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20242:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20243:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20949:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20950:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20243:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20244:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20950:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20951:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -65786,17 +68034,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBound__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20253:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20960:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20257:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20258:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20964:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20965:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20258:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20259:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20965:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20966:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -65831,17 +68079,17 @@
 
 
     // $ANTLR start "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1"
-    // InternalSignalDSL.g:20268:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    // InternalSignalDSL.g:20975:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
     public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20272:1: ( ( ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:20273:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20979:1: ( ( ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:20980:2: ( ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:20273:2: ( ruleJvmTypeReference )
-            // InternalSignalDSL.g:20274:3: ruleJvmTypeReference
+            // InternalSignalDSL.g:20980:2: ( ruleJvmTypeReference )
+            // InternalSignalDSL.g:20981:3: ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceJvmTypeReferenceParserRuleCall_1_0()); 
@@ -65876,17 +68124,17 @@
 
 
     // $ANTLR start "rule__XImportSection__ImportDeclarationsAssignment"
-    // InternalSignalDSL.g:20283:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    // InternalSignalDSL.g:20990:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
     public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
 
         		int stackSize = keepStackSize();
         	
         try {
-            // InternalSignalDSL.g:20287:1: ( ( ruleXImportDeclaration ) )
-            // InternalSignalDSL.g:20288:2: ( ruleXImportDeclaration )
+            // InternalSignalDSL.g:20994:1: ( ( ruleXImportDeclaration ) )
+            // InternalSignalDSL.g:20995:2: ( ruleXImportDeclaration )
             {
-            // InternalSignalDSL.g:20288:2: ( ruleXImportDeclaration )
-            // InternalSignalDSL.g:20289:3: ruleXImportDeclaration
+            // InternalSignalDSL.g:20995:2: ( ruleXImportDeclaration )
+            // InternalSignalDSL.g:20996:3: ruleXImportDeclaration
             {
             if ( state.backtracking==0 ) {
                before(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0()); 
@@ -65919,19 +68167,19 @@
     }
     // $ANTLR end "rule__XImportSection__ImportDeclarationsAssignment"
 
-    // $ANTLR start synpred8_InternalSignalDSL
-    public final void synpred8_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2482:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
-        // InternalSignalDSL.g:2482:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+    // $ANTLR start synpred12_InternalSignalDSL
+    public final void synpred12_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2655:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
         {
-        // InternalSignalDSL.g:2482:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
-        // InternalSignalDSL.g:2483:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalSignalDSL.g:2655:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalSignalDSL.g:2656:3: ( rule__XAnnotation__Group_3_1_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
         }
-        // InternalSignalDSL.g:2484:3: ( rule__XAnnotation__Group_3_1_0__0 )
-        // InternalSignalDSL.g:2484:4: rule__XAnnotation__Group_3_1_0__0
+        // InternalSignalDSL.g:2657:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalSignalDSL.g:2657:4: rule__XAnnotation__Group_3_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotation__Group_3_1_0__0();
@@ -65947,21 +68195,21 @@
 
         }
     }
-    // $ANTLR end synpred8_InternalSignalDSL
+    // $ANTLR end synpred12_InternalSignalDSL
 
-    // $ANTLR start synpred9_InternalSignalDSL
-    public final void synpred9_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2503:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
-        // InternalSignalDSL.g:2503:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+    // $ANTLR start synpred13_InternalSignalDSL
+    public final void synpred13_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2676:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
         {
-        // InternalSignalDSL.g:2503:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
-        // InternalSignalDSL.g:2504:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalSignalDSL.g:2676:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalSignalDSL.g:2677:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
         }
-        // InternalSignalDSL.g:2505:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
-        // InternalSignalDSL.g:2505:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        // InternalSignalDSL.g:2678:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalSignalDSL.g:2678:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotationElementValueOrCommaList__Group_0__0();
@@ -65977,21 +68225,21 @@
 
         }
     }
-    // $ANTLR end synpred9_InternalSignalDSL
+    // $ANTLR end synpred13_InternalSignalDSL
 
-    // $ANTLR start synpred10_InternalSignalDSL
-    public final void synpred10_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2524:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
-        // InternalSignalDSL.g:2524:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+    // $ANTLR start synpred14_InternalSignalDSL
+    public final void synpred14_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2697:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
         {
-        // InternalSignalDSL.g:2524:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
-        // InternalSignalDSL.g:2525:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalSignalDSL.g:2697:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalSignalDSL.g:2698:3: ( rule__XAnnotationElementValue__Group_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
         }
-        // InternalSignalDSL.g:2526:3: ( rule__XAnnotationElementValue__Group_0__0 )
-        // InternalSignalDSL.g:2526:4: rule__XAnnotationElementValue__Group_0__0
+        // InternalSignalDSL.g:2699:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalSignalDSL.g:2699:4: rule__XAnnotationElementValue__Group_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XAnnotationElementValue__Group_0__0();
@@ -66007,21 +68255,21 @@
 
         }
     }
-    // $ANTLR end synpred10_InternalSignalDSL
+    // $ANTLR end synpred14_InternalSignalDSL
 
-    // $ANTLR start synpred35_InternalSignalDSL
-    public final void synpred35_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2809:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
-        // InternalSignalDSL.g:2809:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+    // $ANTLR start synpred39_InternalSignalDSL
+    public final void synpred39_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2982:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
         {
-        // InternalSignalDSL.g:2809:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
-        // InternalSignalDSL.g:2810:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalSignalDSL.g:2982:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalSignalDSL.g:2983:3: ( rule__OpOther__Group_6_1_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
         }
-        // InternalSignalDSL.g:2811:3: ( rule__OpOther__Group_6_1_0__0 )
-        // InternalSignalDSL.g:2811:4: rule__OpOther__Group_6_1_0__0
+        // InternalSignalDSL.g:2984:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalSignalDSL.g:2984:4: rule__OpOther__Group_6_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__OpOther__Group_6_1_0__0();
@@ -66037,15 +68285,15 @@
 
         }
     }
-    // $ANTLR end synpred35_InternalSignalDSL
+    // $ANTLR end synpred39_InternalSignalDSL
 
-    // $ANTLR start synpred36_InternalSignalDSL
-    public final void synpred36_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2815:2: ( ( '<' ) )
-        // InternalSignalDSL.g:2815:2: ( '<' )
+    // $ANTLR start synpred40_InternalSignalDSL
+    public final void synpred40_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:2988:2: ( ( '<' ) )
+        // InternalSignalDSL.g:2988:2: ( '<' )
         {
-        // InternalSignalDSL.g:2815:2: ( '<' )
-        // InternalSignalDSL.g:2816:3: '<'
+        // InternalSignalDSL.g:2988:2: ( '<' )
+        // InternalSignalDSL.g:2989:3: '<'
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
@@ -66057,21 +68305,21 @@
 
         }
     }
-    // $ANTLR end synpred36_InternalSignalDSL
+    // $ANTLR end synpred40_InternalSignalDSL
 
-    // $ANTLR start synpred49_InternalSignalDSL
-    public final void synpred49_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3028:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
-        // InternalSignalDSL.g:3028:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+    // $ANTLR start synpred53_InternalSignalDSL
+    public final void synpred53_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3201:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
         {
-        // InternalSignalDSL.g:3028:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
-        // InternalSignalDSL.g:3029:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalSignalDSL.g:3201:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalSignalDSL.g:3202:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
         }
-        // InternalSignalDSL.g:3030:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
-        // InternalSignalDSL.g:3030:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
+        // InternalSignalDSL.g:3203:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalSignalDSL.g:3203:4: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0();
@@ -66087,21 +68335,21 @@
 
         }
     }
-    // $ANTLR end synpred49_InternalSignalDSL
+    // $ANTLR end synpred53_InternalSignalDSL
 
-    // $ANTLR start synpred57_InternalSignalDSL
-    public final void synpred57_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3091:2: ( ( ( ruleXForLoopExpression ) ) )
-        // InternalSignalDSL.g:3091:2: ( ( ruleXForLoopExpression ) )
+    // $ANTLR start synpred61_InternalSignalDSL
+    public final void synpred61_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3264:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
         {
-        // InternalSignalDSL.g:3091:2: ( ( ruleXForLoopExpression ) )
-        // InternalSignalDSL.g:3092:3: ( ruleXForLoopExpression )
+        // InternalSignalDSL.g:3264:2: ( ( ruleXForLoopExpression ) )
+        // InternalSignalDSL.g:3265:3: ( ruleXForLoopExpression )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
         }
-        // InternalSignalDSL.g:3093:3: ( ruleXForLoopExpression )
-        // InternalSignalDSL.g:3093:4: ruleXForLoopExpression
+        // InternalSignalDSL.g:3266:3: ( ruleXForLoopExpression )
+        // InternalSignalDSL.g:3266:4: ruleXForLoopExpression
         {
         pushFollow(FOLLOW_2);
         ruleXForLoopExpression();
@@ -66117,15 +68365,15 @@
 
         }
     }
-    // $ANTLR end synpred57_InternalSignalDSL
+    // $ANTLR end synpred61_InternalSignalDSL
 
-    // $ANTLR start synpred58_InternalSignalDSL
-    public final void synpred58_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3097:2: ( ( ruleXBasicForLoopExpression ) )
-        // InternalSignalDSL.g:3097:2: ( ruleXBasicForLoopExpression )
+    // $ANTLR start synpred62_InternalSignalDSL
+    public final void synpred62_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3270:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
         {
-        // InternalSignalDSL.g:3097:2: ( ruleXBasicForLoopExpression )
-        // InternalSignalDSL.g:3098:3: ruleXBasicForLoopExpression
+        // InternalSignalDSL.g:3270:2: ( ruleXBasicForLoopExpression )
+        // InternalSignalDSL.g:3271:3: ruleXBasicForLoopExpression
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
@@ -66141,21 +68389,21 @@
 
         }
     }
-    // $ANTLR end synpred58_InternalSignalDSL
+    // $ANTLR end synpred62_InternalSignalDSL
 
-    // $ANTLR start synpred71_InternalSignalDSL
-    public final void synpred71_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3220:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
-        // InternalSignalDSL.g:3220:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+    // $ANTLR start synpred75_InternalSignalDSL
+    public final void synpred75_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3393:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
         {
-        // InternalSignalDSL.g:3220:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
-        // InternalSignalDSL.g:3221:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalSignalDSL.g:3393:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalSignalDSL.g:3394:3: ( rule__XSwitchExpression__Group_2_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
         }
-        // InternalSignalDSL.g:3222:3: ( rule__XSwitchExpression__Group_2_0__0 )
-        // InternalSignalDSL.g:3222:4: rule__XSwitchExpression__Group_2_0__0
+        // InternalSignalDSL.g:3395:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalSignalDSL.g:3395:4: rule__XSwitchExpression__Group_2_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_0__0();
@@ -66171,21 +68419,21 @@
 
         }
     }
-    // $ANTLR end synpred71_InternalSignalDSL
+    // $ANTLR end synpred75_InternalSignalDSL
 
-    // $ANTLR start synpred75_InternalSignalDSL
-    public final void synpred75_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3304:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
-        // InternalSignalDSL.g:3304:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+    // $ANTLR start synpred79_InternalSignalDSL
+    public final void synpred79_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3477:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
         {
-        // InternalSignalDSL.g:3304:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
-        // InternalSignalDSL.g:3305:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalSignalDSL.g:3477:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalSignalDSL.g:3478:3: ( rule__XVariableDeclaration__Group_2_0__0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
         }
-        // InternalSignalDSL.g:3306:3: ( rule__XVariableDeclaration__Group_2_0__0 )
-        // InternalSignalDSL.g:3306:4: rule__XVariableDeclaration__Group_2_0__0
+        // InternalSignalDSL.g:3479:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalSignalDSL.g:3479:4: rule__XVariableDeclaration__Group_2_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XVariableDeclaration__Group_2_0__0();
@@ -66201,21 +68449,21 @@
 
         }
     }
-    // $ANTLR end synpred75_InternalSignalDSL
+    // $ANTLR end synpred79_InternalSignalDSL
 
-    // $ANTLR start synpred76_InternalSignalDSL
-    public final void synpred76_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3325:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
-        // InternalSignalDSL.g:3325:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+    // $ANTLR start synpred80_InternalSignalDSL
+    public final void synpred80_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3498:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
         {
-        // InternalSignalDSL.g:3325:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
-        // InternalSignalDSL.g:3326:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalSignalDSL.g:3498:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalSignalDSL.g:3499:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
         }
-        // InternalSignalDSL.g:3327:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
-        // InternalSignalDSL.g:3327:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        // InternalSignalDSL.g:3500:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalSignalDSL.g:3500:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
@@ -66231,21 +68479,21 @@
 
         }
     }
-    // $ANTLR end synpred76_InternalSignalDSL
+    // $ANTLR end synpred80_InternalSignalDSL
 
-    // $ANTLR start synpred82_InternalSignalDSL
-    public final void synpred82_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3406:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
-        // InternalSignalDSL.g:3406:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+    // $ANTLR start synpred86_InternalSignalDSL
+    public final void synpred86_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3579:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
         {
-        // InternalSignalDSL.g:3406:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
-        // InternalSignalDSL.g:3407:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalSignalDSL.g:3579:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalSignalDSL.g:3580:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
         {
         if ( state.backtracking==0 ) {
            before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
         }
-        // InternalSignalDSL.g:3408:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
-        // InternalSignalDSL.g:3408:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        // InternalSignalDSL.g:3581:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalSignalDSL.g:3581:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
         {
         pushFollow(FOLLOW_2);
         rule__XConstructorCall__ArgumentsAssignment_4_1_0();
@@ -66261,12 +68509,12 @@
 
         }
     }
-    // $ANTLR end synpred82_InternalSignalDSL
+    // $ANTLR end synpred86_InternalSignalDSL
 
-    // $ANTLR start synpred113_InternalSignalDSL
-    public final void synpred113_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6264:3: ( rule__XAssignment__Group_1_1__0 )
-        // InternalSignalDSL.g:6264:3: rule__XAssignment__Group_1_1__0
+    // $ANTLR start synpred119_InternalSignalDSL
+    public final void synpred119_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:6851:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalSignalDSL.g:6851:3: rule__XAssignment__Group_1_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XAssignment__Group_1_1__0();
@@ -66276,105 +68524,15 @@
 
         }
     }
-    // $ANTLR end synpred113_InternalSignalDSL
-
-    // $ANTLR start synpred115_InternalSignalDSL
-    public final void synpred115_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6615:3: ( rule__XOrExpression__Group_1__0 )
-        // InternalSignalDSL.g:6615:3: rule__XOrExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XOrExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred115_InternalSignalDSL
-
-    // $ANTLR start synpred116_InternalSignalDSL
-    public final void synpred116_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6804:3: ( rule__XAndExpression__Group_1__0 )
-        // InternalSignalDSL.g:6804:3: rule__XAndExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XAndExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred116_InternalSignalDSL
-
-    // $ANTLR start synpred117_InternalSignalDSL
-    public final void synpred117_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6993:3: ( rule__XEqualityExpression__Group_1__0 )
-        // InternalSignalDSL.g:6993:3: rule__XEqualityExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XEqualityExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred117_InternalSignalDSL
-
-    // $ANTLR start synpred118_InternalSignalDSL
-    public final void synpred118_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7182:3: ( rule__XRelationalExpression__Alternatives_1 )
-        // InternalSignalDSL.g:7182:3: rule__XRelationalExpression__Alternatives_1
-        {
-        pushFollow(FOLLOW_2);
-        rule__XRelationalExpression__Alternatives_1();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred118_InternalSignalDSL
-
-    // $ANTLR start synpred119_InternalSignalDSL
-    public final void synpred119_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7560:3: ( rule__XOtherOperatorExpression__Group_1__0 )
-        // InternalSignalDSL.g:7560:3: rule__XOtherOperatorExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XOtherOperatorExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
     // $ANTLR end synpred119_InternalSignalDSL
 
-    // $ANTLR start synpred120_InternalSignalDSL
-    public final void synpred120_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8073:3: ( rule__XAdditiveExpression__Group_1__0 )
-        // InternalSignalDSL.g:8073:3: rule__XAdditiveExpression__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XAdditiveExpression__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred120_InternalSignalDSL
-
     // $ANTLR start synpred121_InternalSignalDSL
     public final void synpred121_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8262:3: ( rule__XMultiplicativeExpression__Group_1__0 )
-        // InternalSignalDSL.g:8262:3: rule__XMultiplicativeExpression__Group_1__0
+        // InternalSignalDSL.g:7202:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalSignalDSL.g:7202:3: rule__XOrExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XMultiplicativeExpression__Group_1__0();
+        rule__XOrExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66385,11 +68543,11 @@
 
     // $ANTLR start synpred122_InternalSignalDSL
     public final void synpred122_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8532:3: ( rule__XCastedExpression__Group_1__0 )
-        // InternalSignalDSL.g:8532:3: rule__XCastedExpression__Group_1__0
+        // InternalSignalDSL.g:7391:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalSignalDSL.g:7391:3: rule__XAndExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XCastedExpression__Group_1__0();
+        rule__XAndExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66400,11 +68558,11 @@
 
     // $ANTLR start synpred123_InternalSignalDSL
     public final void synpred123_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8721:3: ( rule__XPostfixOperation__Group_1__0 )
-        // InternalSignalDSL.g:8721:3: rule__XPostfixOperation__Group_1__0
+        // InternalSignalDSL.g:7580:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalSignalDSL.g:7580:3: rule__XEqualityExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XPostfixOperation__Group_1__0();
+        rule__XEqualityExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66415,11 +68573,11 @@
 
     // $ANTLR start synpred124_InternalSignalDSL
     public final void synpred124_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:8856:3: ( rule__XMemberFeatureCall__Alternatives_1 )
-        // InternalSignalDSL.g:8856:3: rule__XMemberFeatureCall__Alternatives_1
+        // InternalSignalDSL.g:7769:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalSignalDSL.g:7769:3: rule__XRelationalExpression__Alternatives_1
         {
         pushFollow(FOLLOW_2);
-        rule__XMemberFeatureCall__Alternatives_1();
+        rule__XRelationalExpression__Alternatives_1();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66428,13 +68586,28 @@
     }
     // $ANTLR end synpred124_InternalSignalDSL
 
-    // $ANTLR start synpred126_InternalSignalDSL
-    public final void synpred126_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9154:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
-        // InternalSignalDSL.g:9154:3: rule__XMemberFeatureCall__Group_1_1_3__0
+    // $ANTLR start synpred125_InternalSignalDSL
+    public final void synpred125_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:8147:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalSignalDSL.g:8147:3: rule__XOtherOperatorExpression__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__XMemberFeatureCall__Group_1_1_3__0();
+        rule__XOtherOperatorExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred125_InternalSignalDSL
+
+    // $ANTLR start synpred126_InternalSignalDSL
+    public final void synpred126_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:8660:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalSignalDSL.g:8660:3: rule__XAdditiveExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAdditiveExpression__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66445,8 +68618,83 @@
 
     // $ANTLR start synpred127_InternalSignalDSL
     public final void synpred127_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:9180:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
-        // InternalSignalDSL.g:9180:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
+        // InternalSignalDSL.g:8849:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalSignalDSL.g:8849:3: rule__XMultiplicativeExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMultiplicativeExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred127_InternalSignalDSL
+
+    // $ANTLR start synpred128_InternalSignalDSL
+    public final void synpred128_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9119:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalSignalDSL.g:9119:3: rule__XCastedExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred128_InternalSignalDSL
+
+    // $ANTLR start synpred129_InternalSignalDSL
+    public final void synpred129_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9308:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalSignalDSL.g:9308:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred129_InternalSignalDSL
+
+    // $ANTLR start synpred130_InternalSignalDSL
+    public final void synpred130_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9443:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalSignalDSL.g:9443:3: rule__XMemberFeatureCall__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred130_InternalSignalDSL
+
+    // $ANTLR start synpred132_InternalSignalDSL
+    public final void synpred132_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9741:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalSignalDSL.g:9741:3: rule__XMemberFeatureCall__Group_1_1_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Group_1_1_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred132_InternalSignalDSL
+
+    // $ANTLR start synpred133_InternalSignalDSL
+    public final void synpred133_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:9767:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalSignalDSL.g:9767:3: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4
         {
         pushFollow(FOLLOW_2);
         rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4();
@@ -66456,12 +68704,12 @@
 
         }
     }
-    // $ANTLR end synpred127_InternalSignalDSL
+    // $ANTLR end synpred133_InternalSignalDSL
 
-    // $ANTLR start synpred135_InternalSignalDSL
-    public final void synpred135_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:10153:3: ( rule__XClosure__Group_1__0 )
-        // InternalSignalDSL.g:10153:3: rule__XClosure__Group_1__0
+    // $ANTLR start synpred141_InternalSignalDSL
+    public final void synpred141_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:10740:3: ( rule__XClosure__Group_1__0 )
+        // InternalSignalDSL.g:10740:3: rule__XClosure__Group_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XClosure__Group_1__0();
@@ -66471,12 +68719,12 @@
 
         }
     }
-    // $ANTLR end synpred135_InternalSignalDSL
+    // $ANTLR end synpred141_InternalSignalDSL
 
-    // $ANTLR start synpred142_InternalSignalDSL
-    public final void synpred142_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:11124:3: ( rule__XIfExpression__Group_6__0 )
-        // InternalSignalDSL.g:11124:3: rule__XIfExpression__Group_6__0
+    // $ANTLR start synpred148_InternalSignalDSL
+    public final void synpred148_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:11711:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalSignalDSL.g:11711:3: rule__XIfExpression__Group_6__0
         {
         pushFollow(FOLLOW_2);
         rule__XIfExpression__Group_6__0();
@@ -66486,12 +68734,12 @@
 
         }
     }
-    // $ANTLR end synpred142_InternalSignalDSL
+    // $ANTLR end synpred148_InternalSignalDSL
 
-    // $ANTLR start synpred145_InternalSignalDSL
-    public final void synpred145_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:11584:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
-        // InternalSignalDSL.g:11584:3: rule__XSwitchExpression__Group_2_1_0__0
+    // $ANTLR start synpred151_InternalSignalDSL
+    public final void synpred151_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:12171:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalSignalDSL.g:12171:3: rule__XSwitchExpression__Group_2_1_0__0
         {
         pushFollow(FOLLOW_2);
         rule__XSwitchExpression__Group_2_1_0__0();
@@ -66501,60 +68749,15 @@
 
         }
     }
-    // $ANTLR end synpred145_InternalSignalDSL
-
-    // $ANTLR start synpred158_InternalSignalDSL
-    public final void synpred158_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:13717:3: ( rule__XFeatureCall__Group_3__0 )
-        // InternalSignalDSL.g:13717:3: rule__XFeatureCall__Group_3__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XFeatureCall__Group_3__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred158_InternalSignalDSL
-
-    // $ANTLR start synpred159_InternalSignalDSL
-    public final void synpred159_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:13743:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
-        // InternalSignalDSL.g:13743:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
-        {
-        pushFollow(FOLLOW_2);
-        rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred159_InternalSignalDSL
-
-    // $ANTLR start synpred163_InternalSignalDSL
-    public final void synpred163_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14203:3: ( rule__XConstructorCall__Group_3__0 )
-        // InternalSignalDSL.g:14203:3: rule__XConstructorCall__Group_3__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__XConstructorCall__Group_3__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred163_InternalSignalDSL
+    // $ANTLR end synpred151_InternalSignalDSL
 
     // $ANTLR start synpred164_InternalSignalDSL
     public final void synpred164_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14230:3: ( rule__XConstructorCall__Group_4__0 )
-        // InternalSignalDSL.g:14230:3: rule__XConstructorCall__Group_4__0
+        // InternalSignalDSL.g:14304:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalSignalDSL.g:14304:3: rule__XFeatureCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
-        rule__XConstructorCall__Group_4__0();
+        rule__XFeatureCall__Group_3__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66565,11 +68768,11 @@
 
     // $ANTLR start synpred165_InternalSignalDSL
     public final void synpred165_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:14256:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
-        // InternalSignalDSL.g:14256:3: rule__XConstructorCall__ArgumentsAssignment_5
+        // InternalSignalDSL.g:14330:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalSignalDSL.g:14330:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
         {
         pushFollow(FOLLOW_2);
-        rule__XConstructorCall__ArgumentsAssignment_5();
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66578,13 +68781,28 @@
     }
     // $ANTLR end synpred165_InternalSignalDSL
 
-    // $ANTLR start synpred170_InternalSignalDSL
-    public final void synpred170_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15147:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
-        // InternalSignalDSL.g:15147:3: rule__XReturnExpression__ExpressionAssignment_2
+    // $ANTLR start synpred169_InternalSignalDSL
+    public final void synpred169_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:14790:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalSignalDSL.g:14790:3: rule__XConstructorCall__Group_3__0
         {
         pushFollow(FOLLOW_2);
-        rule__XReturnExpression__ExpressionAssignment_2();
+        rule__XConstructorCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred169_InternalSignalDSL
+
+    // $ANTLR start synpred170_InternalSignalDSL
+    public final void synpred170_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:14817:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalSignalDSL.g:14817:3: rule__XConstructorCall__Group_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_4__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66595,8 +68813,38 @@
 
     // $ANTLR start synpred171_InternalSignalDSL
     public final void synpred171_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15289:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
-        // InternalSignalDSL.g:15289:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+        // InternalSignalDSL.g:14843:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalSignalDSL.g:14843:3: rule__XConstructorCall__ArgumentsAssignment_5
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_5();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred171_InternalSignalDSL
+
+    // $ANTLR start synpred176_InternalSignalDSL
+    public final void synpred176_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:15734:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalSignalDSL.g:15734:3: rule__XReturnExpression__ExpressionAssignment_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__XReturnExpression__ExpressionAssignment_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred176_InternalSignalDSL
+
+    // $ANTLR start synpred177_InternalSignalDSL
+    public final void synpred177_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:15876:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalSignalDSL.g:15876:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
         {
         pushFollow(FOLLOW_2);
         rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
@@ -66606,12 +68854,12 @@
 
         }
     }
-    // $ANTLR end synpred171_InternalSignalDSL
+    // $ANTLR end synpred177_InternalSignalDSL
 
-    // $ANTLR start synpred172_InternalSignalDSL
-    public final void synpred172_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15316:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
-        // InternalSignalDSL.g:15316:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
+    // $ANTLR start synpred178_InternalSignalDSL
+    public final void synpred178_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:15903:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalSignalDSL.g:15903:3: rule__XTryCatchFinallyExpression__Group_3_0_1__0
         {
         pushFollow(FOLLOW_2);
         rule__XTryCatchFinallyExpression__Group_3_0_1__0();
@@ -66621,45 +68869,15 @@
 
         }
     }
-    // $ANTLR end synpred172_InternalSignalDSL
-
-    // $ANTLR start synpred173_InternalSignalDSL
-    public final void synpred173_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:15829:3: ( rule__QualifiedName__Group_1__0 )
-        // InternalSignalDSL.g:15829:3: rule__QualifiedName__Group_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__QualifiedName__Group_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred173_InternalSignalDSL
-
-    // $ANTLR start synpred175_InternalSignalDSL
-    public final void synpred175_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:16045:3: ( rule__JvmTypeReference__Group_0_1__0 )
-        // InternalSignalDSL.g:16045:3: rule__JvmTypeReference__Group_0_1__0
-        {
-        pushFollow(FOLLOW_2);
-        rule__JvmTypeReference__Group_0_1__0();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred175_InternalSignalDSL
+    // $ANTLR end synpred178_InternalSignalDSL
 
     // $ANTLR start synpred179_InternalSignalDSL
     public final void synpred179_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:16504:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
-        // InternalSignalDSL.g:16504:3: rule__JvmParameterizedTypeReference__Group_1__0
+        // InternalSignalDSL.g:16416:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalSignalDSL.g:16416:3: rule__QualifiedName__Group_1__0
         {
         pushFollow(FOLLOW_2);
-        rule__JvmParameterizedTypeReference__Group_1__0();
+        rule__QualifiedName__Group_1__0();
 
         state._fsp--;
         if (state.failed) return ;
@@ -66670,8 +68888,38 @@
 
     // $ANTLR start synpred181_InternalSignalDSL
     public final void synpred181_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:16639:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
-        // InternalSignalDSL.g:16639:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+        // InternalSignalDSL.g:16632:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalSignalDSL.g:16632:3: rule__JvmTypeReference__Group_0_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmTypeReference__Group_0_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred181_InternalSignalDSL
+
+    // $ANTLR start synpred185_InternalSignalDSL
+    public final void synpred185_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17091:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalSignalDSL.g:17091:3: rule__JvmParameterizedTypeReference__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred185_InternalSignalDSL
+
+    // $ANTLR start synpred187_InternalSignalDSL
+    public final void synpred187_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17226:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalSignalDSL.g:17226:3: rule__JvmParameterizedTypeReference__Group_1_4__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4__0();
@@ -66681,12 +68929,12 @@
 
         }
     }
-    // $ANTLR end synpred181_InternalSignalDSL
+    // $ANTLR end synpred187_InternalSignalDSL
 
-    // $ANTLR start synpred182_InternalSignalDSL
-    public final void synpred182_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:16774:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
-        // InternalSignalDSL.g:16774:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
+    // $ANTLR start synpred188_InternalSignalDSL
+    public final void synpred188_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:17361:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalSignalDSL.g:17361:3: rule__JvmParameterizedTypeReference__Group_1_4_2__0
         {
         pushFollow(FOLLOW_2);
         rule__JvmParameterizedTypeReference__Group_1_4_2__0();
@@ -66696,7 +68944,7 @@
 
         }
     }
-    // $ANTLR end synpred182_InternalSignalDSL
+    // $ANTLR end synpred188_InternalSignalDSL
 
     // Delegated rules
 
@@ -66714,11 +68962,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred9_InternalSignalDSL() {
+    public final boolean synpred62_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred9_InternalSignalDSL_fragment(); // can never throw exception
+            synpred62_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66728,11 +68976,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred118_InternalSignalDSL() {
+    public final boolean synpred176_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred118_InternalSignalDSL_fragment(); // can never throw exception
+            synpred176_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66756,11 +69004,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred120_InternalSignalDSL() {
+    public final boolean synpred130_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred120_InternalSignalDSL_fragment(); // can never throw exception
+            synpred130_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66770,11 +69018,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred135_InternalSignalDSL() {
+    public final boolean synpred125_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred135_InternalSignalDSL_fragment(); // can never throw exception
+            synpred125_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66784,11 +69032,25 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred115_InternalSignalDSL() {
+    public final boolean synpred128_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred115_InternalSignalDSL_fragment(); // can never throw exception
+            synpred128_InternalSignalDSL_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 synpred14_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred14_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66812,11 +69074,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred145_InternalSignalDSL() {
+    public final boolean synpred132_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred145_InternalSignalDSL_fragment(); // can never throw exception
+            synpred132_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66826,11 +69088,53 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred57_InternalSignalDSL() {
+    public final boolean synpred80_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred57_InternalSignalDSL_fragment(); // can never throw exception
+            synpred80_InternalSignalDSL_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 synpred151_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred151_InternalSignalDSL_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 synpred178_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalSignalDSL_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 synpred148_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred148_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66882,20 +69186,6 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred158_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred158_InternalSignalDSL_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 synpred171_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
@@ -66910,11 +69200,39 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred10_InternalSignalDSL() {
+    public final boolean synpred188_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred10_InternalSignalDSL_fragment(); // can never throw exception
+            synpred188_InternalSignalDSL_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 synpred40_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalSignalDSL_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 synpred141_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred141_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66938,25 +69256,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred182_InternalSignalDSL() {
+    public final boolean synpred13_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred182_InternalSignalDSL_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 synpred49_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred49_InternalSignalDSL_fragment(); // can never throw exception
+            synpred13_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -66994,11 +69298,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred36_InternalSignalDSL() {
+    public final boolean synpred185_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred36_InternalSignalDSL_fragment(); // can never throw exception
+            synpred185_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67008,11 +69312,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred117_InternalSignalDSL() {
+    public final boolean synpred53_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred117_InternalSignalDSL_fragment(); // can never throw exception
+            synpred53_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67022,11 +69326,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred8_InternalSignalDSL() {
+    public final boolean synpred61_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred8_InternalSignalDSL_fragment(); // can never throw exception
+            synpred61_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67036,11 +69340,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred175_InternalSignalDSL() {
+    public final boolean synpred39_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred175_InternalSignalDSL_fragment(); // can never throw exception
+            synpred39_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67050,11 +69354,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred71_InternalSignalDSL() {
+    public final boolean synpred177_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred71_InternalSignalDSL_fragment(); // can never throw exception
+            synpred177_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67064,11 +69368,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred76_InternalSignalDSL() {
+    public final boolean synpred86_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred76_InternalSignalDSL_fragment(); // can never throw exception
+            synpred86_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67078,11 +69382,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred172_InternalSignalDSL() {
+    public final boolean synpred187_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred172_InternalSignalDSL_fragment(); // can never throw exception
+            synpred187_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67092,11 +69396,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred142_InternalSignalDSL() {
+    public final boolean synpred79_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred142_InternalSignalDSL_fragment(); // can never throw exception
+            synpred79_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67106,39 +69410,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred116_InternalSignalDSL() {
+    public final boolean synpred12_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred116_InternalSignalDSL_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_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred113_InternalSignalDSL_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 synpred159_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred159_InternalSignalDSL_fragment(); // can never throw exception
+            synpred12_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67176,11 +69452,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred119_InternalSignalDSL() {
+    public final boolean synpred169_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred119_InternalSignalDSL_fragment(); // can never throw exception
+            synpred169_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67190,11 +69466,25 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred35_InternalSignalDSL() {
+    public final boolean synpred133_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred35_InternalSignalDSL_fragment(); // can never throw exception
+            synpred133_InternalSignalDSL_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 synpred119_InternalSignalDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred119_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67218,53 +69508,11 @@
         state.failed=false;
         return success;
     }
-    public final boolean synpred58_InternalSignalDSL() {
+    public final boolean synpred129_InternalSignalDSL() {
         state.backtracking++;
         int start = input.mark();
         try {
-            synpred58_InternalSignalDSL_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 synpred163_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred163_InternalSignalDSL_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 synpred82_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred82_InternalSignalDSL_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 synpred173_InternalSignalDSL() {
-        state.backtracking++;
-        int start = input.mark();
-        try {
-            synpred173_InternalSignalDSL_fragment(); // can never throw exception
+            synpred129_InternalSignalDSL_fragment(); // can never throw exception
         } catch (RecognitionException re) {
             System.err.println("impossible: "+re);
         }
@@ -67276,46 +69524,46 @@
     }
 
 
-    protected DFA4 dfa4 = new DFA4(this);
-    protected DFA6 dfa6 = new DFA6(this);
+    protected DFA5 dfa5 = new DFA5(this);
     protected DFA7 dfa7 = new DFA7(this);
     protected DFA8 dfa8 = new DFA8(this);
-    protected DFA15 dfa15 = new DFA15(this);
-    protected DFA23 dfa23 = new DFA23(this);
-    protected DFA26 dfa26 = new DFA26(this);
+    protected DFA9 dfa9 = new DFA9(this);
+    protected DFA16 dfa16 = new DFA16(this);
+    protected DFA24 dfa24 = new DFA24(this);
     protected DFA27 dfa27 = new DFA27(this);
-    protected DFA30 dfa30 = new DFA30(this);
-    protected DFA35 dfa35 = new DFA35(this);
-    protected DFA38 dfa38 = new DFA38(this);
-    protected DFA69 dfa69 = new DFA69(this);
-    protected DFA75 dfa75 = new DFA75(this);
-    protected DFA82 dfa82 = new DFA82(this);
-    protected DFA83 dfa83 = new DFA83(this);
-    protected DFA91 dfa91 = new DFA91(this);
-    protected DFA101 dfa101 = new DFA101(this);
-    protected DFA114 dfa114 = new DFA114(this);
-    protected DFA115 dfa115 = new DFA115(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA36 dfa36 = new DFA36(this);
+    protected DFA39 dfa39 = new DFA39(this);
+    protected DFA67 dfa67 = new DFA67(this);
+    protected DFA73 dfa73 = new DFA73(this);
+    protected DFA80 dfa80 = new DFA80(this);
+    protected DFA81 dfa81 = new DFA81(this);
+    protected DFA89 dfa89 = new DFA89(this);
+    protected DFA99 dfa99 = new DFA99(this);
+    protected DFA112 dfa112 = new DFA112(this);
+    protected DFA113 dfa113 = new DFA113(this);
+    protected DFA117 dfa117 = new DFA117(this);
+    protected DFA118 dfa118 = new DFA118(this);
     protected DFA119 dfa119 = new DFA119(this);
-    protected DFA120 dfa120 = new DFA120(this);
-    protected DFA121 dfa121 = new DFA121(this);
-    protected DFA126 dfa126 = new DFA126(this);
-    protected DFA135 dfa135 = new DFA135(this);
-    protected DFA138 dfa138 = new DFA138(this);
+    protected DFA124 dfa124 = new DFA124(this);
+    protected DFA133 dfa133 = new DFA133(this);
+    protected DFA136 dfa136 = new DFA136(this);
     static final String dfa_1s = "\10\uffff";
-    static final String dfa_2s = "\2\uffff\1\5\4\uffff\1\5";
-    static final String dfa_3s = "\1\4\1\uffff\1\53\1\uffff\1\4\2\uffff\1\53";
-    static final String dfa_4s = "\1\142\1\uffff\1\105\1\uffff\1\44\2\uffff\1\105";
-    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\3\1\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\3\uffff\1\5\1\uffff";
+    static final String dfa_3s = "\1\4\1\uffff\1\53\1\uffff\1\4\1\uffff\1\53\1\uffff";
+    static final String dfa_4s = "\1\153\1\uffff\1\116\1\uffff\1\44\1\uffff\1\116\1\uffff";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\uffff\1\3";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\51\uffff\1\1\63\uffff\1\3",
+            "\1\2\51\uffff\1\1\74\uffff\1\3",
             "",
-            "\1\4\3\uffff\1\5\13\uffff\1\5\11\uffff\1\5",
+            "\1\4\3\uffff\1\5\16\uffff\1\5\17\uffff\1\5",
             "",
-            "\1\7\37\uffff\1\6",
+            "\1\6\37\uffff\1\7",
             "",
-            "",
-            "\1\4\3\uffff\1\5\13\uffff\1\5\11\uffff\1\5"
+            "\1\4\3\uffff\1\5\16\uffff\1\5\17\uffff\1\5",
+            ""
     };
 
     static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
@@ -67326,11 +69574,11 @@
     static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
     static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
 
-    class DFA4 extends DFA {
+    class DFA5 extends DFA {
 
-        public DFA4(BaseRecognizer recognizer) {
+        public DFA5(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 4;
+            this.decisionNumber = 5;
             this.eot = dfa_1;
             this.eof = dfa_2;
             this.min = dfa_3;
@@ -67340,16 +69588,16 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "2423:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
+            return "2596:1: rule__XImportDeclaration__Alternatives_2 : ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) );";
         }
     }
     static final String dfa_8s = "\43\uffff";
     static final String dfa_9s = "\1\4\1\0\41\uffff";
-    static final String dfa_10s = "\1\147\1\0\41\uffff";
+    static final String dfa_10s = "\1\160\1\0\41\uffff";
     static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\1";
     static final String dfa_12s = "\1\uffff\1\0\41\uffff}>";
     static final String[] dfa_13s = {
-            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\11\uffff\1\2\3\uffff\1\2\5\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\10\2\1\uffff\1\2\10\uffff\1\2",
+            "\1\1\4\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\14\uffff\1\2\17\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\10\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -67393,11 +69641,11 @@
     static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
     static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
 
-    class DFA6 extends DFA {
+    class DFA7 extends DFA {
 
-        public DFA6(BaseRecognizer recognizer) {
+        public DFA7(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 6;
+            this.decisionNumber = 7;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_9;
@@ -67407,37 +69655,37 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "2477:1: rule__XAnnotation__Alternatives_3_1 : ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) );";
+            return "2650: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 LA6_1 = input.LA(1);
+                        int LA7_1 = input.LA(1);
 
                          
-                        int index6_1 = input.index();
+                        int index7_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred8_InternalSignalDSL()) ) {s = 34;}
+                        if ( (synpred12_InternalSignalDSL()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index6_1);
+                        input.seek(index7_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 6, _s, input);
+                new NoViableAltException(getDescription(), 7, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_14s = {
-            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\11\uffff\1\2\3\uffff\1\2\5\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\10\2\1\uffff\1\2\10\uffff\1\2",
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\14\uffff\1\2\17\uffff\2\2\3\uffff\1\1\1\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\10\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -67475,50 +69723,6 @@
     };
     static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);
 
-    class DFA7 extends DFA {
-
-        public DFA7(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 7;
-            this.eot = dfa_8;
-            this.eof = dfa_8;
-            this.min = dfa_9;
-            this.max = dfa_10;
-            this.accept = dfa_11;
-            this.special = dfa_12;
-            this.transition = dfa_14;
-        }
-        public String getDescription() {
-            return "2498: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 LA7_1 = input.LA(1);
-
-                         
-                        int index7_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred9_InternalSignalDSL()) ) {s = 34;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index7_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 7, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
     class DFA8 extends DFA {
 
         public DFA8(BaseRecognizer recognizer) {
@@ -67533,7 +69737,7 @@
             this.transition = dfa_14;
         }
         public String getDescription() {
-            return "2519:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );";
+            return "2671: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;
@@ -67546,7 +69750,7 @@
                         int index8_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred10_InternalSignalDSL()) ) {s = 34;}
+                        if ( (synpred13_InternalSignalDSL()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -67562,16 +69766,60 @@
             throw nvae;
         }
     }
+
+    class DFA9 extends DFA {
+
+        public DFA9(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 9;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_14;
+        }
+        public String getDescription() {
+            return "2692: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 LA9_1 = input.LA(1);
+
+                         
+                        int index9_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred14_InternalSignalDSL()) ) {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 dfa_15s = "\13\uffff";
     static final String dfa_16s = "\1\32\2\uffff\1\32\7\uffff";
     static final String dfa_17s = "\1\41\2\uffff\1\36\7\uffff";
-    static final String dfa_18s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\3\1\6";
+    static final String dfa_18s = "\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 dfa_19s = "\13\uffff}>";
     static final String[] dfa_20s = {
             "\1\3\1\6\1\1\1\2\1\4\1\5\1\7\1\10",
             "",
             "",
-            "\1\12\3\uffff\1\11",
+            "\1\11\3\uffff\1\12",
             "",
             "",
             "",
@@ -67588,11 +69836,11 @@
     static final short[] dfa_19 = DFA.unpackEncodedString(dfa_19s);
     static final short[][] dfa_20 = unpackEncodedStringArray(dfa_20s);
 
-    class DFA15 extends DFA {
+    class DFA16 extends DFA {
 
-        public DFA15(BaseRecognizer recognizer) {
+        public DFA16(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 15;
+            this.decisionNumber = 16;
             this.eot = dfa_15;
             this.eof = dfa_15;
             this.min = dfa_16;
@@ -67602,25 +69850,25 @@
             this.transition = dfa_20;
         }
         public String getDescription() {
-            return "2720:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+            return "2893:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
         }
     }
     static final String dfa_21s = "\12\uffff";
     static final String dfa_22s = "\4\uffff\5\3\1\uffff";
     static final String dfa_23s = "\1\53\2\4\1\uffff\5\4\1\uffff";
-    static final String dfa_24s = "\1\144\2\61\1\uffff\5\147\1\uffff";
+    static final String dfa_24s = "\1\155\2\61\1\uffff\5\160\1\uffff";
     static final String dfa_25s = "\3\uffff\1\2\5\uffff\1\1";
     static final String dfa_26s = "\12\uffff}>";
     static final String[] dfa_27s = {
-            "\1\1\67\uffff\1\2\1\3",
+            "\1\1\100\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\11\uffff\2\3\2\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\11\uffff\2\3\2\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\11\uffff\2\3\2\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\11\uffff\2\3\2\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
-            "\5\3\4\uffff\1\11\45\3\11\uffff\2\3\2\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\14\uffff\2\3\10\uffff\1\3\4\uffff\1\3\1\uffff\31\3\3\uffff\2\3\1\uffff\2\3",
             ""
     };
 
@@ -67632,11 +69880,11 @@
     static final short[] dfa_26 = DFA.unpackEncodedString(dfa_26s);
     static final short[][] dfa_27 = unpackEncodedStringArray(dfa_27s);
 
-    class DFA23 extends DFA {
+    class DFA24 extends DFA {
 
-        public DFA23(BaseRecognizer recognizer) {
+        public DFA24(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 23;
+            this.decisionNumber = 24;
             this.eot = dfa_21;
             this.eof = dfa_22;
             this.min = dfa_23;
@@ -67646,15 +69894,15 @@
             this.transition = dfa_27;
         }
         public String getDescription() {
-            return "2954:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+            return "3127:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
         }
     }
     static final String dfa_28s = "\1\4\2\0\40\uffff";
-    static final String dfa_29s = "\1\147\2\0\40\uffff";
+    static final String dfa_29s = "\1\160\2\0\40\uffff";
     static final String dfa_30s = "\3\uffff\1\1\1\uffff\1\2\35\uffff";
     static final String dfa_31s = "\1\uffff\1\0\1\1\40\uffff}>";
     static final String[] dfa_32s = {
-            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\11\uffff\1\5\3\uffff\1\5\6\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\3\uffff\10\5\1\uffff\1\5\6\uffff\1\3\1\uffff\1\5",
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\14\uffff\1\5\20\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\2\uffff\11\5\1\uffff\1\5\6\uffff\1\3\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -67696,11 +69944,11 @@
     static final short[] dfa_31 = DFA.unpackEncodedString(dfa_31s);
     static final short[][] dfa_32 = unpackEncodedStringArray(dfa_32s);
 
-    class DFA26 extends DFA {
+    class DFA27 extends DFA {
 
-        public DFA26(BaseRecognizer recognizer) {
+        public DFA27(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 26;
+            this.decisionNumber = 27;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_28;
@@ -67710,57 +69958,57 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3023: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 ) ) );";
+            return "3196: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 LA26_1 = input.LA(1);
+                        int LA27_1 = input.LA(1);
 
                          
-                        int index26_1 = input.index();
+                        int index27_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred49_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred53_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index26_1);
+                        input.seek(index27_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA26_2 = input.LA(1);
+                        int LA27_2 = input.LA(1);
 
                          
-                        int index26_2 = input.index();
+                        int index27_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred49_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred53_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index26_2);
+                        input.seek(index27_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 26, _s, input);
+                new NoViableAltException(getDescription(), 27, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_33s = "\40\uffff";
     static final String dfa_34s = "\1\4\26\uffff\1\0\10\uffff";
-    static final String dfa_35s = "\1\147\26\uffff\1\0\10\uffff";
+    static final String dfa_35s = "\1\160\26\uffff\1\0\10\uffff";
     static final String dfa_36s = "\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 dfa_37s = "\27\uffff\1\0\10\uffff}>";
     static final String[] dfa_38s = {
-            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\11\uffff\1\2\3\uffff\1\27\6\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\10\uffff\1\14",
+            "\1\5\4\14\22\uffff\1\5\21\uffff\5\5\1\14\14\uffff\1\2\20\uffff\1\35\3\uffff\2\14\2\uffff\1\26\1\uffff\1\3\2\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\10\uffff\1\14",
             "",
             "",
             "",
@@ -67801,11 +70049,11 @@
     static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
     static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
 
-    class DFA27 extends DFA {
+    class DFA28 extends DFA {
 
-        public DFA27(BaseRecognizer recognizer) {
+        public DFA28(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 27;
+            this.decisionNumber = 28;
             this.eot = dfa_33;
             this.eof = dfa_33;
             this.min = dfa_34;
@@ -67815,37 +70063,37 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "3044:1: rule__XPrimaryExpression__Alternatives : ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) );";
+            return "3217: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 LA27_23 = input.LA(1);
+                        int LA28_23 = input.LA(1);
 
                          
-                        int index27_23 = input.index();
+                        int index28_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred57_InternalSignalDSL()) ) {s = 30;}
+                        if ( (synpred61_InternalSignalDSL()) ) {s = 30;}
 
-                        else if ( (synpred58_InternalSignalDSL()) ) {s = 31;}
+                        else if ( (synpred62_InternalSignalDSL()) ) {s = 31;}
 
                          
-                        input.seek(index27_23);
+                        input.seek(index28_23);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 27, _s, input);
+                new NoViableAltException(getDescription(), 28, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_39s = {
-            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\11\uffff\1\2\3\uffff\1\2\6\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\10\2\1\uffff\1\2\10\uffff\1\2",
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\14\uffff\1\2\20\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\2\uffff\11\2\1\uffff\1\2\10\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -67883,11 +70131,11 @@
     };
     static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);
 
-    class DFA30 extends DFA {
+    class DFA31 extends DFA {
 
-        public DFA30(BaseRecognizer recognizer) {
+        public DFA31(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 30;
+            this.decisionNumber = 31;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_9;
@@ -67897,41 +70145,41 @@
             this.transition = dfa_39;
         }
         public String getDescription() {
-            return "3215:1: rule__XSwitchExpression__Alternatives_2 : ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) );";
+            return "3388: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 LA30_1 = input.LA(1);
+                        int LA31_1 = input.LA(1);
 
                          
-                        int index30_1 = input.index();
+                        int index31_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred71_InternalSignalDSL()) ) {s = 34;}
+                        if ( (synpred75_InternalSignalDSL()) ) {s = 34;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index30_1);
+                        input.seek(index31_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 30, _s, input);
+                new NoViableAltException(getDescription(), 31, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA35 extends DFA {
+    class DFA36 extends DFA {
 
-        public DFA35(BaseRecognizer recognizer) {
+        public DFA36(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 35;
+            this.decisionNumber = 36;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_28;
@@ -67941,56 +70189,56 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3320:1: rule__XFeatureCall__Alternatives_3_1 : ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) );";
+            return "3493: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 LA35_1 = input.LA(1);
+                        int LA36_1 = input.LA(1);
 
                          
-                        int index35_1 = input.index();
+                        int index36_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred76_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred80_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index35_1);
+                        input.seek(index36_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA35_2 = input.LA(1);
+                        int LA36_2 = input.LA(1);
 
                          
-                        int index35_2 = input.index();
+                        int index36_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred76_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred80_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index35_2);
+                        input.seek(index36_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 35, _s, input);
+                new NoViableAltException(getDescription(), 36, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA38 extends DFA {
+    class DFA39 extends DFA {
 
-        public DFA38(BaseRecognizer recognizer) {
+        public DFA39(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 38;
+            this.decisionNumber = 39;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_28;
@@ -68000,57 +70248,57 @@
             this.transition = dfa_32;
         }
         public String getDescription() {
-            return "3401:1: rule__XConstructorCall__Alternatives_4_1 : ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) );";
+            return "3574: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 LA38_1 = input.LA(1);
+                        int LA39_1 = input.LA(1);
 
                          
-                        int index38_1 = input.index();
+                        int index39_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred82_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred86_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index38_1);
+                        input.seek(index39_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA38_2 = input.LA(1);
+                        int LA39_2 = input.LA(1);
 
                          
-                        int index38_2 = input.index();
+                        int index39_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred82_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred86_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index38_2);
+                        input.seek(index39_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 38, _s, input);
+                new NoViableAltException(getDescription(), 39, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_40s = "\1\10\11\uffff";
     static final String dfa_41s = "\1\4\7\0\2\uffff";
-    static final String dfa_42s = "\1\147\7\0\2\uffff";
+    static final String dfa_42s = "\1\160\7\0\2\uffff";
     static final String dfa_43s = "\10\uffff\1\2\1\1";
-    static final String dfa_44s = "\1\uffff\1\1\1\0\1\6\1\4\1\2\1\5\1\3\2\uffff}>";
+    static final String dfa_44s = "\1\uffff\1\2\1\5\1\6\1\1\1\3\1\4\1\0\2\uffff}>";
     static final String[] dfa_45s = {
-            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\11\uffff\2\10\2\uffff\1\10\4\uffff\1\10\1\uffff\31\10\3\uffff\2\10\1\uffff\2\10",
+            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\14\uffff\2\10\10\uffff\1\10\4\uffff\1\10\1\uffff\31\10\3\uffff\2\10\1\uffff\2\10",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -68068,11 +70316,11 @@
     static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
     static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
 
-    class DFA69 extends DFA {
+    class DFA67 extends DFA {
 
-        public DFA69(BaseRecognizer recognizer) {
+        public DFA67(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 69;
+            this.decisionNumber = 67;
             this.eot = dfa_21;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -68082,132 +70330,132 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "6264:2: ( rule__XAssignment__Group_1_1__0 )?";
+            return "6851:2: ( 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 LA69_2 = input.LA(1);
+                        int LA67_7 = input.LA(1);
 
                          
-                        int index69_2 = input.index();
+                        int index67_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_2);
+                        input.seek(index67_7);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA69_1 = input.LA(1);
+                        int LA67_4 = input.LA(1);
 
                          
-                        int index69_1 = input.index();
+                        int index67_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_1);
+                        input.seek(index67_4);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA69_5 = input.LA(1);
+                        int LA67_1 = input.LA(1);
 
                          
-                        int index69_5 = input.index();
+                        int index67_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_5);
+                        input.seek(index67_1);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA69_7 = input.LA(1);
+                        int LA67_5 = input.LA(1);
 
                          
-                        int index69_7 = input.index();
+                        int index67_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_7);
+                        input.seek(index67_5);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA69_4 = input.LA(1);
+                        int LA67_6 = input.LA(1);
 
                          
-                        int index69_4 = input.index();
+                        int index67_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_4);
+                        input.seek(index67_6);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA69_6 = input.LA(1);
+                        int LA67_2 = input.LA(1);
 
                          
-                        int index69_6 = input.index();
+                        int index67_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_6);
+                        input.seek(index67_2);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA69_3 = input.LA(1);
+                        int LA67_3 = input.LA(1);
 
                          
-                        int index69_3 = input.index();
+                        int index67_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred113_InternalSignalDSL()) ) {s = 9;}
+                        if ( (synpred119_InternalSignalDSL()) ) {s = 9;}
 
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index69_3);
+                        input.seek(index67_3);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 69, _s, input);
+                new NoViableAltException(getDescription(), 67, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_46s = "\1\1\12\uffff";
     static final String dfa_47s = "\1\4\1\uffff\10\0\1\uffff";
-    static final String dfa_48s = "\1\147\1\uffff\10\0\1\uffff";
+    static final String dfa_48s = "\1\160\1\uffff\10\0\1\uffff";
     static final String dfa_49s = "\1\uffff\1\2\10\uffff\1\1";
-    static final String dfa_50s = "\2\uffff\1\6\1\5\1\3\1\1\1\7\1\0\1\4\1\2\1\uffff}>";
+    static final String dfa_50s = "\2\uffff\1\0\1\7\1\6\1\1\1\4\1\3\1\5\1\2\1\uffff}>";
     static final String[] dfa_51s = {
-            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\11\uffff\2\1\2\uffff\1\1\4\uffff\1\1\1\uffff\31\1\3\uffff\2\1\1\uffff\2\1",
+            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\14\uffff\2\1\10\uffff\1\1\4\uffff\1\1\1\uffff\31\1\3\uffff\2\1\1\uffff\2\1",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -68226,11 +70474,11 @@
     static final short[] dfa_50 = DFA.unpackEncodedString(dfa_50s);
     static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
 
-    class DFA75 extends DFA {
+    class DFA73 extends DFA {
 
-        public DFA75(BaseRecognizer recognizer) {
+        public DFA73(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 75;
+            this.decisionNumber = 73;
             this.eot = dfa_15;
             this.eof = dfa_46;
             this.min = dfa_47;
@@ -68240,136 +70488,136 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "()* loopback of 7560:2: ( rule__XOtherOperatorExpression__Group_1__0 )*";
+            return "()* loopback of 8147:2: ( 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 LA75_7 = input.LA(1);
+                        int LA73_2 = input.LA(1);
 
                          
-                        int index75_7 = input.index();
+                        int index73_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_7);
+                        input.seek(index73_2);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA75_5 = input.LA(1);
+                        int LA73_5 = input.LA(1);
 
                          
-                        int index75_5 = input.index();
+                        int index73_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_5);
+                        input.seek(index73_5);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA75_9 = input.LA(1);
+                        int LA73_9 = input.LA(1);
 
                          
-                        int index75_9 = input.index();
+                        int index73_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_9);
+                        input.seek(index73_9);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA75_4 = input.LA(1);
+                        int LA73_7 = input.LA(1);
 
                          
-                        int index75_4 = input.index();
+                        int index73_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_4);
+                        input.seek(index73_7);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA75_8 = input.LA(1);
+                        int LA73_6 = input.LA(1);
 
                          
-                        int index75_8 = input.index();
+                        int index73_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_8);
+                        input.seek(index73_6);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA75_3 = input.LA(1);
+                        int LA73_8 = input.LA(1);
 
                          
-                        int index75_3 = input.index();
+                        int index73_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_3);
+                        input.seek(index73_8);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA75_2 = input.LA(1);
+                        int LA73_4 = input.LA(1);
 
                          
-                        int index75_2 = input.index();
+                        int index73_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_2);
+                        input.seek(index73_4);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA75_6 = input.LA(1);
+                        int LA73_3 = input.LA(1);
 
                          
-                        int index75_6 = input.index();
+                        int index73_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred119_InternalSignalDSL()) ) {s = 10;}
+                        if ( (synpred125_InternalSignalDSL()) ) {s = 10;}
 
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index75_6);
+                        input.seek(index73_3);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 75, _s, input);
+                new NoViableAltException(getDescription(), 73, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -68377,11 +70625,11 @@
     static final String dfa_52s = "\116\uffff";
     static final String dfa_53s = "\1\2\115\uffff";
     static final String dfa_54s = "\1\4\1\0\114\uffff";
-    static final String dfa_55s = "\1\147\1\0\114\uffff";
+    static final String dfa_55s = "\1\160\1\0\114\uffff";
     static final String dfa_56s = "\2\uffff\1\2\112\uffff\1\1";
     static final String dfa_57s = "\1\uffff\1\0\114\uffff}>";
     static final String[] dfa_58s = {
-            "\5\2\5\uffff\45\2\11\uffff\2\2\2\uffff\1\2\4\uffff\1\2\1\uffff\1\1\30\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\45\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\1\1\30\2\3\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -68469,11 +70717,11 @@
     static final short[] dfa_57 = DFA.unpackEncodedString(dfa_57s);
     static final short[][] dfa_58 = unpackEncodedStringArray(dfa_58s);
 
-    class DFA82 extends DFA {
+    class DFA80 extends DFA {
 
-        public DFA82(BaseRecognizer recognizer) {
+        public DFA80(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 82;
+            this.decisionNumber = 80;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -68483,37 +70731,37 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "9154:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?";
+            return "9741:2: ( 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 LA82_1 = input.LA(1);
+                        int LA80_1 = input.LA(1);
 
                          
-                        int index82_1 = input.index();
+                        int index80_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred126_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred132_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index82_1);
+                        input.seek(index80_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 82, _s, input);
+                new NoViableAltException(getDescription(), 80, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_59s = {
-            "\5\2\5\uffff\45\2\11\uffff\2\2\2\uffff\1\2\4\uffff\1\2\1\uffff\5\2\1\1\23\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\45\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\5\2\1\1\23\2\3\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -68594,11 +70842,11 @@
     };
     static final short[][] dfa_59 = unpackEncodedStringArray(dfa_59s);
 
-    class DFA83 extends DFA {
+    class DFA81 extends DFA {
 
-        public DFA83(BaseRecognizer recognizer) {
+        public DFA81(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 83;
+            this.decisionNumber = 81;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -68608,42 +70856,42 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "9180:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?";
+            return "9767:2: ( 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 LA83_1 = input.LA(1);
+                        int LA81_1 = input.LA(1);
 
                          
-                        int index83_1 = input.index();
+                        int index81_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred127_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred133_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index83_1);
+                        input.seek(index81_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 83, _s, input);
+                new NoViableAltException(getDescription(), 81, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_60s = "\46\uffff";
     static final String dfa_61s = "\1\4\2\0\43\uffff";
-    static final String dfa_62s = "\1\147\2\0\43\uffff";
+    static final String dfa_62s = "\1\160\2\0\43\uffff";
     static final String dfa_63s = "\3\uffff\1\1\1\uffff\1\2\40\uffff";
     static final String dfa_64s = "\1\uffff\1\0\1\1\43\uffff}>";
     static final String[] dfa_65s = {
-            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\11\uffff\1\5\3\uffff\1\5\6\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\3\uffff\10\5\1\uffff\1\5\6\uffff\1\3\2\5",
+            "\1\1\4\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\14\uffff\1\5\20\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\2\uffff\11\5\1\uffff\1\5\6\uffff\1\3\2\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -68690,11 +70938,11 @@
     static final short[] dfa_64 = DFA.unpackEncodedString(dfa_64s);
     static final short[][] dfa_65 = unpackEncodedStringArray(dfa_65s);
 
-    class DFA91 extends DFA {
+    class DFA89 extends DFA {
 
-        public DFA91(BaseRecognizer recognizer) {
+        public DFA89(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 91;
+            this.decisionNumber = 89;
             this.eot = dfa_60;
             this.eof = dfa_60;
             this.min = dfa_61;
@@ -68704,57 +70952,57 @@
             this.transition = dfa_65;
         }
         public String getDescription() {
-            return "10153:2: ( rule__XClosure__Group_1__0 )?";
+            return "10740:2: ( 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 LA91_1 = input.LA(1);
+                        int LA89_1 = input.LA(1);
 
                          
-                        int index91_1 = input.index();
+                        int index89_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred135_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred141_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index91_1);
+                        input.seek(index89_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA91_2 = input.LA(1);
+                        int LA89_2 = input.LA(1);
 
                          
-                        int index91_2 = input.index();
+                        int index89_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred135_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred141_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index91_2);
+                        input.seek(index89_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 91, _s, input);
+                new NoViableAltException(getDescription(), 89, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_66s = "\42\uffff";
     static final String dfa_67s = "\1\4\2\0\37\uffff";
-    static final String dfa_68s = "\1\147\2\0\37\uffff";
+    static final String dfa_68s = "\1\160\2\0\37\uffff";
     static final String dfa_69s = "\3\uffff\1\1\1\2\35\uffff";
     static final String dfa_70s = "\1\uffff\1\0\1\1\37\uffff}>";
     static final String[] dfa_71s = {
-            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\11\uffff\1\4\3\uffff\1\4\6\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\3\uffff\10\4\1\uffff\1\4\10\uffff\1\4",
+            "\1\1\4\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\14\uffff\1\4\20\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\2\uffff\11\4\1\uffff\1\4\10\uffff\1\4",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -68797,11 +71045,11 @@
     static final short[] dfa_70 = DFA.unpackEncodedString(dfa_70s);
     static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
 
-    class DFA101 extends DFA {
+    class DFA99 extends DFA {
 
-        public DFA101(BaseRecognizer recognizer) {
+        public DFA99(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 101;
+            this.decisionNumber = 99;
             this.eot = dfa_66;
             this.eof = dfa_66;
             this.min = dfa_67;
@@ -68811,56 +71059,56 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "11584:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?";
+            return "12171:2: ( 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 LA101_1 = input.LA(1);
+                        int LA99_1 = input.LA(1);
 
                          
-                        int index101_1 = input.index();
+                        int index99_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred145_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred151_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index101_1);
+                        input.seek(index99_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA101_2 = input.LA(1);
+                        int LA99_2 = input.LA(1);
 
                          
-                        int index101_2 = input.index();
+                        int index99_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred145_InternalSignalDSL()) ) {s = 3;}
+                        if ( (synpred151_InternalSignalDSL()) ) {s = 3;}
 
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index101_2);
+                        input.seek(index99_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 101, _s, input);
+                new NoViableAltException(getDescription(), 99, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA114 extends DFA {
+    class DFA112 extends DFA {
 
-        public DFA114(BaseRecognizer recognizer) {
+        public DFA112(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 114;
+            this.decisionNumber = 112;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -68870,41 +71118,41 @@
             this.transition = dfa_58;
         }
         public String getDescription() {
-            return "13717:2: ( rule__XFeatureCall__Group_3__0 )?";
+            return "14304:2: ( 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 LA114_1 = input.LA(1);
+                        int LA112_1 = input.LA(1);
 
                          
-                        int index114_1 = input.index();
+                        int index112_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred158_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred164_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index114_1);
+                        input.seek(index112_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 114, _s, input);
+                new NoViableAltException(getDescription(), 112, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA115 extends DFA {
+    class DFA113 extends DFA {
 
-        public DFA115(BaseRecognizer recognizer) {
+        public DFA113(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 115;
+            this.decisionNumber = 113;
             this.eot = dfa_52;
             this.eof = dfa_53;
             this.min = dfa_54;
@@ -68914,37 +71162,37 @@
             this.transition = dfa_59;
         }
         public String getDescription() {
-            return "13743:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?";
+            return "14330:2: ( 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 LA115_1 = input.LA(1);
+                        int LA113_1 = input.LA(1);
 
                          
-                        int index115_1 = input.index();
+                        int index113_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred159_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred165_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index115_1);
+                        input.seek(index113_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 115, _s, input);
+                new NoViableAltException(getDescription(), 113, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_72s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\11\uffff\2\2\2\uffff\1\2\4\uffff\1\2\1\uffff\31\2\3\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\15\2\1\1\27\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\31\2\3\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -69025,6 +71273,94 @@
     };
     static final short[][] dfa_72 = unpackEncodedStringArray(dfa_72s);
 
+    class DFA117 extends DFA {
+
+        public DFA117(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 117;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_72;
+        }
+        public String getDescription() {
+            return "14790:2: ( 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 LA117_1 = input.LA(1);
+
+                         
+                        int index117_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred169_InternalSignalDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index117_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 117, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA118 extends DFA {
+
+        public DFA118(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 118;
+            this.eot = dfa_52;
+            this.eof = dfa_53;
+            this.min = dfa_54;
+            this.max = dfa_55;
+            this.accept = dfa_56;
+            this.special = dfa_57;
+            this.transition = dfa_58;
+        }
+        public String getDescription() {
+            return "14817:2: ( 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 LA118_1 = input.LA(1);
+
+                         
+                        int index118_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index118_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 118, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
     class DFA119 extends DFA {
 
         public DFA119(BaseRecognizer recognizer) {
@@ -69036,10 +71372,10 @@
             this.max = dfa_55;
             this.accept = dfa_56;
             this.special = dfa_57;
-            this.transition = dfa_72;
+            this.transition = dfa_59;
         }
         public String getDescription() {
-            return "14203:2: ( rule__XConstructorCall__Group_3__0 )?";
+            return "14843:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -69052,7 +71388,7 @@
                         int index119_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred163_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred171_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -69068,101 +71404,13 @@
             throw nvae;
         }
     }
-
-    class DFA120 extends DFA {
-
-        public DFA120(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 120;
-            this.eot = dfa_52;
-            this.eof = dfa_53;
-            this.min = dfa_54;
-            this.max = dfa_55;
-            this.accept = dfa_56;
-            this.special = dfa_57;
-            this.transition = dfa_58;
-        }
-        public String getDescription() {
-            return "14230:2: ( 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 LA120_1 = input.LA(1);
-
-                         
-                        int index120_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred164_InternalSignalDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index120_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 120, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
-    class DFA121 extends DFA {
-
-        public DFA121(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 121;
-            this.eot = dfa_52;
-            this.eof = dfa_53;
-            this.min = dfa_54;
-            this.max = dfa_55;
-            this.accept = dfa_56;
-            this.special = dfa_57;
-            this.transition = dfa_59;
-        }
-        public String getDescription() {
-            return "14256:2: ( 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 LA121_1 = input.LA(1);
-
-                         
-                        int index121_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred165_InternalSignalDSL()) ) {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 dfa_73s = "\1\41\115\uffff";
     static final String dfa_74s = "\1\4\40\0\55\uffff";
-    static final String dfa_75s = "\1\147\40\0\55\uffff";
+    static final String dfa_75s = "\1\160\40\0\55\uffff";
     static final String dfa_76s = "\41\uffff\1\2\53\uffff\1\1";
     static final String dfa_77s = "\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[] dfa_78s = {
-            "\1\1\1\23\1\24\1\25\1\27\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\11\uffff\1\12\1\41\2\uffff\1\32\4\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\3\41\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\3\uffff\2\41\1\uffff\1\41\1\22",
+            "\1\1\1\23\1\24\1\25\1\27\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\14\uffff\1\12\1\41\10\uffff\1\41\4\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\2\41\1\31\1\41\1\13\2\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\3\uffff\2\41\1\uffff\1\41\1\22",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -69248,11 +71496,11 @@
     static final short[] dfa_77 = DFA.unpackEncodedString(dfa_77s);
     static final short[][] dfa_78 = unpackEncodedStringArray(dfa_78s);
 
-    class DFA126 extends DFA {
+    class DFA124 extends DFA {
 
-        public DFA126(BaseRecognizer recognizer) {
+        public DFA124(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 126;
+            this.decisionNumber = 124;
             this.eot = dfa_52;
             this.eof = dfa_73;
             this.min = dfa_74;
@@ -69262,496 +71510,496 @@
             this.transition = dfa_78;
         }
         public String getDescription() {
-            return "15147:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?";
+            return "15734:2: ( 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 LA126_1 = input.LA(1);
+                        int LA124_1 = input.LA(1);
 
                          
-                        int index126_1 = input.index();
+                        int index124_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_1);
+                        input.seek(index124_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA126_2 = input.LA(1);
+                        int LA124_2 = input.LA(1);
 
                          
-                        int index126_2 = input.index();
+                        int index124_2 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_2);
+                        input.seek(index124_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA126_3 = input.LA(1);
+                        int LA124_3 = input.LA(1);
 
                          
-                        int index126_3 = input.index();
+                        int index124_3 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_3);
+                        input.seek(index124_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA126_4 = input.LA(1);
+                        int LA124_4 = input.LA(1);
 
                          
-                        int index126_4 = input.index();
+                        int index124_4 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_4);
+                        input.seek(index124_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA126_5 = input.LA(1);
+                        int LA124_5 = input.LA(1);
 
                          
-                        int index126_5 = input.index();
+                        int index124_5 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_5);
+                        input.seek(index124_5);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA126_6 = input.LA(1);
+                        int LA124_6 = input.LA(1);
 
                          
-                        int index126_6 = input.index();
+                        int index124_6 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_6);
+                        input.seek(index124_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA126_7 = input.LA(1);
+                        int LA124_7 = input.LA(1);
 
                          
-                        int index126_7 = input.index();
+                        int index124_7 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_7);
+                        input.seek(index124_7);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA126_8 = input.LA(1);
+                        int LA124_8 = input.LA(1);
 
                          
-                        int index126_8 = input.index();
+                        int index124_8 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_8);
+                        input.seek(index124_8);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA126_9 = input.LA(1);
+                        int LA124_9 = input.LA(1);
 
                          
-                        int index126_9 = input.index();
+                        int index124_9 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_9);
+                        input.seek(index124_9);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA126_10 = input.LA(1);
+                        int LA124_10 = input.LA(1);
 
                          
-                        int index126_10 = input.index();
+                        int index124_10 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_10);
+                        input.seek(index124_10);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA126_11 = input.LA(1);
+                        int LA124_11 = input.LA(1);
 
                          
-                        int index126_11 = input.index();
+                        int index124_11 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_11);
+                        input.seek(index124_11);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA126_12 = input.LA(1);
+                        int LA124_12 = input.LA(1);
 
                          
-                        int index126_12 = input.index();
+                        int index124_12 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_12);
+                        input.seek(index124_12);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA126_13 = input.LA(1);
+                        int LA124_13 = input.LA(1);
 
                          
-                        int index126_13 = input.index();
+                        int index124_13 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_13);
+                        input.seek(index124_13);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA126_14 = input.LA(1);
+                        int LA124_14 = input.LA(1);
 
                          
-                        int index126_14 = input.index();
+                        int index124_14 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_14);
+                        input.seek(index124_14);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA126_15 = input.LA(1);
+                        int LA124_15 = input.LA(1);
 
                          
-                        int index126_15 = input.index();
+                        int index124_15 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_15);
+                        input.seek(index124_15);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA126_16 = input.LA(1);
+                        int LA124_16 = input.LA(1);
 
                          
-                        int index126_16 = input.index();
+                        int index124_16 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_16);
+                        input.seek(index124_16);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA126_17 = input.LA(1);
+                        int LA124_17 = input.LA(1);
 
                          
-                        int index126_17 = input.index();
+                        int index124_17 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_17);
+                        input.seek(index124_17);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA126_18 = input.LA(1);
+                        int LA124_18 = input.LA(1);
 
                          
-                        int index126_18 = input.index();
+                        int index124_18 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_18);
+                        input.seek(index124_18);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA126_19 = input.LA(1);
+                        int LA124_19 = input.LA(1);
 
                          
-                        int index126_19 = input.index();
+                        int index124_19 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_19);
+                        input.seek(index124_19);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA126_20 = input.LA(1);
+                        int LA124_20 = input.LA(1);
 
                          
-                        int index126_20 = input.index();
+                        int index124_20 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_20);
+                        input.seek(index124_20);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA126_21 = input.LA(1);
+                        int LA124_21 = input.LA(1);
 
                          
-                        int index126_21 = input.index();
+                        int index124_21 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_21);
+                        input.seek(index124_21);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA126_22 = input.LA(1);
+                        int LA124_22 = input.LA(1);
 
                          
-                        int index126_22 = input.index();
+                        int index124_22 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_22);
+                        input.seek(index124_22);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA126_23 = input.LA(1);
+                        int LA124_23 = input.LA(1);
 
                          
-                        int index126_23 = input.index();
+                        int index124_23 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_23);
+                        input.seek(index124_23);
                         if ( s>=0 ) return s;
                         break;
                     case 23 : 
-                        int LA126_24 = input.LA(1);
+                        int LA124_24 = input.LA(1);
 
                          
-                        int index126_24 = input.index();
+                        int index124_24 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_24);
+                        input.seek(index124_24);
                         if ( s>=0 ) return s;
                         break;
                     case 24 : 
-                        int LA126_25 = input.LA(1);
+                        int LA124_25 = input.LA(1);
 
                          
-                        int index126_25 = input.index();
+                        int index124_25 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_25);
+                        input.seek(index124_25);
                         if ( s>=0 ) return s;
                         break;
                     case 25 : 
-                        int LA126_26 = input.LA(1);
+                        int LA124_26 = input.LA(1);
 
                          
-                        int index126_26 = input.index();
+                        int index124_26 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_26);
+                        input.seek(index124_26);
                         if ( s>=0 ) return s;
                         break;
                     case 26 : 
-                        int LA126_27 = input.LA(1);
+                        int LA124_27 = input.LA(1);
 
                          
-                        int index126_27 = input.index();
+                        int index124_27 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_27);
+                        input.seek(index124_27);
                         if ( s>=0 ) return s;
                         break;
                     case 27 : 
-                        int LA126_28 = input.LA(1);
+                        int LA124_28 = input.LA(1);
 
                          
-                        int index126_28 = input.index();
+                        int index124_28 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_28);
+                        input.seek(index124_28);
                         if ( s>=0 ) return s;
                         break;
                     case 28 : 
-                        int LA126_29 = input.LA(1);
+                        int LA124_29 = input.LA(1);
 
                          
-                        int index126_29 = input.index();
+                        int index124_29 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_29);
+                        input.seek(index124_29);
                         if ( s>=0 ) return s;
                         break;
                     case 29 : 
-                        int LA126_30 = input.LA(1);
+                        int LA124_30 = input.LA(1);
 
                          
-                        int index126_30 = input.index();
+                        int index124_30 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_30);
+                        input.seek(index124_30);
                         if ( s>=0 ) return s;
                         break;
                     case 30 : 
-                        int LA126_31 = input.LA(1);
+                        int LA124_31 = input.LA(1);
 
                          
-                        int index126_31 = input.index();
+                        int index124_31 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_31);
+                        input.seek(index124_31);
                         if ( s>=0 ) return s;
                         break;
                     case 31 : 
-                        int LA126_32 = input.LA(1);
+                        int LA124_32 = input.LA(1);
 
                          
-                        int index126_32 = input.index();
+                        int index124_32 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred170_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred176_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index126_32);
+                        input.seek(index124_32);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 126, _s, input);
+                new NoViableAltException(getDescription(), 124, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -69759,11 +72007,11 @@
     static final String dfa_79s = "\117\uffff";
     static final String dfa_80s = "\1\2\116\uffff";
     static final String dfa_81s = "\1\4\1\0\115\uffff";
-    static final String dfa_82s = "\1\147\1\0\115\uffff";
+    static final String dfa_82s = "\1\160\1\0\115\uffff";
     static final String dfa_83s = "\2\uffff\1\2\113\uffff\1\1";
     static final String dfa_84s = "\1\uffff\1\0\115\uffff}>";
     static final String[] dfa_85s = {
-            "\5\2\5\uffff\15\2\1\1\27\2\11\uffff\2\2\2\uffff\1\2\4\uffff\1\2\1\uffff\31\2\1\uffff\1\2\1\uffff\2\2\1\uffff\2\2",
+            "\5\2\5\uffff\15\2\1\1\27\2\14\uffff\2\2\10\uffff\1\2\4\uffff\1\2\1\uffff\31\2\1\uffff\1\2\1\uffff\2\2\1\uffff\2\2",
             "\1\uffff",
             "",
             "",
@@ -69852,11 +72100,11 @@
     static final short[] dfa_84 = DFA.unpackEncodedString(dfa_84s);
     static final short[][] dfa_85 = unpackEncodedStringArray(dfa_85s);
 
-    class DFA135 extends DFA {
+    class DFA133 extends DFA {
 
-        public DFA135(BaseRecognizer recognizer) {
+        public DFA133(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 135;
+            this.decisionNumber = 133;
             this.eot = dfa_79;
             this.eof = dfa_80;
             this.min = dfa_81;
@@ -69866,41 +72114,41 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "16504:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?";
+            return "17091:2: ( 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 LA135_1 = input.LA(1);
+                        int LA133_1 = input.LA(1);
 
                          
-                        int index135_1 = input.index();
+                        int index133_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred179_InternalSignalDSL()) ) {s = 78;}
+                        if ( (synpred185_InternalSignalDSL()) ) {s = 78;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index135_1);
+                        input.seek(index133_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 135, _s, input);
+                new NoViableAltException(getDescription(), 133, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA138 extends DFA {
+    class DFA136 extends DFA {
 
-        public DFA138(BaseRecognizer recognizer) {
+        public DFA136(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 138;
+            this.decisionNumber = 136;
             this.eot = dfa_79;
             this.eof = dfa_80;
             this.min = dfa_81;
@@ -69910,31 +72158,31 @@
             this.transition = dfa_85;
         }
         public String getDescription() {
-            return "16774:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?";
+            return "17361:2: ( 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 LA138_1 = input.LA(1);
+                        int LA136_1 = input.LA(1);
 
                          
-                        int index138_1 = input.index();
+                        int index136_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred182_InternalSignalDSL()) ) {s = 78;}
+                        if ( (synpred188_InternalSignalDSL()) ) {s = 78;}
 
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index138_1);
+                        input.seek(index136_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 138, _s, input);
+                new NoViableAltException(getDescription(), 136, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -69945,41 +72193,41 @@
     public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
     public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000800000000002L});
     public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000012L});
-    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0800000000000000L});
-    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0800000000000002L});
-    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x1000000000000000L});
-    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x6000000000000000L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x4000000000000002L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x4000000000000000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x8000000000000000L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000100L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0060000000000000L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x2000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0180000000000000L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0018000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0600000000000000L,0x0000000000000004L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x2018000000000000L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0018000000000002L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x4000000000000000L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x8000000000000000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000100L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000009L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0078000000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0018000000000002L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000030L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x00000000000015C0L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x3F80000000000000L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
     public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000800000000000L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000400000000010L,0x0000000400000000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000400000000010L,0x0000080000000000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
     public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0001000000000010L});
     public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000001000000010L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x1007E10C080001F0L,0x000000805FE299C1L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x1007E10C080001F0L,0x000000805FE298C1L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5338000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5318000L});
     public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000002000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x1007E10C080001F0L,0x000000805FE29CC1L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5398000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
     public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0001E00000000010L});
     public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x000000000C1F0000L});
     public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000008000000L});
@@ -69990,10 +72238,10 @@
     public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000008002L});
     public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000001E00000L});
     public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000001E00002L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x000000000E000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x000000000E000002L,0x0000000000002000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000080L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x000000000E000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x000000000E000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000080000010L,0x0000000000010000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
     public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x00000003FC000000L});
     public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x00000003FC000002L});
     public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000040000000L});
@@ -70004,60 +72252,60 @@
     public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x000000F000000000L});
     public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x000000F000000002L});
     public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000010C00000000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
     public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000060000000000L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000080000000000L,0x0000001800000000L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000080000000002L,0x0000001800000000L});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000080000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000080000000000L,0x0000300000000000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000080000000002L,0x0000300000000000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000080000000000L,0x0000100000000000L});
     public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0003E00008000010L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001080L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000080000010L,0x0000000100000080L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000200L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x1007E10C880001F0L,0x000000A05FE299C1L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x3007E10C080001F0L,0x000000805FE298C1L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x1007F10C880001F0L,0x000000E05FE298C1L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000080000010L,0x0000002000000080L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x1007F10C080001F2L,0x000000C05FE298C1L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x1007E10C880001F0L,0x000000805FE298C1L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x2000000080000010L,0x00000000001C0280L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000080000012L,0x0000000000140280L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000080000010L,0x0000000000140280L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x1007F10C080001F0L,0x000000C05FE298E1L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x1007E10C080001F0L,0x000000805FE298E1L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x1007F10C080001F0L,0x000000C05FE298C1L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x3007F10C080001F0L,0x000000C05FE298C1L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000100000000000L,0x0000004000000000L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
-    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000008000000L,0x0000000000001080L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0004000000000000L,0x0000008000000000L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000080000010L,0x0000020000010000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000004000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x8007E10C880001F0L,0x000140BFE5338000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE5318001L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x8007F10C880001F0L,0x0001C0BFE5318000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000080000010L,0x0000400000010000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x8007F10C080001F2L,0x000180BFE5318000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x8007E10C880001F0L,0x000100BFE5318000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000080000010L,0x0000000018050201L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000080000012L,0x0000000010050200L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000080000010L,0x0000000010050200L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x8007F10C080001F0L,0x000180BFE531C000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x8007E10C080001F0L,0x000100BFE531C000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x8007F10C080001F0L,0x000180BFE5318000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x8007F10C080001F0L,0x000180BFE5318001L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000100000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000008000000L,0x0000000000210000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0004000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
     public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x00000000000000E0L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x00040000000001E0L,0x0000008003001800L});
-    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001100L});
-    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
-    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
-    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
-    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
-    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x00000000A0000000L});
-    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
-    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x00040000000001E0L,0x0001000600300000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000220000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000014000000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
     public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000080000000000L});
     public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000080000000002L});
     public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x00000000000000C0L});
-    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000080000010L,0x0000000000000180L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000080000010L,0x0000000000030000L});
     public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0002200000000000L});
-    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
-    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000002L,0x0000000200000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
     public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000001000000000L});
 
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeModule.java b/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeModule.java
index a0df5f4..58a7c24 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeModule.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeSetup.java b/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeSetup.java
index 7e705bf..4d70e78 100644
--- a/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeSetup.java
+++ b/org.eclipse.osbp.xtext.signal.ide/src/org/eclipse/osbp/xtext/signal/ide/SignalDSLIdeSetup.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/LICENSE.txt b/org.eclipse.osbp.xtext.signal.runtime.feature/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/build.properties b/org.eclipse.osbp.xtext.signal.runtime.feature/build.properties
index 0ea4044..bee2254 100644
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/build.properties
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/build.properties
@@ -3,8 +3,8 @@
                notice.html,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html
+               epl-2.0.html
 src.includes = license.html,\
                LICENSE.txt,\
                notice.html,\
-               epl-v10.html			   
+               epl-2.0.html			   
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/epl-2.0.html b/org.eclipse.osbp.xtext.signal.runtime.feature/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/epl-v10.html b/org.eclipse.osbp.xtext.signal.runtime.feature/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/feature.properties b/org.eclipse.osbp.xtext.signal.runtime.feature/feature.properties
index 6f8c534..b3d6bbb 100644
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/feature.properties
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/feature.properties
@@ -1,9 +1,11 @@
 #=======================================================================
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
@@ -30,9 +32,11 @@
 copyright=\
 Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany). \n\
 All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&amp;Co.KG - initial API and basis\n\
@@ -47,126 +51,143 @@
 # should be plain text version of license agreement pointed to be "licenseURL"
 license=\
 Eclipse Foundation Software User Agreement\n\
-February 1, 2011\n\
+\n\
+November 22, 2017\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\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION\n\
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF\n\
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE\n\
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED\n\
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE\n\
+AGREEMENTS 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 OF ANY\n\
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU\n\
+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\
+Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
+is provided to you under the terms and conditions of the Eclipse Public License\n\
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also\n\
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,\n\
+"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\
+Content includes, but is not limited to, source code, object code, documentation\n\
+and other files maintained in the Eclipse Foundation source code repository\n\
+("Repository") in software modules ("Modules") and made available as\n\
+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\
+-   Content may be structured and packaged into modules to facilitate\n\
+    delivering, extending, and upgrading the Content. Typical modules may\n\
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and\n\
+    features ("Features").\n\
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR\n\
+    (Java™ ARchive) in a directory named "plugins".\n\
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and\n\
+    associated material. Each Feature may be packaged as a sub-directory in a\n\
+    directory named "features". Within a Feature, files named "feature.xml" may\n\
+    contain a list of the names and version numbers of the Plug-ins and/or\n\
+    Fragments associated with that Feature.\n\
+-   Features may also include other Features ("Included Features"). Within a\n\
+    Feature, files named "feature.xml" may contain a list of the names and\n\
+    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\
+The terms and conditions governing Plug-ins and Fragments should be contained in\n\
+files named "about.html" ("Abouts"). The terms and conditions governing Features\n\
+and Included Features should be contained in files named "license.html"\n\
+("Feature Licenses"). Abouts and Feature Licenses may be located in any\n\
+directory of a Download or Module including, but not limited to the following\n\
+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\
+-   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\
+Note: if a Feature made available by the Eclipse Foundation is installed using\n\
+the Provisioning Technology (as defined below), you must agree to a license\n\
+("Feature Update License") during the installation process. If the Feature\n\
+contains Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform you\n\
+where you can locate them. Feature Update Licenses may be found in the "license"\n\
+property of files named "feature.properties" found within a Feature. Such\n\
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and\n\
+conditions (or references to such terms and conditions) that govern your use of\n\
+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\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL\n\
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE\n\
+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\
+-   Eclipse Public License Version 1.0 (available at\n\
+    http://www.eclipse.org/legal/epl-v10.html)\n\
+-   Eclipse Distribution License Version 1.0 (available at\n\
+    http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+-   Common Public License Version 1.0 (available at\n\
+    http://www.eclipse.org/legal/cpl-v10.html)\n\
+-   Apache Software License 1.1 (available at\n\
+    http://www.apache.org/licenses/LICENSE)\n\
+-   Apache Software License 2.0 (available at\n\
+    http://www.apache.org/licenses/LICENSE-2.0)\n\
+-   Mozilla Public License Version 1.1 (available at\n\
+    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\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO\n\
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is\n\
+provided, please contact the Eclipse Foundation to determine what terms and\n\
+conditions govern that particular Content.\n\
 \n\
-\n\Use of Provisioning Technology\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\
+The Eclipse Foundation makes available provisioning software, examples of which\n\
+include, but are not limited to, p2 and the Eclipse Update Manager\n\
+("Provisioning Technology") for the purpose of allowing users to install\n\
+software, documentation, information and/or other materials (collectively\n\
+"Installable Software"). This capability is provided with the intent of allowing\n\
+such users to install, extend and update Eclipse-based products. Information\n\
+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\
+You may use Provisioning Technology to allow other parties to install\n\
+Installable Software. You shall be responsible for enabling the applicable\n\
+license agreements relating to the Installable Software to be presented to, and\n\
+accepted by, the users of the Provisioning Technology in accordance with the\n\
+Specification. By using Provisioning Technology in such a manner and making it\n\
+available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the\n\
+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\
+1.  A series of actions may occur ("Provisioning Process") in which a user may\n\
+    execute the Provisioning Technology on a machine ("Target Machine") with the\n\
+    intent of installing, extending or updating the functionality of an\n\
+    Eclipse-based product.\n\
+2.  During the Provisioning Process, the Provisioning Technology may cause third\n\
+    party Installable Software or a portion thereof to be accessed and copied to\n\
+    the Target Machine.\n\
+3.  Pursuant to the Specification, you will provide to the user the terms and\n\
+    conditions that govern the use of the Installable Software ("Installable\n\
+    Software Agreement") and such Installable Software Agreement shall be\n\
+    accessed from the Target Machine in accordance with the Specification. Such\n\
+    Installable Software Agreement must inform the user of the terms and\n\
+    conditions that govern the Installable Software and must solicit acceptance\n\
+    by the end user in the manner prescribed in such Installable\n\
+    Software Agreement. Upon such indication of agreement by the user, the\n\
+    provisioning Technology will complete installation of the\n\
+    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\
+Content may contain encryption software. The country in which you are currently\n\
+may have restrictions on the import, possession, and use, and/or re-export to\n\
+another country, of encryption software. BEFORE using any encryption software,\n\
+please check the country's laws, regulations and policies concerning the import,\n\
+possession, or use, and re-export of encryption software, to see if this is\n\
+permitted.\n\
 \n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the\n\
+United States, other countries, or both.\n
 ########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/license.html b/org.eclipse.osbp.xtext.signal.runtime.feature/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/license.html
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/notice.html b/org.eclipse.osbp.xtext.signal.runtime.feature/notice.html
index c3d34c3..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/notice.html
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal.runtime.feature/pom.xml b/org.eclipse.osbp.xtext.signal.runtime.feature/pom.xml
index 6496419..648983f 100644
--- a/org.eclipse.osbp.xtext.signal.runtime.feature/pom.xml
+++ b/org.eclipse.osbp.xtext.signal.runtime.feature/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal.tests/LICENSE.txt b/org.eclipse.osbp.xtext.signal.tests/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal.tests/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal.tests/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal.tests/about.html b/org.eclipse.osbp.xtext.signal.tests/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.signal.tests/about.html
+++ b/org.eclipse.osbp.xtext.signal.tests/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.signal.tests/about.properties b/org.eclipse.osbp.xtext.signal.tests/about.properties
index 363f305..4087d45 100644
--- a/org.eclipse.osbp.xtext.signal.tests/about.properties
+++ b/org.eclipse.osbp.xtext.signal.tests/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Loetz GmbH&Co - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2018 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&Co - implementation\n
diff --git a/org.eclipse.osbp.xtext.signal.tests/build.properties b/org.eclipse.osbp.xtext.signal.tests/build.properties
index 2c92efc..45207cd 100644
--- a/org.eclipse.osbp.xtext.signal.tests/build.properties
+++ b/org.eclipse.osbp.xtext.signal.tests/build.properties
@@ -9,7 +9,7 @@
                about.mappings,\
                about.properties,\
                about_files/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                notice.html
 bin.excludes = **/*.xtend
diff --git a/org.eclipse.osbp.xtext.signal.tests/epl-2.0.html b/org.eclipse.osbp.xtext.signal.tests/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal.tests/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.tests/epl-v10.html b/org.eclipse.osbp.xtext.signal.tests/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal.tests/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.tests/license.html b/org.eclipse.osbp.xtext.signal.tests/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.tests/license.html
+++ b/org.eclipse.osbp.xtext.signal.tests/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal.tests/notice.html b/org.eclipse.osbp.xtext.signal.tests/notice.html
index c3d34c3..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.tests/notice.html
+++ b/org.eclipse.osbp.xtext.signal.tests/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal.tests/pom.xml b/org.eclipse.osbp.xtext.signal.tests/pom.xml
index 09792fb..e33f2f6 100644
--- a/org.eclipse.osbp.xtext.signal.tests/pom.xml
+++ b/org.eclipse.osbp.xtext.signal.tests/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal.tests/src-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLInjectorProvider.java b/org.eclipse.osbp.xtext.signal.tests/src-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLInjectorProvider.java
index e661ea4..3e650e9 100644
--- a/org.eclipse.osbp.xtext.signal.tests/src-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLInjectorProvider.java
+++ b/org.eclipse.osbp.xtext.signal.tests/src-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLInjectorProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.tests/src/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.xtend b/org.eclipse.osbp.xtext.signal.tests/src/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.xtend
index a86e28c..2040e05 100644
--- a/org.eclipse.osbp.xtext.signal.tests/src/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.xtend
+++ b/org.eclipse.osbp.xtext.signal.tests/src/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java b/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java
index 881911f..248b322 100644
--- a/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java
+++ b/org.eclipse.osbp.xtext.signal.tests/xtend-gen/org/eclipse/osbp/xtext/signal/tests/SignalDSLParsingTest.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/LICENSE.txt b/org.eclipse.osbp.xtext.signal.ui.tests/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/about.html b/org.eclipse.osbp.xtext.signal.ui.tests/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/about.html
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/about.properties b/org.eclipse.osbp.xtext.signal.ui.tests/about.properties
index 4fd9969..c6acce6 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/about.properties
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Loetz GmbH&Co - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2018 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&Co - implementation\n
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/build.properties b/org.eclipse.osbp.xtext.signal.ui.tests/build.properties
index 2c92efc..45207cd 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/build.properties
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/build.properties
@@ -9,7 +9,7 @@
                about.mappings,\
                about.properties,\
                about_files/,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                notice.html
 bin.excludes = **/*.xtend
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/epl-2.0.html b/org.eclipse.osbp.xtext.signal.ui.tests/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/epl-v10.html b/org.eclipse.osbp.xtext.signal.ui.tests/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal.ui.tests/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/license.html b/org.eclipse.osbp.xtext.signal.ui.tests/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/license.html
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/notice.html b/org.eclipse.osbp.xtext.signal.ui.tests/notice.html
index c3d34c3..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/notice.html
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal.ui.tests/pom.xml b/org.eclipse.osbp.xtext.signal.ui.tests/pom.xml
index 9485cec..7d9fbc4 100644
--- a/org.eclipse.osbp.xtext.signal.ui.tests/pom.xml
+++ b/org.eclipse.osbp.xtext.signal.ui.tests/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ui/LICENSE.txt b/org.eclipse.osbp.xtext.signal.ui/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal.ui/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal.ui/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal.ui/about.properties b/org.eclipse.osbp.xtext.signal.ui/about.properties
index 254a93c..9f58044 100644
--- a/org.eclipse.osbp.xtext.signal.ui/about.properties
+++ b/org.eclipse.osbp.xtext.signal.ui/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Loetz GmbH&Co - initial API and implementation
@@ -17,9 +19,11 @@
 featureText=\
 Copyright (c) 2018 - 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&Co - implementation\n
diff --git a/org.eclipse.osbp.xtext.signal.ui/build.properties b/org.eclipse.osbp.xtext.signal.ui/build.properties
index 395f61f..c457dab 100644
--- a/org.eclipse.osbp.xtext.signal.ui/build.properties
+++ b/org.eclipse.osbp.xtext.signal.ui/build.properties
@@ -8,7 +8,7 @@
                about.ini,\
                about.mappings,\
                about.properties,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html,\
                .settings/,\
                i18n/,\
@@ -19,5 +19,5 @@
                about.ini,\
                about.mappings,\
                about.properties,\
-               epl-v10.html,\
+               epl-2.0.html,\
                license.html
diff --git a/org.eclipse.osbp.xtext.signal.ui/epl-2.0.html b/org.eclipse.osbp.xtext.signal.ui/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal.ui/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ui/epl-v10.html b/org.eclipse.osbp.xtext.signal.ui/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal.ui/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal.ui/license.html b/org.eclipse.osbp.xtext.signal.ui/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal.ui/license.html
+++ b/org.eclipse.osbp.xtext.signal.ui/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal.ui/pom.xml b/org.eclipse.osbp.xtext.signal.ui/pom.xml
index 908512e..3704f24 100644
--- a/org.eclipse.osbp.xtext.signal.ui/pom.xml
+++ b/org.eclipse.osbp.xtext.signal.ui/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/AbstractSignalDSLUiModule.java b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/AbstractSignalDSLUiModule.java
index e578dde..c4406f0 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/AbstractSignalDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/AbstractSignalDSLUiModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/SignalDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/SignalDSLExecutableExtensionFactory.java
index e743fad..18df8b7 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/SignalDSLExecutableExtensionFactory.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/SignalDSLExecutableExtensionFactory.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java
index 7b72999..dbee0e7 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/AbstractSignalDSLProposalProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -49,31 +51,55 @@
 	public void completeSignalWatcher_Directory(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalWatcher_Signal(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
 	public void completeSignalWatcher_Handlers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeSignalHandler_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalHandler_ActionType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-	public void completeSignalHandler_Data(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeSignalHandler_Interchanges(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeSignalHandler_Executiontype(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSignalHandler_Filemask(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeSignalHandler_Triggerpolicy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeListTransfer_Interchanges(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeTriggerFile_Filemask(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeSingleTransfer_Interchange(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void completeSignalScheduler_Scheduler(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeCronScheduler_Expression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeHourlyScheduler_Minute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDailyScheduler_Hour(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDailyScheduler_Minute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWeeklyScheduler_Dayofweek(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWeeklyScheduler_Hour(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeWeeklyScheduler_Minute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMonthlyScheduler_Dayofmonth(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMonthlyScheduler_Hour(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMonthlyScheduler_Minute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeSignalDatainterchange_DataAction(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
@@ -98,13 +124,31 @@
 	public void complete_SignalHandler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_DataTransfer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_TriggerPolicy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_ListTransfer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_TriggerFile(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_SingleTransfer(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+	public void complete_SignalScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Scheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_CronScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_HourlyScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DailyScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_WeeklyScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_MonthlyScheduler(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
 	public void complete_SignalDatainterchange(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
@@ -116,15 +160,12 @@
 	public void complete_SignalActionEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_SignalTypeEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_SignalHandlerTypeEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_SignalExecutionTypeEnum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_DayOfWeekEnum(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
 	}
diff --git a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/internal/SignalActivator.java b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/internal/SignalActivator.java
index d352574..9761df2 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/internal/SignalActivator.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src-gen/org/eclipse/osbp/xtext/signal/ui/internal/SignalActivator.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLDocumentationTranslator.java
index d3aacb8..0b4d96b 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLDocumentationTranslator.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLDocumentationTranslator.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHover.java b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHover.java
index 282c8ee..27f95b4 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHover.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHover.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverDocumentationProvider.java
index 13cc802..47a1812 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverDocumentationProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverDocumentationProvider.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverProvider.java
index f5ba046..f72fa1d 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLEObjectHoverProvider.java
@@ -3,19 +3,19 @@
  * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
  */
 package org.eclipse.osbp.xtext.signal.ui;
 
-import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
-
-import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverDocumentationProvider;
 import org.eclipse.osbp.xtext.basic.ui.BasicDSLEObjectHoverProvider;
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
 
 public class SignalDSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
 	 
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLUiModule.java b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLUiModule.java
index df3634e..779b6af 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/SignalDSLUiModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend
index 70af2b7..a25d1fb 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -17,25 +19,26 @@
 package org.eclipse.osbp.xtext.signal.ui.contentassist
 
 import com.google.inject.Inject
+import java.net.MalformedURLException
+import java.net.URL
+import java.nio.file.Paths
 import org.eclipse.emf.ecore.EObject
+import org.eclipse.jface.viewers.StyledString
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper
+import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
 import org.eclipse.osbp.xtext.signal.SignalHandler
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum
 import org.eclipse.osbp.xtext.signal.SignalWatcher
+import org.eclipse.osbp.xtext.signal.ui.SignalDSLDocumentationTranslator
 import org.eclipse.swt.widgets.DirectoryDialog
 import org.eclipse.wb.internal.core.nls.ui.ChooseLocaleDialog
 import org.eclipse.xtext.Assignment
-import org.eclipse.xtext.EcoreUtil2
+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
-import org.eclipse.xtext.Keyword
-import org.eclipse.jface.viewers.StyledString
-import org.eclipse.osbp.xtext.signal.ui.SignalDSLDocumentationTranslator
 
 class LocaleTextApplier extends ReplacementTextApplier {
 	var ContentAssistContext context
@@ -125,38 +128,39 @@
 		boolean result) {
 
 		if (handler !== null) {
-			val watcher = (EcoreUtil2.resolve(handler.eContainer, handler.eResource) as SignalWatcher)
-			var actiontype = handler.actionType
-			// if the actiontype has not been defined yet 
-			if (actiontype.equals(SignalHandlerTypeEnum.DOAFTER)) {
-				// only doaftercreate or doaftermodify are allowed 
-				switch (watcher.signal) {
-					// case SignalTypeEnum.ALL:
-					// return true
-					case SignalTypeEnum.CREATESIGNALS:
-						return SignalHandlerTypeEnum.DOAFTERCREATE.literal.equals(proposal)
-					// case SignalTypeEnum.DELETESIGNALS:
-					// return SignalHandlerTypeEnum.DOAFTERDELETE.literal.equals(proposal)
-					case SignalTypeEnum.MODIFYSIGNALS:
-						return SignalHandlerTypeEnum.DOAFTERMODIFY.literal.equals(proposal)
-					default:
+			// if the data block has not been defined yet
+			if (handler.name !== null) {
+				if(handler.eContainer instanceof SignalWatcher){
+					var watcher = handler.eContainer as SignalWatcher
+					var url = getDirectoryURL(watcher.directory)
+					if(url !== null && !url.protocol.equals("file") && (proposal.equals("forFileMask"))){
 						return false
+					}
+				}
+				if(handler.interchanges.size < 1 && (proposal.equals(SignalExecutionTypeEnum.NOSEQ.literal) || proposal.equals(SignalExecutionTypeEnum.SEQ.literal))){					
+					return false
+				}
+				if(handler.interchanges.size < 1 && (proposal.equals("forFileMask"))){					
+					return false
 				}
 			}
-
-			var data = handler.data
-			// if the data block has not been defined yet
-			if (data === null) {
-				return true
-			}
-
 		}
 		return result
 	}
-
-	override complete_DataTransfer(EObject model, RuleCall ruleCall, ContentAssistContext context,
-		ICompletionProposalAcceptor acceptor) {
-		super.complete_DataTransfer(model, ruleCall, context, acceptor)
+	
+	def getDirectoryURL(String directory) {
+	    try {
+			return new URL(directory);
+		} catch (MalformedURLException e1) {
+			if(e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
+				try {
+					return Paths.get(directory).toUri().toURL();
+				} catch (MalformedURLException e2) {
+					return null					
+				}
+			}
+		}
+		return null
 	}
 
 	// ------------------------ delegates to TerminalsProposalProvider -----------------
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.xtend b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.xtend
index a3fd3e5..1cb8ff5 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.xtend b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.xtend
index 8f8ef10..bee8228 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.xtend b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.xtend
index f86a509..645a51a 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.xtend
index 350bdca..b75ec0d 100644
--- a/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal.ui/src/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java
index 14e0956..00c677e 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/DirectoryNameTextApplier.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java
index 9e4280d..4e2eafd 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/LocaleTextApplier.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java
index 2e563ae..95ec750 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/contentassist/SignalDSLProposalProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,26 +16,27 @@
 package org.eclipse.osbp.xtext.signal.ui.contentassist;
 
 import com.google.inject.Inject;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.Paths;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jface.viewers.StyledString;
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
-import org.eclipse.osbp.xtext.signal.DataTransfer;
+import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
 import org.eclipse.osbp.xtext.signal.ui.SignalDSLDocumentationTranslator;
 import org.eclipse.osbp.xtext.signal.ui.contentassist.AbstractSignalDSLProposalProvider;
 import org.eclipse.osbp.xtext.signal.ui.contentassist.DirectoryNameTextApplier;
 import org.eclipse.xtext.Assignment;
-import org.eclipse.xtext.EcoreUtil2;
 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.xbase.lib.Exceptions;
 
 @SuppressWarnings("all")
 public class SignalDSLProposalProvider extends AbstractSignalDSLProposalProvider {
@@ -94,36 +97,52 @@
   
   private boolean isValidProposalSignalHandlerType(final String proposal, final String prefix, final SignalHandler handler, final boolean result) {
     if ((handler != null)) {
-      EObject _resolve = EcoreUtil2.resolve(handler.eContainer(), handler.eResource());
-      final SignalWatcher watcher = ((SignalWatcher) _resolve);
-      SignalHandlerTypeEnum actiontype = handler.getActionType();
-      boolean _equals = actiontype.equals(SignalHandlerTypeEnum.DOAFTER);
-      if (_equals) {
-        SignalTypeEnum _signal = watcher.getSignal();
-        if (_signal != null) {
-          switch (_signal) {
-            case CREATESIGNALS:
-              return SignalHandlerTypeEnum.DOAFTERCREATE.getLiteral().equals(proposal);
-            case MODIFYSIGNALS:
-              return SignalHandlerTypeEnum.DOAFTERMODIFY.getLiteral().equals(proposal);
-            default:
-              return false;
+      String _name = handler.getName();
+      boolean _tripleNotEquals = (_name != null);
+      if (_tripleNotEquals) {
+        EObject _eContainer = handler.eContainer();
+        if ((_eContainer instanceof SignalWatcher)) {
+          EObject _eContainer_1 = handler.eContainer();
+          SignalWatcher watcher = ((SignalWatcher) _eContainer_1);
+          URL url = this.getDirectoryURL(watcher.getDirectory());
+          if ((((url != null) && (!url.getProtocol().equals("file"))) && proposal.equals("forFileMask"))) {
+            return false;
           }
-        } else {
+        }
+        if (((handler.getInterchanges().size() < 1) && (proposal.equals(SignalExecutionTypeEnum.NOSEQ.getLiteral()) || proposal.equals(SignalExecutionTypeEnum.SEQ.getLiteral())))) {
           return false;
         }
-      }
-      DataTransfer data = handler.getData();
-      if ((data == null)) {
-        return true;
+        if (((handler.getInterchanges().size() < 1) && proposal.equals("forFileMask"))) {
+          return false;
+        }
       }
     }
     return result;
   }
   
-  @Override
-  public void complete_DataTransfer(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
-    super.complete_DataTransfer(model, ruleCall, context, acceptor);
+  public URL getDirectoryURL(final String directory) {
+    try {
+      return new URL(directory);
+    } catch (final Throwable _t) {
+      if (_t instanceof MalformedURLException) {
+        final MalformedURLException e1 = (MalformedURLException)_t;
+        if ((e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol"))) {
+          try {
+            return Paths.get(directory).toUri().toURL();
+          } catch (final Throwable _t_1) {
+            if (_t_1 instanceof MalformedURLException) {
+              final MalformedURLException e2 = (MalformedURLException)_t_1;
+              return null;
+            } else {
+              throw Exceptions.sneakyThrow(_t_1);
+            }
+          }
+        }
+      } else {
+        throw Exceptions.sneakyThrow(_t);
+      }
+    }
+    return null;
   }
   
   @Override
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java
index 1e0b8d1..5523f76 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLDescriptionLabelProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java
index cb88d0a..e1f0eb4 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/labeling/SignalDSLLabelProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java
index 4b0e640..e7c72ad 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/outline/SignalDSLOutlineTreeProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java
index dd9d2f6..4494c0b 100644
--- a/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.signal.ui/xtend-gen/org/eclipse/osbp/xtext/signal/ui/quickfix/SignalDSLQuickfixProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/LICENSE.txt b/org.eclipse.osbp.xtext.signal/LICENSE.txt
index ff42ad4..fc5938d 100644
--- a/org.eclipse.osbp.xtext.signal/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.signal/LICENSE.txt
@@ -1,161 +1,140 @@
-Eclipse Public License -v 1.0
+Eclipse Foundation Software User Agreement
 
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION
-OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+November 22, 2017
 
-1. DEFINITIONS
+Usage Of Content
 
-"Contribution" means:
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION
+AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF
+THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE
+TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED
+BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY
+APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU
+MAY NOT USE THE CONTENT.
 
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+Applicable Licenses
 
-b) in the case of each subsequent Contributor:
+Unless otherwise indicated, all Content made available by the Eclipse Foundation
+is provided to you under the terms and conditions of the Eclipse Public License
+Version 2.0 ("EPL"). A copy of the EPL is provided with this Content and is also
+available at http://www.eclipse.org/legal/epl-2.0. For purposes of the EPL,
+"Program" will mean the Content.
 
-i) changes to the Program, and
+Content includes, but is not limited to, source code, object code, documentation
+and other files maintained in the Eclipse Foundation source code repository
+("Repository") in software modules ("Modules") and made available as
+downloadable archives ("Downloads").
 
-ii) additions to the Program;
+-   Content may be structured and packaged into modules to facilitate
+    delivering, extending, and upgrading the Content. Typical modules may
+    include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and
+    features ("Features").
+-   Each Plug-in or Fragment may be packaged as a sub-directory or JAR
+    (Java™ ARchive) in a directory named "plugins".
+-   A Feature is a bundle of one or more Plug-ins and/or Fragments and
+    associated material. Each Feature may be packaged as a sub-directory in a
+    directory named "features". Within a Feature, files named "feature.xml" may
+    contain a list of the names and version numbers of the Plug-ins and/or
+    Fragments associated with that Feature.
+-   Features may also include other Features ("Included Features"). Within a
+    Feature, files named "feature.xml" may contain a list of the names and
+    version numbers of Included Features.
 
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.
-A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate
-modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
+The terms and conditions governing Plug-ins and Fragments should be contained in
+files named "about.html" ("Abouts"). The terms and conditions governing Features
+and Included Features should be contained in files named "license.html"
+("Feature Licenses"). Abouts and Feature Licenses may be located in any
+directory of a Download or Module including, but not limited to the following
+locations:
 
-"Contributor" means any person or entity that distributes the Program.
+-   The top-level (root) directory
+-   Plug-in and Fragment directories
+-   Inside Plug-ins and Fragments packaged as JARs
+-   Sub-directories of the directory named "src" of certain Plug-ins
+-   Feature directories
 
-"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of
-its Contribution alone or when combined with the Program.
+Note: if a Feature made available by the Eclipse Foundation is installed using
+the Provisioning Technology (as defined below), you must agree to a license
+("Feature Update License") during the installation process. If the Feature
+contains Included Features, the Feature Update License should either provide you
+with the terms and conditions governing the Included Features or inform you
+where you can locate them. Feature Update Licenses may be found in the "license"
+property of files named "feature.properties" found within a Feature. Such
+Abouts, Feature Licenses, and Feature Update Licenses contain the terms and
+conditions (or references to such terms and conditions) that govern your use of
+the associated Content in that directory.
 
-"Program" means the Contributions distributed in accordance with this Agreement.
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL
+OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
 
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+-   Eclipse Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/epl-v10.html)
+-   Eclipse Distribution License Version 1.0 (available at
+    http://www.eclipse.org/licenses/edl-v1.0.html)
+-   Common Public License Version 1.0 (available at
+    http://www.eclipse.org/legal/cpl-v10.html)
+-   Apache Software License 1.1 (available at
+    http://www.apache.org/licenses/LICENSE)
+-   Apache Software License 2.0 (available at
+    http://www.apache.org/licenses/LICENSE-2.0)
+-   Mozilla Public License Version 1.1 (available at
+    http://www.mozilla.org/MPL/MPL-1.1.html)
 
-2. GRANT OF RIGHTS
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO
+USE OF THE CONTENT. If no About, Feature License, or Feature Update License is
+provided, please contact the Eclipse Foundation to determine what terms and
+conditions govern that particular Content.
 
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute
-and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code
-form.
+Use of Provisioning Technology
 
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not
-apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+The Eclipse Foundation makes available provisioning software, examples of which
+include, but are not limited to, p2 and the Eclipse Update Manager
+("Provisioning Technology") for the purpose of allowing users to install
+software, documentation, information and/or other materials (collectively
+"Installable Software"). This capability is provided with the intent of allowing
+such users to install, extend and update Eclipse-based products. Information
+about packaging Installable Software is available at
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").
 
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no
-assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity
-based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property
-rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
-Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+You may use Provisioning Technology to allow other parties to install
+Installable Software. You shall be responsible for enabling the applicable
+license agreements relating to the Installable Software to be presented to, and
+accepted by, the users of the Provisioning Technology in accordance with the
+Specification. By using Provisioning Technology in such a manner and making it
+available in accordance with the Specification, you further acknowledge your
+agreement to, and the acquisition of all necessary rights to permit the
+following:
 
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to
-grant the copyright license set forth in this Agreement.
+1.  A series of actions may occur ("Provisioning Process") in which a user may
+    execute the Provisioning Technology on a machine ("Target Machine") with the
+    intent of installing, extending or updating the functionality of an
+    Eclipse-based product.
+2.  During the Provisioning Process, the Provisioning Technology may cause third
+    party Installable Software or a portion thereof to be accessed and copied to
+    the Target Machine.
+3.  Pursuant to the Specification, you will provide to the user the terms and
+    conditions that govern the use of the Installable Software ("Installable
+    Software Agreement") and such Installable Software Agreement shall be
+    accessed from the Target Machine in accordance with the Specification. Such
+    Installable Software Agreement must inform the user of the terms and
+    conditions that govern the Installable Software and must solicit acceptance
+    by the end user in the manner prescribed in such Installable
+    Software Agreement. Upon such indication of agreement by the user, the
+    provisioning Technology will complete installation of the
+    Installable Software.
 
-3. REQUIREMENTS
+Cryptography
 
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
 
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including
-warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any
-other party; and
-
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it
-in a reasonable manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and
-the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes
-the Program in a commercial product offering should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions
-brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual
-property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may
- participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is
-then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.
-Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to
-those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result,
-the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
-CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance
-with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such
-Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses
- granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement
-is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish
-new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
-right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the
-Agreement will be given a distinguishing version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the
-new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States
-of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause
-of action arose. Each party waives its rights to a jury trial in any resulting litigation.
\ No newline at end of file
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the
+United States, other countries, or both.
diff --git a/org.eclipse.osbp.xtext.signal/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.signal/META-INF/MANIFEST.MF
index fac029f..9143e25 100644
--- a/org.eclipse.osbp.xtext.signal/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.signal/META-INF/MANIFEST.MF
@@ -42,7 +42,8 @@
  org.eclipse.osbp.xtext.builder.types.bundles,
  org.eclipse.osbp.xtext.i18n,
  org.eclipse.osbp.xtext.addons;bundle-version="0.9.0",
- org.eclipse.osbp.xtext.datainterchange.common
+ org.eclipse.osbp.xtext.datainterchange.common,
+ org.eclipse.osbp.dependencies.bundle.quartz;bundle-version="2.2.1"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-Activator: org.eclipse.osbp.xtext.signal.Activator
 Export-Package: org.eclipse.osbp.xtext.signal,
@@ -64,5 +65,6 @@
  org.eclipse.osbp.core.api.persistence;version="0.9.0",
  org.eclipse.osbp.datainterchange.api,
  org.eclipse.osbp.utils.annotation;version="0.9.0",
+ org.eclipse.osbp.utils.common;version="0.9.0",
  org.eclipse.osbp.vaaclipse.api;version="0.9.0",
  org.eclipse.osbp.xtext.signal
diff --git a/org.eclipse.osbp.xtext.signal/about.html b/org.eclipse.osbp.xtext.signal/about.html
index 64c0598..e8b834d 100644
--- a/org.eclipse.osbp.xtext.signal/about.html
+++ b/org.eclipse.osbp.xtext.signal/about.html
@@ -8,13 +8,13 @@
 <body lang="EN-US">
 <h2>About This Content</h2>
  
-<p>June 1, 2016</p>	
+<p>November 30, 2017</p>	
 <h3>License</h3>
 
 <p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
 indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+Eclipse Public License Version 2.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-2.0</a>.
 For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
 
 <p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
diff --git a/org.eclipse.osbp.xtext.signal/about.properties b/org.eclipse.osbp.xtext.signal/about.properties
index 77a18a3..3cae5a4 100644
--- a/org.eclipse.osbp.xtext.signal/about.properties
+++ b/org.eclipse.osbp.xtext.signal/about.properties
@@ -1,9 +1,11 @@
 #
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (Heidelberg)
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 #
 # Contributors:
 #    Loetz GmbH&Co - initial API and implementation
@@ -17,9 +19,11 @@
 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\
+are made available under the terms of the Eclipse Public License 2.0 \n\
 which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n\
 \n\
 Contributors:\n\
     Loetz GmbH&Co - implementation\n
diff --git a/org.eclipse.osbp.xtext.signal/build.properties b/org.eclipse.osbp.xtext.signal/build.properties
index 11967f9..51e85b5 100644
--- a/org.eclipse.osbp.xtext.signal/build.properties
+++ b/org.eclipse.osbp.xtext.signal/build.properties
@@ -10,7 +10,7 @@
                notice.html,\
                license.html,\
                LICENSE.txt,\
-               epl-v10.html
+               epl-2.0.html
 src.includes = license.html,\
                LICENSE.txt,\
                about.html,\
@@ -18,7 +18,7 @@
                about.mappings,\
                about.properties,\
                notice.html,\
-               epl-v10.html			   
+               epl-2.0.html			   
 source.. = src/,\
 			src-gen/,\
 			emf-gen/,\
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java
new file mode 100644
index 0000000..4f557ec
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/CronScheduler.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cron Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.CronScheduler#getExpression <em>Expression</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getCronScheduler()
+ * @model
+ * @generated
+ */
+public interface CronScheduler extends Scheduler {
+	/**
+	 * Returns the value of the '<em><b>Expression</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Expression</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Expression</em>' attribute.
+	 * @see #setExpression(String)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getCronScheduler_Expression()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getExpression();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.CronScheduler#getExpression <em>Expression</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Expression</em>' attribute.
+	 * @see #getExpression()
+	 * @generated
+	 */
+	void setExpression(String value);
+
+} // CronScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java
new file mode 100644
index 0000000..ee57730
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DailyScheduler.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Daily Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.DailyScheduler#getHour <em>Hour</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.DailyScheduler#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getDailyScheduler()
+ * @model
+ * @generated
+ */
+public interface DailyScheduler extends Scheduler {
+	/**
+	 * Returns the value of the '<em><b>Hour</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hour</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hour</em>' attribute.
+	 * @see #setHour(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getDailyScheduler_Hour()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getHour();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.DailyScheduler#getHour <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hour</em>' attribute.
+	 * @see #getHour()
+	 * @generated
+	 */
+	void setHour(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Minute</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Minute</em>' attribute.
+	 * @see #setMinute(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getDailyScheduler_Minute()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getMinute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.DailyScheduler#getMinute <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Minute</em>' attribute.
+	 * @see #getMinute()
+	 * @generated
+	 */
+	void setMinute(int value);
+
+} // DailyScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java
new file mode 100644
index 0000000..640df4f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DayOfWeekEnum.java
@@ -0,0 +1,357 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+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>Day Of Week Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getDayOfWeekEnum()
+ * @model
+ * @generated
+ */
+public enum DayOfWeekEnum implements Enumerator {
+	/**
+	 * The '<em><b>SUNDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SUNDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SUNDAY(0, "SUNDAY", "sunday"),
+
+	/**
+	 * The '<em><b>MONDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MONDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MONDAY(0, "MONDAY", "monday"),
+
+	/**
+	 * The '<em><b>TUESDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TUESDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TUESDAY(0, "TUESDAY", "tuesday"),
+
+	/**
+	 * The '<em><b>WEDNESDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WEDNESDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WEDNESDAY(0, "WEDNESDAY", "wednesday"),
+
+	/**
+	 * The '<em><b>THURSDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #THURSDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	THURSDAY(0, "THURSDAY", "thursday"),
+
+	/**
+	 * The '<em><b>FRIDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FRIDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FRIDAY(0, "FRIDAY", "friday"),
+
+	/**
+	 * The '<em><b>SATURDAY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SATURDAY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SATURDAY(0, "SATURDAY", "saturday");
+
+	/**
+	 * The '<em><b>SUNDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SUNDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SUNDAY
+	 * @model literal="sunday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SUNDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>MONDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MONDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MONDAY
+	 * @model literal="monday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MONDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>TUESDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TUESDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TUESDAY
+	 * @model literal="tuesday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TUESDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>WEDNESDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WEDNESDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WEDNESDAY
+	 * @model literal="wednesday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WEDNESDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>THURSDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>THURSDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #THURSDAY
+	 * @model literal="thursday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int THURSDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>FRIDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>FRIDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #FRIDAY
+	 * @model literal="friday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FRIDAY_VALUE = 0;
+
+	/**
+	 * The '<em><b>SATURDAY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>SATURDAY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SATURDAY
+	 * @model literal="saturday"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SATURDAY_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>Day Of Week Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final DayOfWeekEnum[] VALUES_ARRAY =
+		new DayOfWeekEnum[] {
+			SUNDAY,
+			MONDAY,
+			TUESDAY,
+			WEDNESDAY,
+			THURSDAY,
+			FRIDAY,
+			SATURDAY,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Day Of Week Enum</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<DayOfWeekEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Day Of Week Enum</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DayOfWeekEnum get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			DayOfWeekEnum result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Day Of Week Enum</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DayOfWeekEnum getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			DayOfWeekEnum result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Day Of Week Enum</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static DayOfWeekEnum get(int value) {
+		switch (value) {
+			case SUNDAY_VALUE: return SUNDAY;
+		}
+		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 DayOfWeekEnum(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;
+	}
+	
+} //DayOfWeekEnum
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java
new file mode 100644
index 0000000..b4a1a50
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/HourlyScheduler.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hourly Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.HourlyScheduler#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getHourlyScheduler()
+ * @model
+ * @generated
+ */
+public interface HourlyScheduler extends Scheduler {
+	/**
+	 * Returns the value of the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Minute</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Minute</em>' attribute.
+	 * @see #setMinute(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getHourlyScheduler_Minute()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getMinute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.HourlyScheduler#getMinute <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Minute</em>' attribute.
+	 * @see #getMinute()
+	 * @generated
+	 */
+	void setMinute(int value);
+
+} // HourlyScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/ListTransfer.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/ListTransfer.java
deleted file mode 100644
index 941b3b5..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/ListTransfer.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-import org.eclipse.emf.common.util.EList;
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>List Transfer</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.ListTransfer#getInterchanges <em>Interchanges</em>}</li>
- * </ul>
- *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getListTransfer()
- * @model
- * @generated
- */
-public interface ListTransfer extends DataTransfer {
-	/**
-	 * Returns the value of the '<em><b>Interchanges</b></em>' containment reference list.
-	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalDatainterchange}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Interchanges</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>Interchanges</em>' containment reference list.
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getListTransfer_Interchanges()
-	 * @model containment="true"
-	 * @generated
-	 */
-	EList<SignalDatainterchange> getInterchanges();
-
-} // ListTransfer
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java
new file mode 100644
index 0000000..c2b2ef7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/MonthlyScheduler.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Monthly Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getDayofmonth <em>Dayofmonth</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getHour <em>Hour</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getMonthlyScheduler()
+ * @model
+ * @generated
+ */
+public interface MonthlyScheduler extends Scheduler {
+	/**
+	 * Returns the value of the '<em><b>Dayofmonth</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dayofmonth</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dayofmonth</em>' attribute.
+	 * @see #setDayofmonth(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getMonthlyScheduler_Dayofmonth()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getDayofmonth();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getDayofmonth <em>Dayofmonth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dayofmonth</em>' attribute.
+	 * @see #getDayofmonth()
+	 * @generated
+	 */
+	void setDayofmonth(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Hour</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hour</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hour</em>' attribute.
+	 * @see #setHour(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getMonthlyScheduler_Hour()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getHour();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getHour <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hour</em>' attribute.
+	 * @see #getHour()
+	 * @generated
+	 */
+	void setHour(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Minute</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Minute</em>' attribute.
+	 * @see #setMinute(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getMonthlyScheduler_Minute()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getMinute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getMinute <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Minute</em>' attribute.
+	 * @see #getMinute()
+	 * @generated
+	 */
+	void setMinute(int value);
+
+} // MonthlyScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DataTransfer.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/Scheduler.java
similarity index 66%
rename from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DataTransfer.java
rename to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/Scheduler.java
index c17607b..ee1202f 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DataTransfer.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/Scheduler.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -17,13 +19,13 @@
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Data Transfer</b></em>'.
+ * A representation of the model object '<em><b>Scheduler</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getDataTransfer()
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getScheduler()
  * @model
  * @generated
  */
-public interface DataTransfer extends SignalLazyResolver {
-} // DataTransfer
+public interface Scheduler extends SignalLazyResolver {
+} // Scheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java
index d39f908..4b1ccda 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalActionEnum.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java
index 5faeb2d..bab48d8 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalBase.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java
index b01b492..6863388 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLFactory.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -88,6 +90,87 @@
 	SignalHandler createSignalHandler();
 
 	/**
+	 * Returns a new object of class '<em>Trigger Policy</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Trigger Policy</em>'.
+	 * @generated
+	 */
+	TriggerPolicy createTriggerPolicy();
+
+	/**
+	 * Returns a new object of class '<em>Trigger File</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Trigger File</em>'.
+	 * @generated
+	 */
+	TriggerFile createTriggerFile();
+
+	/**
+	 * Returns a new object of class '<em>Signal Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Signal Scheduler</em>'.
+	 * @generated
+	 */
+	SignalScheduler createSignalScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Scheduler</em>'.
+	 * @generated
+	 */
+	Scheduler createScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Cron Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cron Scheduler</em>'.
+	 * @generated
+	 */
+	CronScheduler createCronScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Hourly Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hourly Scheduler</em>'.
+	 * @generated
+	 */
+	HourlyScheduler createHourlyScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Daily Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Daily Scheduler</em>'.
+	 * @generated
+	 */
+	DailyScheduler createDailyScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Weekly Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Weekly Scheduler</em>'.
+	 * @generated
+	 */
+	WeeklyScheduler createWeeklyScheduler();
+
+	/**
+	 * Returns a new object of class '<em>Monthly Scheduler</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Monthly Scheduler</em>'.
+	 * @generated
+	 */
+	MonthlyScheduler createMonthlyScheduler();
+
+	/**
 	 * Returns a new object of class '<em>Signal Datainterchange</em>'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -97,33 +180,6 @@
 	SignalDatainterchange createSignalDatainterchange();
 
 	/**
-	 * Returns a new object of class '<em>Data Transfer</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Data Transfer</em>'.
-	 * @generated
-	 */
-	DataTransfer createDataTransfer();
-
-	/**
-	 * Returns a new object of class '<em>Single Transfer</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>Single Transfer</em>'.
-	 * @generated
-	 */
-	SingleTransfer createSingleTransfer();
-
-	/**
-	 * Returns a new object of class '<em>List Transfer</em>'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return a new object of class '<em>List Transfer</em>'.
-	 * @generated
-	 */
-	ListTransfer createListTransfer();
-
-	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java
index 8cbbcbf..9c62266 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDSLPackage.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -38,7 +40,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.signal.SignalDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='signal' modelName='SignalDSL' prefix='SignalDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2018 - 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 Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from SignalDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='signal' modelName='SignalDSL' prefix='SignalDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2018 - 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 2.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 Contributors:                                                      \r\n    Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation\r\n \r\n generated from SignalDSL.xcore\r\n\r\n ' updateClasspath='false' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='signaldsl'"
  * @generated
  */
@@ -95,7 +97,7 @@
 	int SIGNAL_MODEL__IMPORT_SECTION = 0;
 
 	/**
-	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -288,22 +290,13 @@
 	int SIGNAL_WATCHER__DIRECTORY = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Signal</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL_WATCHER__SIGNAL = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 2;
-
-	/**
 	 * The feature id for the '<em><b>Handlers</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER__HANDLERS = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 3;
+	int SIGNAL_WATCHER__HANDLERS = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 2;
 
 	/**
 	 * The number of structural features of the '<em>Signal Watcher</em>' class.
@@ -312,7 +305,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_WATCHER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 4;
+	int SIGNAL_WATCHER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 3;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -352,40 +345,31 @@
 	int SIGNAL_HANDLER__NAME = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Action Type</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL_HANDLER__ACTION_TYPE = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Filemask</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL_HANDLER__FILEMASK = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Data</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL_HANDLER__DATA = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 3;
-
-	/**
 	 * The feature id for the '<em><b>Executiontype</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER__EXECUTIONTYPE = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 4;
+	int SIGNAL_HANDLER__EXECUTIONTYPE = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Interchanges</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_HANDLER__INTERCHANGES = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Triggerpolicy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_HANDLER__TRIGGERPOLICY = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 3;
 
 	/**
 	 * The number of structural features of the '<em>Signal Handler</em>' class.
@@ -394,7 +378,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int SIGNAL_HANDLER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 5;
+	int SIGNAL_HANDLER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 4;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -415,6 +399,447 @@
 	int SIGNAL_HANDLER_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
 
 	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl <em>Trigger Policy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerPolicy()
+	 * @generated
+	 */
+	int TRIGGER_POLICY = 6;
+
+	/**
+	 * The number of structural features of the '<em>Trigger Policy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_POLICY_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_POLICY___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Trigger Policy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_POLICY_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl <em>Trigger File</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerFile()
+	 * @generated
+	 */
+	int TRIGGER_FILE = 7;
+
+	/**
+	 * The feature id for the '<em><b>Filemask</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_FILE__FILEMASK = TRIGGER_POLICY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Trigger File</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_FILE_FEATURE_COUNT = TRIGGER_POLICY_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_FILE___ERESOLVE_PROXY__INTERNALEOBJECT = TRIGGER_POLICY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Trigger File</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIGGER_FILE_OPERATION_COUNT = TRIGGER_POLICY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl <em>Signal Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalScheduler()
+	 * @generated
+	 */
+	int SIGNAL_SCHEDULER = 8;
+
+	/**
+	 * The feature id for the '<em><b>Scheduler</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER__SCHEDULER = TRIGGER_POLICY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Signal Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER_FEATURE_COUNT = TRIGGER_POLICY_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = TRIGGER_POLICY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Signal Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL_SCHEDULER_OPERATION_COUNT = TRIGGER_POLICY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SchedulerImpl <em>Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.SchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getScheduler()
+	 * @generated
+	 */
+	int SCHEDULER = 9;
+
+	/**
+	 * The number of structural features of the '<em>Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCHEDULER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCHEDULER_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl <em>Cron Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getCronScheduler()
+	 * @generated
+	 */
+	int CRON_SCHEDULER = 10;
+
+	/**
+	 * The feature id for the '<em><b>Expression</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CRON_SCHEDULER__EXPRESSION = SCHEDULER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Cron Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CRON_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CRON_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Cron Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CRON_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.HourlySchedulerImpl <em>Hourly Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.HourlySchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getHourlyScheduler()
+	 * @generated
+	 */
+	int HOURLY_SCHEDULER = 11;
+
+	/**
+	 * The feature id for the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HOURLY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Hourly Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HOURLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HOURLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Hourly Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HOURLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl <em>Daily Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getDailyScheduler()
+	 * @generated
+	 */
+	int DAILY_SCHEDULER = 12;
+
+	/**
+	 * The feature id for the '<em><b>Hour</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DAILY_SCHEDULER__HOUR = SCHEDULER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DAILY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Daily Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DAILY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DAILY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Daily Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DAILY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl <em>Weekly Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWeeklyScheduler()
+	 * @generated
+	 */
+	int WEEKLY_SCHEDULER = 13;
+
+	/**
+	 * The feature id for the '<em><b>Dayofweek</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WEEKLY_SCHEDULER__DAYOFWEEK = SCHEDULER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Hour</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WEEKLY_SCHEDULER__HOUR = SCHEDULER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WEEKLY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Weekly Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WEEKLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WEEKLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Weekly Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int WEEKLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl <em>Monthly Scheduler</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getMonthlyScheduler()
+	 * @generated
+	 */
+	int MONTHLY_SCHEDULER = 14;
+
+	/**
+	 * The feature id for the '<em><b>Dayofmonth</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MONTHLY_SCHEDULER__DAYOFMONTH = SCHEDULER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Hour</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MONTHLY_SCHEDULER__HOUR = SCHEDULER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MONTHLY_SCHEDULER__MINUTE = SCHEDULER_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Monthly Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MONTHLY_SCHEDULER_FEATURE_COUNT = SCHEDULER_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MONTHLY_SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT = SCHEDULER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>Monthly Scheduler</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MONTHLY_SCHEDULER_OPERATION_COUNT = SCHEDULER_OPERATION_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.SignalProcessor <em>Signal Processor</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -422,7 +847,7 @@
 	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalProcessor()
 	 * @generated
 	 */
-	int SIGNAL_PROCESSOR = 6;
+	int SIGNAL_PROCESSOR = 15;
 
 	/**
 	 * The number of structural features of the '<em>Signal Processor</em>' class.
@@ -459,7 +884,7 @@
 	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalDatainterchange()
 	 * @generated
 	 */
-	int SIGNAL_DATAINTERCHANGE = 7;
+	int SIGNAL_DATAINTERCHANGE = 16;
 
 	/**
 	 * The feature id for the '<em><b>Data Action</b></em>' attribute.
@@ -516,155 +941,6 @@
 	int SIGNAL_DATAINTERCHANGE_OPERATION_COUNT = SIGNAL_PROCESSOR_OPERATION_COUNT + 0;
 
 	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.DataTransferImpl <em>Data Transfer</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.DataTransferImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getDataTransfer()
-	 * @generated
-	 */
-	int DATA_TRANSFER = 8;
-
-	/**
-	 * The number of structural features of the '<em>Data Transfer</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_TRANSFER_FEATURE_COUNT = SIGNAL_LAZY_RESOLVER_FEATURE_COUNT + 0;
-
-	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_TRANSFER___ERESOLVE_PROXY__INTERNALEOBJECT = SIGNAL_LAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>Data Transfer</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_TRANSFER_OPERATION_COUNT = SIGNAL_LAZY_RESOLVER_OPERATION_COUNT + 0;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.SingleTransferImpl <em>Single Transfer</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.SingleTransferImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSingleTransfer()
-	 * @generated
-	 */
-	int SINGLE_TRANSFER = 9;
-
-	/**
-	 * The feature id for the '<em><b>Interchange</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SINGLE_TRANSFER__INTERCHANGE = DATA_TRANSFER_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the '<em>Single Transfer</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SINGLE_TRANSFER_FEATURE_COUNT = DATA_TRANSFER_FEATURE_COUNT + 1;
-
-	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SINGLE_TRANSFER___ERESOLVE_PROXY__INTERNALEOBJECT = DATA_TRANSFER___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>Single Transfer</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SINGLE_TRANSFER_OPERATION_COUNT = DATA_TRANSFER_OPERATION_COUNT + 0;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.impl.ListTransferImpl <em>List Transfer</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.impl.ListTransferImpl
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getListTransfer()
-	 * @generated
-	 */
-	int LIST_TRANSFER = 10;
-
-	/**
-	 * The feature id for the '<em><b>Interchanges</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LIST_TRANSFER__INTERCHANGES = DATA_TRANSFER_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the '<em>List Transfer</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LIST_TRANSFER_FEATURE_COUNT = DATA_TRANSFER_FEATURE_COUNT + 1;
-
-	/**
-	 * The operation id for the '<em>EResolve Proxy</em>' operation.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LIST_TRANSFER___ERESOLVE_PROXY__INTERNALEOBJECT = DATA_TRANSFER___ERESOLVE_PROXY__INTERNALEOBJECT;
-
-	/**
-	 * The number of operations of the '<em>List Transfer</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LIST_TRANSFER_OPERATION_COUNT = DATA_TRANSFER_OPERATION_COUNT + 0;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum <em>Signal Handler Type Enum</em>}' enum.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalHandlerTypeEnum()
-	 * @generated
-	 */
-	int SIGNAL_HANDLER_TYPE_ENUM = 11;
-
-	/**
-	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.SignalTypeEnum <em>Signal Type Enum</em>}' enum.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.osbp.xtext.signal.SignalTypeEnum
-	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalTypeEnum()
-	 * @generated
-	 */
-	int SIGNAL_TYPE_ENUM = 12;
-
-	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.SignalActionEnum <em>Signal Action Enum</em>}' enum.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -672,7 +948,7 @@
 	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalActionEnum()
 	 * @generated
 	 */
-	int SIGNAL_ACTION_ENUM = 13;
+	int SIGNAL_ACTION_ENUM = 17;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum <em>Signal Execution Type Enum</em>}' enum.
@@ -682,7 +958,17 @@
 	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalExecutionTypeEnum()
 	 * @generated
 	 */
-	int SIGNAL_EXECUTION_TYPE_ENUM = 14;
+	int SIGNAL_EXECUTION_TYPE_ENUM = 18;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.xtext.signal.DayOfWeekEnum <em>Day Of Week Enum</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.xtext.signal.DayOfWeekEnum
+	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getDayOfWeekEnum()
+	 * @generated
+	 */
+	int DAY_OF_WEEK_ENUM = 19;
 
 	/**
 	 * The meta object id for the '<em>Internal EObject</em>' data type.
@@ -692,7 +978,7 @@
 	 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getInternalEObject()
 	 * @generated
 	 */
-	int INTERNAL_EOBJECT = 15;
+	int INTERNAL_EOBJECT = 20;
 
 
 	/**
@@ -717,10 +1003,10 @@
 	EReference getSignalModel_ImportSection();
 
 	/**
-	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalModel#getPackages <em>Packages</em>}'.
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalModel#getPackages <em>Packages</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Packages</em>'.
+	 * @return the meta object for the containment reference '<em>Packages</em>'.
 	 * @see org.eclipse.osbp.xtext.signal.SignalModel#getPackages()
 	 * @see #getSignalModel()
 	 * @generated
@@ -822,17 +1108,6 @@
 	EAttribute getSignalWatcher_Directory();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getSignal <em>Signal</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Signal</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalWatcher#getSignal()
-	 * @see #getSignalWatcher()
-	 * @generated
-	 */
-	EAttribute getSignalWatcher_Signal();
-
-	/**
 	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getHandlers <em>Handlers</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -865,39 +1140,6 @@
 	EAttribute getSignalHandler_Name();
 
 	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getActionType <em>Action Type</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Action Type</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getActionType()
-	 * @see #getSignalHandler()
-	 * @generated
-	 */
-	EAttribute getSignalHandler_ActionType();
-
-	/**
-	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getFilemask <em>Filemask</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the attribute '<em>Filemask</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getFilemask()
-	 * @see #getSignalHandler()
-	 * @generated
-	 */
-	EAttribute getSignalHandler_Filemask();
-
-	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getData <em>Data</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Data</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getData()
-	 * @see #getSignalHandler()
-	 * @generated
-	 */
-	EReference getSignalHandler_Data();
-
-	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getExecutiontype <em>Executiontype</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -909,6 +1151,250 @@
 	EAttribute getSignalHandler_Executiontype();
 
 	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getInterchanges <em>Interchanges</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Interchanges</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getInterchanges()
+	 * @see #getSignalHandler()
+	 * @generated
+	 */
+	EReference getSignalHandler_Interchanges();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy <em>Triggerpolicy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Triggerpolicy</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy()
+	 * @see #getSignalHandler()
+	 * @generated
+	 */
+	EReference getSignalHandler_Triggerpolicy();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.TriggerPolicy <em>Trigger Policy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Trigger Policy</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.TriggerPolicy
+	 * @generated
+	 */
+	EClass getTriggerPolicy();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.TriggerFile <em>Trigger File</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Trigger File</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.TriggerFile
+	 * @generated
+	 */
+	EClass getTriggerFile();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask <em>Filemask</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Filemask</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask()
+	 * @see #getTriggerFile()
+	 * @generated
+	 */
+	EAttribute getTriggerFile_Filemask();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalScheduler <em>Signal Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Signal Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler
+	 * @generated
+	 */
+	EClass getSignalScheduler();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler <em>Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler()
+	 * @see #getSignalScheduler()
+	 * @generated
+	 */
+	EReference getSignalScheduler_Scheduler();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.Scheduler <em>Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.Scheduler
+	 * @generated
+	 */
+	EClass getScheduler();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.CronScheduler <em>Cron Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cron Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.CronScheduler
+	 * @generated
+	 */
+	EClass getCronScheduler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.CronScheduler#getExpression <em>Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Expression</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.CronScheduler#getExpression()
+	 * @see #getCronScheduler()
+	 * @generated
+	 */
+	EAttribute getCronScheduler_Expression();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.HourlyScheduler <em>Hourly Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hourly Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.HourlyScheduler
+	 * @generated
+	 */
+	EClass getHourlyScheduler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.HourlyScheduler#getMinute <em>Minute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Minute</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.HourlyScheduler#getMinute()
+	 * @see #getHourlyScheduler()
+	 * @generated
+	 */
+	EAttribute getHourlyScheduler_Minute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.DailyScheduler <em>Daily Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Daily Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.DailyScheduler
+	 * @generated
+	 */
+	EClass getDailyScheduler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.DailyScheduler#getHour <em>Hour</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Hour</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.DailyScheduler#getHour()
+	 * @see #getDailyScheduler()
+	 * @generated
+	 */
+	EAttribute getDailyScheduler_Hour();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.DailyScheduler#getMinute <em>Minute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Minute</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.DailyScheduler#getMinute()
+	 * @see #getDailyScheduler()
+	 * @generated
+	 */
+	EAttribute getDailyScheduler_Minute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler <em>Weekly Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Weekly Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WeeklyScheduler
+	 * @generated
+	 */
+	EClass getWeeklyScheduler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getDayofweek <em>Dayofweek</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dayofweek</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WeeklyScheduler#getDayofweek()
+	 * @see #getWeeklyScheduler()
+	 * @generated
+	 */
+	EAttribute getWeeklyScheduler_Dayofweek();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getHour <em>Hour</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Hour</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WeeklyScheduler#getHour()
+	 * @see #getWeeklyScheduler()
+	 * @generated
+	 */
+	EAttribute getWeeklyScheduler_Hour();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getMinute <em>Minute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Minute</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.WeeklyScheduler#getMinute()
+	 * @see #getWeeklyScheduler()
+	 * @generated
+	 */
+	EAttribute getWeeklyScheduler_Minute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler <em>Monthly Scheduler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Monthly Scheduler</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.MonthlyScheduler
+	 * @generated
+	 */
+	EClass getMonthlyScheduler();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getDayofmonth <em>Dayofmonth</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dayofmonth</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.MonthlyScheduler#getDayofmonth()
+	 * @see #getMonthlyScheduler()
+	 * @generated
+	 */
+	EAttribute getMonthlyScheduler_Dayofmonth();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getHour <em>Hour</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Hour</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.MonthlyScheduler#getHour()
+	 * @see #getMonthlyScheduler()
+	 * @generated
+	 */
+	EAttribute getMonthlyScheduler_Hour();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler#getMinute <em>Minute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Minute</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.MonthlyScheduler#getMinute()
+	 * @see #getMonthlyScheduler()
+	 * @generated
+	 */
+	EAttribute getMonthlyScheduler_Minute();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SignalProcessor <em>Signal Processor</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -962,78 +1448,6 @@
 	EAttribute getSignalDatainterchange_FileName();
 
 	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.DataTransfer <em>Data Transfer</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Data Transfer</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.DataTransfer
-	 * @generated
-	 */
-	EClass getDataTransfer();
-
-	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.SingleTransfer <em>Single Transfer</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Single Transfer</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SingleTransfer
-	 * @generated
-	 */
-	EClass getSingleTransfer();
-
-	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.signal.SingleTransfer#getInterchange <em>Interchange</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Interchange</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SingleTransfer#getInterchange()
-	 * @see #getSingleTransfer()
-	 * @generated
-	 */
-	EReference getSingleTransfer_Interchange();
-
-	/**
-	 * Returns the meta object for class '{@link org.eclipse.osbp.xtext.signal.ListTransfer <em>List Transfer</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>List Transfer</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.ListTransfer
-	 * @generated
-	 */
-	EClass getListTransfer();
-
-	/**
-	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.signal.ListTransfer#getInterchanges <em>Interchanges</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Interchanges</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.ListTransfer#getInterchanges()
-	 * @see #getListTransfer()
-	 * @generated
-	 */
-	EReference getListTransfer_Interchanges();
-
-	/**
-	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum <em>Signal Handler Type Enum</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for enum '<em>Signal Handler Type Enum</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-	 * @generated
-	 */
-	EEnum getSignalHandlerTypeEnum();
-
-	/**
-	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.signal.SignalTypeEnum <em>Signal Type Enum</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for enum '<em>Signal Type Enum</em>'.
-	 * @see org.eclipse.osbp.xtext.signal.SignalTypeEnum
-	 * @generated
-	 */
-	EEnum getSignalTypeEnum();
-
-	/**
 	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.signal.SignalActionEnum <em>Signal Action Enum</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1054,6 +1468,16 @@
 	EEnum getSignalExecutionTypeEnum();
 
 	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.xtext.signal.DayOfWeekEnum <em>Day Of Week Enum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Day Of Week Enum</em>'.
+	 * @see org.eclipse.osbp.xtext.signal.DayOfWeekEnum
+	 * @generated
+	 */
+	EEnum getDayOfWeekEnum();
+
+	/**
 	 * Returns the meta object for data type '{@link org.eclipse.emf.ecore.InternalEObject <em>Internal EObject</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1106,7 +1530,7 @@
 		EReference SIGNAL_MODEL__IMPORT_SECTION = eINSTANCE.getSignalModel_ImportSection();
 
 		/**
-		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
@@ -1194,14 +1618,6 @@
 		EAttribute SIGNAL_WATCHER__DIRECTORY = eINSTANCE.getSignalWatcher_Directory();
 
 		/**
-		 * The meta object literal for the '<em><b>Signal</b></em>' attribute feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EAttribute SIGNAL_WATCHER__SIGNAL = eINSTANCE.getSignalWatcher_Signal();
-
-		/**
 		 * The meta object literal for the '<em><b>Handlers</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1228,12 +1644,48 @@
 		EAttribute SIGNAL_HANDLER__NAME = eINSTANCE.getSignalHandler_Name();
 
 		/**
-		 * The meta object literal for the '<em><b>Action Type</b></em>' attribute feature.
+		 * The meta object literal for the '<em><b>Executiontype</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_HANDLER__ACTION_TYPE = eINSTANCE.getSignalHandler_ActionType();
+		EAttribute SIGNAL_HANDLER__EXECUTIONTYPE = eINSTANCE.getSignalHandler_Executiontype();
+
+		/**
+		 * The meta object literal for the '<em><b>Interchanges</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SIGNAL_HANDLER__INTERCHANGES = eINSTANCE.getSignalHandler_Interchanges();
+
+		/**
+		 * The meta object literal for the '<em><b>Triggerpolicy</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SIGNAL_HANDLER__TRIGGERPOLICY = eINSTANCE.getSignalHandler_Triggerpolicy();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl <em>Trigger Policy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.TriggerPolicyImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerPolicy()
+		 * @generated
+		 */
+		EClass TRIGGER_POLICY = eINSTANCE.getTriggerPolicy();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl <em>Trigger File</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getTriggerFile()
+		 * @generated
+		 */
+		EClass TRIGGER_FILE = eINSTANCE.getTriggerFile();
 
 		/**
 		 * The meta object literal for the '<em><b>Filemask</b></em>' attribute feature.
@@ -1241,23 +1693,165 @@
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_HANDLER__FILEMASK = eINSTANCE.getSignalHandler_Filemask();
+		EAttribute TRIGGER_FILE__FILEMASK = eINSTANCE.getTriggerFile_Filemask();
 
 		/**
-		 * The meta object literal for the '<em><b>Data</b></em>' containment reference feature.
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl <em>Signal Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalScheduler()
+		 * @generated
+		 */
+		EClass SIGNAL_SCHEDULER = eINSTANCE.getSignalScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Scheduler</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EReference SIGNAL_HANDLER__DATA = eINSTANCE.getSignalHandler_Data();
+		EReference SIGNAL_SCHEDULER__SCHEDULER = eINSTANCE.getSignalScheduler_Scheduler();
 
 		/**
-		 * The meta object literal for the '<em><b>Executiontype</b></em>' attribute feature.
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SchedulerImpl <em>Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.SchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getScheduler()
+		 * @generated
+		 */
+		EClass SCHEDULER = eINSTANCE.getScheduler();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl <em>Cron Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getCronScheduler()
+		 * @generated
+		 */
+		EClass CRON_SCHEDULER = eINSTANCE.getCronScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Expression</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
 		 * @generated
 		 */
-		EAttribute SIGNAL_HANDLER__EXECUTIONTYPE = eINSTANCE.getSignalHandler_Executiontype();
+		EAttribute CRON_SCHEDULER__EXPRESSION = eINSTANCE.getCronScheduler_Expression();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.HourlySchedulerImpl <em>Hourly Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.HourlySchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getHourlyScheduler()
+		 * @generated
+		 */
+		EClass HOURLY_SCHEDULER = eINSTANCE.getHourlyScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Minute</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HOURLY_SCHEDULER__MINUTE = eINSTANCE.getHourlyScheduler_Minute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl <em>Daily Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getDailyScheduler()
+		 * @generated
+		 */
+		EClass DAILY_SCHEDULER = eINSTANCE.getDailyScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Hour</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DAILY_SCHEDULER__HOUR = eINSTANCE.getDailyScheduler_Hour();
+
+		/**
+		 * The meta object literal for the '<em><b>Minute</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DAILY_SCHEDULER__MINUTE = eINSTANCE.getDailyScheduler_Minute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl <em>Weekly Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getWeeklyScheduler()
+		 * @generated
+		 */
+		EClass WEEKLY_SCHEDULER = eINSTANCE.getWeeklyScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Dayofweek</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute WEEKLY_SCHEDULER__DAYOFWEEK = eINSTANCE.getWeeklyScheduler_Dayofweek();
+
+		/**
+		 * The meta object literal for the '<em><b>Hour</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute WEEKLY_SCHEDULER__HOUR = eINSTANCE.getWeeklyScheduler_Hour();
+
+		/**
+		 * The meta object literal for the '<em><b>Minute</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute WEEKLY_SCHEDULER__MINUTE = eINSTANCE.getWeeklyScheduler_Minute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl <em>Monthly Scheduler</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getMonthlyScheduler()
+		 * @generated
+		 */
+		EClass MONTHLY_SCHEDULER = eINSTANCE.getMonthlyScheduler();
+
+		/**
+		 * The meta object literal for the '<em><b>Dayofmonth</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MONTHLY_SCHEDULER__DAYOFMONTH = eINSTANCE.getMonthlyScheduler_Dayofmonth();
+
+		/**
+		 * The meta object literal for the '<em><b>Hour</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MONTHLY_SCHEDULER__HOUR = eINSTANCE.getMonthlyScheduler_Hour();
+
+		/**
+		 * The meta object literal for the '<em><b>Minute</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MONTHLY_SCHEDULER__MINUTE = eINSTANCE.getMonthlyScheduler_Minute();
 
 		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.SignalProcessor <em>Signal Processor</em>}' class.
@@ -1304,72 +1898,6 @@
 		EAttribute SIGNAL_DATAINTERCHANGE__FILE_NAME = eINSTANCE.getSignalDatainterchange_FileName();
 
 		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.DataTransferImpl <em>Data Transfer</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.DataTransferImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getDataTransfer()
-		 * @generated
-		 */
-		EClass DATA_TRANSFER = eINSTANCE.getDataTransfer();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.SingleTransferImpl <em>Single Transfer</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.SingleTransferImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSingleTransfer()
-		 * @generated
-		 */
-		EClass SINGLE_TRANSFER = eINSTANCE.getSingleTransfer();
-
-		/**
-		 * The meta object literal for the '<em><b>Interchange</b></em>' containment reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference SINGLE_TRANSFER__INTERCHANGE = eINSTANCE.getSingleTransfer_Interchange();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.impl.ListTransferImpl <em>List Transfer</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.impl.ListTransferImpl
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getListTransfer()
-		 * @generated
-		 */
-		EClass LIST_TRANSFER = eINSTANCE.getListTransfer();
-
-		/**
-		 * The meta object literal for the '<em><b>Interchanges</b></em>' containment reference list feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference LIST_TRANSFER__INTERCHANGES = eINSTANCE.getListTransfer_Interchanges();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum <em>Signal Handler Type Enum</em>}' enum.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalHandlerTypeEnum()
-		 * @generated
-		 */
-		EEnum SIGNAL_HANDLER_TYPE_ENUM = eINSTANCE.getSignalHandlerTypeEnum();
-
-		/**
-		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.SignalTypeEnum <em>Signal Type Enum</em>}' enum.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.eclipse.osbp.xtext.signal.SignalTypeEnum
-		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getSignalTypeEnum()
-		 * @generated
-		 */
-		EEnum SIGNAL_TYPE_ENUM = eINSTANCE.getSignalTypeEnum();
-
-		/**
 		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.SignalActionEnum <em>Signal Action Enum</em>}' enum.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -1390,6 +1918,16 @@
 		EEnum SIGNAL_EXECUTION_TYPE_ENUM = eINSTANCE.getSignalExecutionTypeEnum();
 
 		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.xtext.signal.DayOfWeekEnum <em>Day Of Week Enum</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.xtext.signal.DayOfWeekEnum
+		 * @see org.eclipse.osbp.xtext.signal.impl.SignalDSLPackageImpl#getDayOfWeekEnum()
+		 * @generated
+		 */
+		EEnum DAY_OF_WEEK_ENUM = eINSTANCE.getDayOfWeekEnum();
+
+		/**
 		 * The meta object literal for the '<em>Internal EObject</em>' data type.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java
index 361b431..dd15ff6 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalDatainterchange.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java
index 1357d17..96d3408 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalExecutionTypeEnum.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -31,54 +33,54 @@
  */
 public enum SignalExecutionTypeEnum implements Enumerator {
 	/**
-	 * The '<em><b>SYNC</b></em>' literal object.
+	 * The '<em><b>SEQ</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #SYNC_VALUE
+	 * @see #SEQ_VALUE
 	 * @generated
 	 * @ordered
 	 */
-	SYNC(0, "SYNC", "synch"),
+	SEQ(0, "SEQ", "sequential"),
 
 	/**
-	 * The '<em><b>ASYNC</b></em>' literal object.
+	 * The '<em><b>NOSEQ</b></em>' literal object.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #ASYNC_VALUE
+	 * @see #NOSEQ_VALUE
 	 * @generated
 	 * @ordered
 	 */
-	ASYNC(0, "ASYNC", "asynch");
+	NOSEQ(0, "NOSEQ", "parallel");
 
 	/**
-	 * The '<em><b>SYNC</b></em>' literal value.
+	 * The '<em><b>SEQ</b></em>' literal value.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of '<em><b>SYNC</b></em>' literal object isn't clear,
+	 * If the meaning of '<em><b>SEQ</b></em>' literal object isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @see #SYNC
-	 * @model literal="synch"
+	 * @see #SEQ
+	 * @model literal="sequential"
 	 * @generated
 	 * @ordered
 	 */
-	public static final int SYNC_VALUE = 0;
+	public static final int SEQ_VALUE = 0;
 
 	/**
-	 * The '<em><b>ASYNC</b></em>' literal value.
+	 * The '<em><b>NOSEQ</b></em>' literal value.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of '<em><b>ASYNC</b></em>' literal object isn't clear,
+	 * If the meaning of '<em><b>NOSEQ</b></em>' literal object isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @see #ASYNC
-	 * @model literal="asynch"
+	 * @see #NOSEQ
+	 * @model literal="parallel"
 	 * @generated
 	 * @ordered
 	 */
-	public static final int ASYNC_VALUE = 0;
+	public static final int NOSEQ_VALUE = 0;
 
 	/**
 	 * An array of all the '<em><b>Signal Execution Type Enum</b></em>' enumerators.
@@ -88,8 +90,8 @@
 	 */
 	private static final SignalExecutionTypeEnum[] VALUES_ARRAY =
 		new SignalExecutionTypeEnum[] {
-			SYNC,
-			ASYNC,
+			SEQ,
+			NOSEQ,
 		};
 
 	/**
@@ -146,7 +148,7 @@
 	 */
 	public static SignalExecutionTypeEnum get(int value) {
 		switch (value) {
-			case SYNC_VALUE: return SYNC;
+			case SEQ_VALUE: return SEQ;
 		}
 		return null;
 	}
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java
index 451412c..43125b9 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandler.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,6 +16,7 @@
  */
 package org.eclipse.osbp.xtext.signal;
 
+import org.eclipse.emf.common.util.EList;
 
 /**
  * <!-- begin-user-doc -->
@@ -25,10 +28,9 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getActionType <em>Action Type</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getFilemask <em>Filemask</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getData <em>Data</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getExecutiontype <em>Executiontype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getInterchanges <em>Interchanges</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy <em>Triggerpolicy</em>}</li>
  * </ul>
  *
  * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler()
@@ -63,87 +65,6 @@
 	void setName(String value);
 
 	/**
-	 * Returns the value of the '<em><b>Action Type</b></em>' attribute.
-	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Action 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>Action Type</em>' attribute.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-	 * @see #setActionType(SignalHandlerTypeEnum)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_ActionType()
-	 * @model unique="false"
-	 * @generated
-	 */
-	SignalHandlerTypeEnum getActionType();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getActionType <em>Action Type</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Action Type</em>' attribute.
-	 * @see org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-	 * @see #getActionType()
-	 * @generated
-	 */
-	void setActionType(SignalHandlerTypeEnum value);
-
-	/**
-	 * Returns the value of the '<em><b>Filemask</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Filemask</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Filemask</em>' attribute.
-	 * @see #setFilemask(String)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Filemask()
-	 * @model unique="false"
-	 * @generated
-	 */
-	String getFilemask();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getFilemask <em>Filemask</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Filemask</em>' attribute.
-	 * @see #getFilemask()
-	 * @generated
-	 */
-	void setFilemask(String value);
-
-	/**
-	 * Returns the value of the '<em><b>Data</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Data</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>Data</em>' containment reference.
-	 * @see #setData(DataTransfer)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Data()
-	 * @model containment="true"
-	 * @generated
-	 */
-	DataTransfer getData();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getData <em>Data</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Data</em>' containment reference.
-	 * @see #getData()
-	 * @generated
-	 */
-	void setData(DataTransfer value);
-
-	/**
 	 * Returns the value of the '<em><b>Executiontype</b></em>' attribute.
 	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum}.
 	 * <!-- begin-user-doc -->
@@ -172,4 +93,46 @@
 	 */
 	void setExecutiontype(SignalExecutionTypeEnum value);
 
+	/**
+	 * Returns the value of the '<em><b>Interchanges</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalDatainterchange}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Interchanges</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>Interchanges</em>' containment reference list.
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Interchanges()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<SignalDatainterchange> getInterchanges();
+
+	/**
+	 * Returns the value of the '<em><b>Triggerpolicy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Triggerpolicy</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>Triggerpolicy</em>' containment reference.
+	 * @see #setTriggerpolicy(TriggerPolicy)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandler_Triggerpolicy()
+	 * @model containment="true"
+	 * @generated
+	 */
+	TriggerPolicy getTriggerpolicy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalHandler#getTriggerpolicy <em>Triggerpolicy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Triggerpolicy</em>' containment reference.
+	 * @see #getTriggerpolicy()
+	 * @generated
+	 */
+	void setTriggerpolicy(TriggerPolicy value);
+
 } // SignalHandler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandlerTypeEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandlerTypeEnum.java
deleted file mode 100644
index ee5e22d..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalHandlerTypeEnum.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-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>Signal Handler Type Enum</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalHandlerTypeEnum()
- * @model
- * @generated
- */
-public enum SignalHandlerTypeEnum implements Enumerator {
-	/**
-	 * The '<em><b>Doafter</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DOAFTER_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	DOAFTER(0, "doafter", "doAfter"),
-
-	/**
-	 * The '<em><b>Doaftermodify</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DOAFTERMODIFY_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	DOAFTERMODIFY(0, "doaftermodify", "doAfterModify"),
-
-	/**
-	 * The '<em><b>Doaftercreate</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DOAFTERCREATE_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	DOAFTERCREATE(0, "doaftercreate", "doAfterCreate");
-
-	/**
-	 * The '<em><b>Doafter</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>Doafter</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @see #DOAFTER
-	 * @model name="doafter" literal="doAfter"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int DOAFTER_VALUE = 0;
-
-	/**
-	 * The '<em><b>Doaftermodify</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>Doaftermodify</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @see #DOAFTERMODIFY
-	 * @model name="doaftermodify" literal="doAfterModify"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int DOAFTERMODIFY_VALUE = 0;
-
-	/**
-	 * The '<em><b>Doaftercreate</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>Doaftercreate</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @see #DOAFTERCREATE
-	 * @model name="doaftercreate" literal="doAfterCreate"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int DOAFTERCREATE_VALUE = 0;
-
-	/**
-	 * An array of all the '<em><b>Signal Handler Type Enum</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final SignalHandlerTypeEnum[] VALUES_ARRAY =
-		new SignalHandlerTypeEnum[] {
-			DOAFTER,
-			DOAFTERMODIFY,
-			DOAFTERCREATE,
-		};
-
-	/**
-	 * A public read-only list of all the '<em><b>Signal Handler Type Enum</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<SignalHandlerTypeEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>Signal Handler Type Enum</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static SignalHandlerTypeEnum get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			SignalHandlerTypeEnum result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Signal Handler Type Enum</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static SignalHandlerTypeEnum getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			SignalHandlerTypeEnum result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Signal Handler Type Enum</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static SignalHandlerTypeEnum get(int value) {
-		switch (value) {
-			case DOAFTER_VALUE: return DOAFTER;
-		}
-		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 SignalHandlerTypeEnum(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;
-	}
-	
-} //SignalHandlerTypeEnum
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java
index d7f4712..bef6da0 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalLazyResolver.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java
index 667585c..b4c910a 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalModel.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,8 +16,6 @@
  */
 package org.eclipse.osbp.xtext.signal;
 
-import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EObject;
 
 import org.eclipse.xtext.xtype.XImportSection;
@@ -65,19 +65,29 @@
 	void setImportSection(XImportSection value);
 
 	/**
-	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
-	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalPackage}.
+	 * Returns the value of the '<em><b>Packages</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Packages</em>' containment reference list isn't clear,
+	 * If the meaning of the '<em>Packages</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>Packages</em>' containment reference list.
+	 * @return the value of the '<em>Packages</em>' containment reference.
+	 * @see #setPackages(SignalPackage)
 	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalModel_Packages()
 	 * @model containment="true"
 	 * @generated
 	 */
-	EList<SignalPackage> getPackages();
+	SignalPackage getPackages();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalModel#getPackages <em>Packages</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Packages</em>' containment reference.
+	 * @see #getPackages()
+	 * @generated
+	 */
+	void setPackages(SignalPackage value);
 
 } // SignalModel
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java
index 627153b..f5579b3 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalPackage.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java
index 34867b6..3da5966 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalProcessor.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java
new file mode 100644
index 0000000..3286cd8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalScheduler.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Signal Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler <em>Scheduler</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler()
+ * @model
+ * @generated
+ */
+public interface SignalScheduler extends TriggerPolicy {
+	/**
+	 * Returns the value of the '<em><b>Scheduler</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scheduler</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>Scheduler</em>' containment reference.
+	 * @see #setScheduler(Scheduler)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalScheduler_Scheduler()
+	 * @model containment="true"
+	 * @generated
+	 */
+	Scheduler getScheduler();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalScheduler#getScheduler <em>Scheduler</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scheduler</em>' containment reference.
+	 * @see #getScheduler()
+	 * @generated
+	 */
+	void setScheduler(Scheduler value);
+
+} // SignalScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalTypeEnum.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalTypeEnum.java
deleted file mode 100644
index 8fdd0e8..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalTypeEnum.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-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>Signal Type Enum</b></em>',
- * and utility methods for working with them.
- * <!-- end-user-doc -->
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalTypeEnum()
- * @model
- * @generated
- */
-public enum SignalTypeEnum implements Enumerator {
-	/**
-	 * The '<em><b>Createsignals</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CREATESIGNALS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	CREATESIGNALS(0, "createsignals", "createSignals"),
-
-	/**
-	 * The '<em><b>Modifysignals</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #MODIFYSIGNALS_VALUE
-	 * @generated
-	 * @ordered
-	 */
-	MODIFYSIGNALS(0, "modifysignals", "modifySignals");
-
-	/**
-	 * The '<em><b>Createsignals</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>Createsignals</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @see #CREATESIGNALS
-	 * @model name="createsignals" literal="createSignals"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int CREATESIGNALS_VALUE = 0;
-
-	/**
-	 * The '<em><b>Modifysignals</b></em>' literal value.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of '<em><b>Modifysignals</b></em>' literal object isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @see #MODIFYSIGNALS
-	 * @model name="modifysignals" literal="modifySignals"
-	 * @generated
-	 * @ordered
-	 */
-	public static final int MODIFYSIGNALS_VALUE = 0;
-
-	/**
-	 * An array of all the '<em><b>Signal Type Enum</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private static final SignalTypeEnum[] VALUES_ARRAY =
-		new SignalTypeEnum[] {
-			CREATESIGNALS,
-			MODIFYSIGNALS,
-		};
-
-	/**
-	 * A public read-only list of all the '<em><b>Signal Type Enum</b></em>' enumerators.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public static final List<SignalTypeEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
-
-	/**
-	 * Returns the '<em><b>Signal Type Enum</b></em>' literal with the specified literal value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param literal the literal.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static SignalTypeEnum get(String literal) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			SignalTypeEnum result = VALUES_ARRAY[i];
-			if (result.toString().equals(literal)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Signal Type Enum</b></em>' literal with the specified name.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param name the name.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static SignalTypeEnum getByName(String name) {
-		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
-			SignalTypeEnum result = VALUES_ARRAY[i];
-			if (result.getName().equals(name)) {
-				return result;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the '<em><b>Signal Type Enum</b></em>' literal with the specified integer value.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the integer value.
-	 * @return the matching enumerator or <code>null</code>.
-	 * @generated
-	 */
-	public static SignalTypeEnum get(int value) {
-		switch (value) {
-			case CREATESIGNALS_VALUE: return CREATESIGNALS;
-		}
-		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 SignalTypeEnum(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;
-	}
-	
-} //SignalTypeEnum
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java
index 31fe367..be7628f 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SignalWatcher.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -27,7 +29,6 @@
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getName <em>Name</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getDirectory <em>Directory</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getSignal <em>Signal</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getHandlers <em>Handlers</em>}</li>
  * </ul>
  *
@@ -89,35 +90,6 @@
 	void setDirectory(String value);
 
 	/**
-	 * Returns the value of the '<em><b>Signal</b></em>' attribute.
-	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.SignalTypeEnum}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Signal</em>' attribute isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Signal</em>' attribute.
-	 * @see org.eclipse.osbp.xtext.signal.SignalTypeEnum
-	 * @see #setSignal(SignalTypeEnum)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSignalWatcher_Signal()
-	 * @model unique="false"
-	 * @generated
-	 */
-	SignalTypeEnum getSignal();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SignalWatcher#getSignal <em>Signal</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Signal</em>' attribute.
-	 * @see org.eclipse.osbp.xtext.signal.SignalTypeEnum
-	 * @see #getSignal()
-	 * @generated
-	 */
-	void setSignal(SignalTypeEnum value);
-
-	/**
 	 * Returns the value of the '<em><b>Handlers</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.osbp.xtext.signal.SignalHandler}.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SingleTransfer.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SingleTransfer.java
deleted file mode 100644
index 36f68ba..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/SingleTransfer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Single Transfer</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.SingleTransfer#getInterchange <em>Interchange</em>}</li>
- * </ul>
- *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSingleTransfer()
- * @model
- * @generated
- */
-public interface SingleTransfer extends DataTransfer {
-	/**
-	 * Returns the value of the '<em><b>Interchange</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Interchange</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>Interchange</em>' containment reference.
-	 * @see #setInterchange(SignalDatainterchange)
-	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getSingleTransfer_Interchange()
-	 * @model containment="true"
-	 * @generated
-	 */
-	SignalDatainterchange getInterchange();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.SingleTransfer#getInterchange <em>Interchange</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Interchange</em>' containment reference.
-	 * @see #getInterchange()
-	 * @generated
-	 */
-	void setInterchange(SignalDatainterchange value);
-
-} // SingleTransfer
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerFile.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerFile.java
new file mode 100644
index 0000000..d329229
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerFile.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Trigger File</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask <em>Filemask</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getTriggerFile()
+ * @model
+ * @generated
+ */
+public interface TriggerFile extends TriggerPolicy {
+	/**
+	 * Returns the value of the '<em><b>Filemask</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filemask</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filemask</em>' attribute.
+	 * @see #setFilemask(String)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getTriggerFile_Filemask()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getFilemask();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.TriggerFile#getFilemask <em>Filemask</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filemask</em>' attribute.
+	 * @see #getFilemask()
+	 * @generated
+	 */
+	void setFilemask(String value);
+
+} // TriggerFile
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DataTransfer.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerPolicy.java
similarity index 65%
copy from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DataTransfer.java
copy to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerPolicy.java
index c17607b..6a1ddae 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/DataTransfer.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/TriggerPolicy.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -17,13 +19,13 @@
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Data Transfer</b></em>'.
+ * A representation of the model object '<em><b>Trigger Policy</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getDataTransfer()
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getTriggerPolicy()
  * @model
  * @generated
  */
-public interface DataTransfer extends SignalLazyResolver {
-} // DataTransfer
+public interface TriggerPolicy extends SignalLazyResolver {
+} // TriggerPolicy
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java
new file mode 100644
index 0000000..dcc3003
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/WeeklyScheduler.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Weekly Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getDayofweek <em>Dayofweek</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getHour <em>Hour</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWeeklyScheduler()
+ * @model
+ * @generated
+ */
+public interface WeeklyScheduler extends Scheduler {
+	/**
+	 * Returns the value of the '<em><b>Dayofweek</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.xtext.signal.DayOfWeekEnum}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dayofweek</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dayofweek</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.signal.DayOfWeekEnum
+	 * @see #setDayofweek(DayOfWeekEnum)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWeeklyScheduler_Dayofweek()
+	 * @model unique="false"
+	 * @generated
+	 */
+	DayOfWeekEnum getDayofweek();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getDayofweek <em>Dayofweek</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dayofweek</em>' attribute.
+	 * @see org.eclipse.osbp.xtext.signal.DayOfWeekEnum
+	 * @see #getDayofweek()
+	 * @generated
+	 */
+	void setDayofweek(DayOfWeekEnum value);
+
+	/**
+	 * Returns the value of the '<em><b>Hour</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hour</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hour</em>' attribute.
+	 * @see #setHour(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWeeklyScheduler_Hour()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getHour();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getHour <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hour</em>' attribute.
+	 * @see #getHour()
+	 * @generated
+	 */
+	void setHour(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Minute</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Minute</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Minute</em>' attribute.
+	 * @see #setMinute(int)
+	 * @see org.eclipse.osbp.xtext.signal.SignalDSLPackage#getWeeklyScheduler_Minute()
+	 * @model unique="false"
+	 * @generated
+	 */
+	int getMinute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler#getMinute <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Minute</em>' attribute.
+	 * @see #getMinute()
+	 * @generated
+	 */
+	void setMinute(int value);
+
+} // WeeklyScheduler
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java
new file mode 100644
index 0000000..6363a30
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/CronSchedulerImpl.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.CronScheduler;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cron Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.CronSchedulerImpl#getExpression <em>Expression</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CronSchedulerImpl extends SchedulerImpl implements CronScheduler {
+	/**
+	 * The default value of the '{@link #getExpression() <em>Expression</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String EXPRESSION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getExpression() <em>Expression</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected String expression = EXPRESSION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CronSchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.CRON_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getExpression() {
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExpression(String newExpression) {
+		String oldExpression = expression;
+		expression = newExpression;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.CRON_SCHEDULER__EXPRESSION, oldExpression, expression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.CRON_SCHEDULER__EXPRESSION:
+				return getExpression();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.CRON_SCHEDULER__EXPRESSION:
+				setExpression((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.CRON_SCHEDULER__EXPRESSION:
+				setExpression(EXPRESSION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.CRON_SCHEDULER__EXPRESSION:
+				return EXPRESSION_EDEFAULT == null ? expression != null : !EXPRESSION_EDEFAULT.equals(expression);
+		}
+		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(" (expression: ");
+		result.append(expression);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CronSchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java
new file mode 100644
index 0000000..6862609
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DailySchedulerImpl.java
@@ -0,0 +1,230 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.DailyScheduler;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Daily Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl#getHour <em>Hour</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.DailySchedulerImpl#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DailySchedulerImpl extends SchedulerImpl implements DailyScheduler {
+	/**
+	 * The default value of the '{@link #getHour() <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHour()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int HOUR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getHour() <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHour()
+	 * @generated
+	 * @ordered
+	 */
+	protected int hour = HOUR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MINUTE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected int minute = MINUTE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DailySchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.DAILY_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getHour() {
+		return hour;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHour(int newHour) {
+		int oldHour = hour;
+		hour = newHour;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.DAILY_SCHEDULER__HOUR, oldHour, hour));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMinute() {
+		return minute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinute(int newMinute) {
+		int oldMinute = minute;
+		minute = newMinute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.DAILY_SCHEDULER__MINUTE, oldMinute, minute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.DAILY_SCHEDULER__HOUR:
+				return getHour();
+			case SignalDSLPackage.DAILY_SCHEDULER__MINUTE:
+				return getMinute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.DAILY_SCHEDULER__HOUR:
+				setHour((Integer)newValue);
+				return;
+			case SignalDSLPackage.DAILY_SCHEDULER__MINUTE:
+				setMinute((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.DAILY_SCHEDULER__HOUR:
+				setHour(HOUR_EDEFAULT);
+				return;
+			case SignalDSLPackage.DAILY_SCHEDULER__MINUTE:
+				setMinute(MINUTE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.DAILY_SCHEDULER__HOUR:
+				return hour != HOUR_EDEFAULT;
+			case SignalDSLPackage.DAILY_SCHEDULER__MINUTE:
+				return minute != MINUTE_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(" (hour: ");
+		result.append(hour);
+		result.append(", minute: ");
+		result.append(minute);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DailySchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java
new file mode 100644
index 0000000..c0c28d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/HourlySchedulerImpl.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.HourlyScheduler;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hourly Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.HourlySchedulerImpl#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HourlySchedulerImpl extends SchedulerImpl implements HourlyScheduler {
+	/**
+	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MINUTE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected int minute = MINUTE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HourlySchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.HOURLY_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMinute() {
+		return minute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinute(int newMinute) {
+		int oldMinute = minute;
+		minute = newMinute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.HOURLY_SCHEDULER__MINUTE, oldMinute, minute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.HOURLY_SCHEDULER__MINUTE:
+				return getMinute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.HOURLY_SCHEDULER__MINUTE:
+				setMinute((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.HOURLY_SCHEDULER__MINUTE:
+				setMinute(MINUTE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.HOURLY_SCHEDULER__MINUTE:
+				return minute != MINUTE_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(" (minute: ");
+		result.append(minute);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HourlySchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/ListTransferImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/ListTransferImpl.java
deleted file mode 100644
index bdf899a..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/ListTransferImpl.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal.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.signal.ListTransfer;
-import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
-import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>List Transfer</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.ListTransferImpl#getInterchanges <em>Interchanges</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class ListTransferImpl extends DataTransferImpl implements ListTransfer {
-	/**
-	 * The cached value of the '{@link #getInterchanges() <em>Interchanges</em>}' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getInterchanges()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList<SignalDatainterchange> interchanges;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected ListTransferImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.LIST_TRANSFER;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EList<SignalDatainterchange> getInterchanges() {
-		if (interchanges == null) {
-			interchanges = new EObjectContainmentEList<SignalDatainterchange>(SignalDatainterchange.class, this, SignalDSLPackage.LIST_TRANSFER__INTERCHANGES);
-		}
-		return interchanges;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case SignalDSLPackage.LIST_TRANSFER__INTERCHANGES:
-				return ((InternalEList<?>)getInterchanges()).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 SignalDSLPackage.LIST_TRANSFER__INTERCHANGES:
-				return getInterchanges();
-		}
-		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 SignalDSLPackage.LIST_TRANSFER__INTERCHANGES:
-				getInterchanges().clear();
-				getInterchanges().addAll((Collection<? extends SignalDatainterchange>)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.LIST_TRANSFER__INTERCHANGES:
-				getInterchanges().clear();
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.LIST_TRANSFER__INTERCHANGES:
-				return interchanges != null && !interchanges.isEmpty();
-		}
-		return super.eIsSet(featureID);
-	}
-
-} //ListTransferImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java
new file mode 100644
index 0000000..89f117a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/MonthlySchedulerImpl.java
@@ -0,0 +1,284 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.MonthlyScheduler;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Monthly Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl#getDayofmonth <em>Dayofmonth</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl#getHour <em>Hour</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.MonthlySchedulerImpl#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MonthlySchedulerImpl extends SchedulerImpl implements MonthlyScheduler {
+	/**
+	 * The default value of the '{@link #getDayofmonth() <em>Dayofmonth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDayofmonth()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DAYOFMONTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDayofmonth() <em>Dayofmonth</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDayofmonth()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dayofmonth = DAYOFMONTH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHour() <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHour()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int HOUR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getHour() <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHour()
+	 * @generated
+	 * @ordered
+	 */
+	protected int hour = HOUR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MINUTE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected int minute = MINUTE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MonthlySchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.MONTHLY_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getDayofmonth() {
+		return dayofmonth;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDayofmonth(int newDayofmonth) {
+		int oldDayofmonth = dayofmonth;
+		dayofmonth = newDayofmonth;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.MONTHLY_SCHEDULER__DAYOFMONTH, oldDayofmonth, dayofmonth));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getHour() {
+		return hour;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHour(int newHour) {
+		int oldHour = hour;
+		hour = newHour;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.MONTHLY_SCHEDULER__HOUR, oldHour, hour));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMinute() {
+		return minute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinute(int newMinute) {
+		int oldMinute = minute;
+		minute = newMinute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.MONTHLY_SCHEDULER__MINUTE, oldMinute, minute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.MONTHLY_SCHEDULER__DAYOFMONTH:
+				return getDayofmonth();
+			case SignalDSLPackage.MONTHLY_SCHEDULER__HOUR:
+				return getHour();
+			case SignalDSLPackage.MONTHLY_SCHEDULER__MINUTE:
+				return getMinute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.MONTHLY_SCHEDULER__DAYOFMONTH:
+				setDayofmonth((Integer)newValue);
+				return;
+			case SignalDSLPackage.MONTHLY_SCHEDULER__HOUR:
+				setHour((Integer)newValue);
+				return;
+			case SignalDSLPackage.MONTHLY_SCHEDULER__MINUTE:
+				setMinute((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.MONTHLY_SCHEDULER__DAYOFMONTH:
+				setDayofmonth(DAYOFMONTH_EDEFAULT);
+				return;
+			case SignalDSLPackage.MONTHLY_SCHEDULER__HOUR:
+				setHour(HOUR_EDEFAULT);
+				return;
+			case SignalDSLPackage.MONTHLY_SCHEDULER__MINUTE:
+				setMinute(MINUTE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.MONTHLY_SCHEDULER__DAYOFMONTH:
+				return dayofmonth != DAYOFMONTH_EDEFAULT;
+			case SignalDSLPackage.MONTHLY_SCHEDULER__HOUR:
+				return hour != HOUR_EDEFAULT;
+			case SignalDSLPackage.MONTHLY_SCHEDULER__MINUTE:
+				return minute != MINUTE_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(" (dayofmonth: ");
+		result.append(dayofmonth);
+		result.append(", hour: ");
+		result.append(hour);
+		result.append(", minute: ");
+		result.append(minute);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MonthlySchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DataTransferImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerImpl.java
similarity index 70%
rename from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DataTransferImpl.java
rename to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerImpl.java
index a87a172..07f16db 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DataTransferImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SchedulerImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -16,23 +18,23 @@
 
 import org.eclipse.emf.ecore.EClass;
 
-import org.eclipse.osbp.xtext.signal.DataTransfer;
+import org.eclipse.osbp.xtext.signal.Scheduler;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Data Transfer</b></em>'.
+ * An implementation of the model object '<em><b>Scheduler</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public class DataTransferImpl extends SignalLazyResolverImpl implements DataTransfer {
+public class SchedulerImpl extends SignalLazyResolverImpl implements Scheduler {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected DataTransferImpl() {
+	protected SchedulerImpl() {
 		super();
 	}
 
@@ -43,7 +45,7 @@
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.DATA_TRANSFER;
+		return SignalDSLPackage.Literals.SCHEDULER;
 	}
 
-} //DataTransferImpl
+} //SchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java
index 5f6390d..934ace4 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalBaseImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java
index 94885c7..1dd9f7a 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLFactoryImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -76,10 +78,16 @@
 			case SignalDSLPackage.SIGNAL_BASE: return createSignalBase();
 			case SignalDSLPackage.SIGNAL_WATCHER: return createSignalWatcher();
 			case SignalDSLPackage.SIGNAL_HANDLER: return createSignalHandler();
+			case SignalDSLPackage.TRIGGER_POLICY: return createTriggerPolicy();
+			case SignalDSLPackage.TRIGGER_FILE: return createTriggerFile();
+			case SignalDSLPackage.SIGNAL_SCHEDULER: return createSignalScheduler();
+			case SignalDSLPackage.SCHEDULER: return createScheduler();
+			case SignalDSLPackage.CRON_SCHEDULER: return createCronScheduler();
+			case SignalDSLPackage.HOURLY_SCHEDULER: return createHourlyScheduler();
+			case SignalDSLPackage.DAILY_SCHEDULER: return createDailyScheduler();
+			case SignalDSLPackage.WEEKLY_SCHEDULER: return createWeeklyScheduler();
+			case SignalDSLPackage.MONTHLY_SCHEDULER: return createMonthlyScheduler();
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE: return createSignalDatainterchange();
-			case SignalDSLPackage.DATA_TRANSFER: return createDataTransfer();
-			case SignalDSLPackage.SINGLE_TRANSFER: return createSingleTransfer();
-			case SignalDSLPackage.LIST_TRANSFER: return createListTransfer();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -93,14 +101,12 @@
 	@Override
 	public Object createFromString(EDataType eDataType, String initialValue) {
 		switch (eDataType.getClassifierID()) {
-			case SignalDSLPackage.SIGNAL_HANDLER_TYPE_ENUM:
-				return createSignalHandlerTypeEnumFromString(eDataType, initialValue);
-			case SignalDSLPackage.SIGNAL_TYPE_ENUM:
-				return createSignalTypeEnumFromString(eDataType, initialValue);
 			case SignalDSLPackage.SIGNAL_ACTION_ENUM:
 				return createSignalActionEnumFromString(eDataType, initialValue);
 			case SignalDSLPackage.SIGNAL_EXECUTION_TYPE_ENUM:
 				return createSignalExecutionTypeEnumFromString(eDataType, initialValue);
+			case SignalDSLPackage.DAY_OF_WEEK_ENUM:
+				return createDayOfWeekEnumFromString(eDataType, initialValue);
 			case SignalDSLPackage.INTERNAL_EOBJECT:
 				return createInternalEObjectFromString(eDataType, initialValue);
 			default:
@@ -116,14 +122,12 @@
 	@Override
 	public String convertToString(EDataType eDataType, Object instanceValue) {
 		switch (eDataType.getClassifierID()) {
-			case SignalDSLPackage.SIGNAL_HANDLER_TYPE_ENUM:
-				return convertSignalHandlerTypeEnumToString(eDataType, instanceValue);
-			case SignalDSLPackage.SIGNAL_TYPE_ENUM:
-				return convertSignalTypeEnumToString(eDataType, instanceValue);
 			case SignalDSLPackage.SIGNAL_ACTION_ENUM:
 				return convertSignalActionEnumToString(eDataType, instanceValue);
 			case SignalDSLPackage.SIGNAL_EXECUTION_TYPE_ENUM:
 				return convertSignalExecutionTypeEnumToString(eDataType, instanceValue);
+			case SignalDSLPackage.DAY_OF_WEEK_ENUM:
+				return convertDayOfWeekEnumToString(eDataType, instanceValue);
 			case SignalDSLPackage.INTERNAL_EOBJECT:
 				return convertInternalEObjectToString(eDataType, instanceValue);
 			default:
@@ -196,6 +200,96 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public TriggerPolicy createTriggerPolicy() {
+		TriggerPolicyImpl triggerPolicy = new TriggerPolicyImpl();
+		return triggerPolicy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TriggerFile createTriggerFile() {
+		TriggerFileImpl triggerFile = new TriggerFileImpl();
+		return triggerFile;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SignalScheduler createSignalScheduler() {
+		SignalSchedulerImpl signalScheduler = new SignalSchedulerImpl();
+		return signalScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Scheduler createScheduler() {
+		SchedulerImpl scheduler = new SchedulerImpl();
+		return scheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CronScheduler createCronScheduler() {
+		CronSchedulerImpl cronScheduler = new CronSchedulerImpl();
+		return cronScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public HourlyScheduler createHourlyScheduler() {
+		HourlySchedulerImpl hourlyScheduler = new HourlySchedulerImpl();
+		return hourlyScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DailyScheduler createDailyScheduler() {
+		DailySchedulerImpl dailyScheduler = new DailySchedulerImpl();
+		return dailyScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public WeeklyScheduler createWeeklyScheduler() {
+		WeeklySchedulerImpl weeklyScheduler = new WeeklySchedulerImpl();
+		return weeklyScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public MonthlyScheduler createMonthlyScheduler() {
+		MonthlySchedulerImpl monthlyScheduler = new MonthlySchedulerImpl();
+		return monthlyScheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public SignalDatainterchange createSignalDatainterchange() {
 		SignalDatainterchangeImpl signalDatainterchange = new SignalDatainterchangeImpl();
 		return signalDatainterchange;
@@ -206,76 +300,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public DataTransfer createDataTransfer() {
-		DataTransferImpl dataTransfer = new DataTransferImpl();
-		return dataTransfer;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SingleTransfer createSingleTransfer() {
-		SingleTransferImpl singleTransfer = new SingleTransferImpl();
-		return singleTransfer;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ListTransfer createListTransfer() {
-		ListTransferImpl listTransfer = new ListTransferImpl();
-		return listTransfer;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SignalHandlerTypeEnum createSignalHandlerTypeEnumFromString(EDataType eDataType, String initialValue) {
-		SignalHandlerTypeEnum result = SignalHandlerTypeEnum.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 convertSignalHandlerTypeEnumToString(EDataType eDataType, Object instanceValue) {
-		return instanceValue == null ? null : instanceValue.toString();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SignalTypeEnum createSignalTypeEnumFromString(EDataType eDataType, String initialValue) {
-		SignalTypeEnum result = SignalTypeEnum.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 convertSignalTypeEnumToString(EDataType eDataType, Object instanceValue) {
-		return instanceValue == null ? null : instanceValue.toString();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public SignalActionEnum createSignalActionEnumFromString(EDataType eDataType, String initialValue) {
 		SignalActionEnum result = SignalActionEnum.get(initialValue);
 		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
@@ -316,6 +340,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public DayOfWeekEnum createDayOfWeekEnumFromString(EDataType eDataType, String initialValue) {
+		DayOfWeekEnum result = DayOfWeekEnum.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 convertDayOfWeekEnumToString(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);
 	}
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java
index 2d9f1e8..f06f899 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDSLPackageImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -30,8 +32,12 @@
 
 import org.eclipse.osbp.xtext.datainterchange.DataDSLPackage;
 
-import org.eclipse.osbp.xtext.signal.DataTransfer;
-import org.eclipse.osbp.xtext.signal.ListTransfer;
+import org.eclipse.osbp.xtext.signal.CronScheduler;
+import org.eclipse.osbp.xtext.signal.DailyScheduler;
+import org.eclipse.osbp.xtext.signal.DayOfWeekEnum;
+import org.eclipse.osbp.xtext.signal.HourlyScheduler;
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
+import org.eclipse.osbp.xtext.signal.Scheduler;
 import org.eclipse.osbp.xtext.signal.SignalActionEnum;
 import org.eclipse.osbp.xtext.signal.SignalBase;
 import org.eclipse.osbp.xtext.signal.SignalDSLFactory;
@@ -39,14 +45,15 @@
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalLazyResolver;
 import org.eclipse.osbp.xtext.signal.SignalModel;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
 import org.eclipse.osbp.xtext.signal.SignalProcessor;
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.SingleTransfer;
+import org.eclipse.osbp.xtext.signal.TriggerFile;
+import org.eclipse.osbp.xtext.signal.TriggerPolicy;
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
 
 import org.eclipse.xtext.xtype.XtypePackage;
 
@@ -104,6 +111,69 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EClass triggerPolicyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass triggerFileEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass signalSchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass schedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cronSchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hourlySchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dailySchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass weeklySchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass monthlySchedulerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EClass signalProcessorEClass = null;
 
 	/**
@@ -118,41 +188,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass dataTransferEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass singleTransferEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EClass listTransferEClass = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EEnum signalHandlerTypeEnumEEnum = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	private EEnum signalTypeEnumEEnum = null;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	private EEnum signalActionEnumEEnum = null;
 
 	/**
@@ -167,6 +202,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	private EEnum dayOfWeekEnumEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	private EDataType internalEObjectEDataType = null;
 
 	/**
@@ -346,17 +388,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalWatcher_Signal() {
-		return (EAttribute)signalWatcherEClass.getEStructuralFeatures().get(2);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public EReference getSignalWatcher_Handlers() {
-		return (EReference)signalWatcherEClass.getEStructuralFeatures().get(3);
+		return (EReference)signalWatcherEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -382,7 +415,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalHandler_ActionType() {
+	public EAttribute getSignalHandler_Executiontype() {
 		return (EAttribute)signalHandlerEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -391,8 +424,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalHandler_Filemask() {
-		return (EAttribute)signalHandlerEClass.getEStructuralFeatures().get(2);
+	public EReference getSignalHandler_Interchanges() {
+		return (EReference)signalHandlerEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -400,7 +433,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getSignalHandler_Data() {
+	public EReference getSignalHandler_Triggerpolicy() {
 		return (EReference)signalHandlerEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -409,8 +442,188 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getSignalHandler_Executiontype() {
-		return (EAttribute)signalHandlerEClass.getEStructuralFeatures().get(4);
+	public EClass getTriggerPolicy() {
+		return triggerPolicyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getTriggerFile() {
+		return triggerFileEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getTriggerFile_Filemask() {
+		return (EAttribute)triggerFileEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSignalScheduler() {
+		return signalSchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSignalScheduler_Scheduler() {
+		return (EReference)signalSchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getScheduler() {
+		return schedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCronScheduler() {
+		return cronSchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getCronScheduler_Expression() {
+		return (EAttribute)cronSchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getHourlyScheduler() {
+		return hourlySchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getHourlyScheduler_Minute() {
+		return (EAttribute)hourlySchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDailyScheduler() {
+		return dailySchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDailyScheduler_Hour() {
+		return (EAttribute)dailySchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDailyScheduler_Minute() {
+		return (EAttribute)dailySchedulerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getWeeklyScheduler() {
+		return weeklySchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getWeeklyScheduler_Dayofweek() {
+		return (EAttribute)weeklySchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getWeeklyScheduler_Hour() {
+		return (EAttribute)weeklySchedulerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getWeeklyScheduler_Minute() {
+		return (EAttribute)weeklySchedulerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getMonthlyScheduler() {
+		return monthlySchedulerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMonthlyScheduler_Dayofmonth() {
+		return (EAttribute)monthlySchedulerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMonthlyScheduler_Hour() {
+		return (EAttribute)monthlySchedulerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getMonthlyScheduler_Minute() {
+		return (EAttribute)monthlySchedulerEClass.getEStructuralFeatures().get(2);
 	}
 
 	/**
@@ -463,69 +676,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EClass getDataTransfer() {
-		return dataTransferEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EClass getSingleTransfer() {
-		return singleTransferEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getSingleTransfer_Interchange() {
-		return (EReference)singleTransferEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EClass getListTransfer() {
-		return listTransferEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getListTransfer_Interchanges() {
-		return (EReference)listTransferEClass.getEStructuralFeatures().get(0);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EEnum getSignalHandlerTypeEnum() {
-		return signalHandlerTypeEnumEEnum;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EEnum getSignalTypeEnum() {
-		return signalTypeEnumEEnum;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public EEnum getSignalActionEnum() {
 		return signalActionEnumEEnum;
 	}
@@ -544,6 +694,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EEnum getDayOfWeekEnum() {
+		return dayOfWeekEnumEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EDataType getInternalEObject() {
 		return internalEObjectEDataType;
 	}
@@ -592,15 +751,43 @@
 		signalWatcherEClass = createEClass(SIGNAL_WATCHER);
 		createEAttribute(signalWatcherEClass, SIGNAL_WATCHER__NAME);
 		createEAttribute(signalWatcherEClass, SIGNAL_WATCHER__DIRECTORY);
-		createEAttribute(signalWatcherEClass, SIGNAL_WATCHER__SIGNAL);
 		createEReference(signalWatcherEClass, SIGNAL_WATCHER__HANDLERS);
 
 		signalHandlerEClass = createEClass(SIGNAL_HANDLER);
 		createEAttribute(signalHandlerEClass, SIGNAL_HANDLER__NAME);
-		createEAttribute(signalHandlerEClass, SIGNAL_HANDLER__ACTION_TYPE);
-		createEAttribute(signalHandlerEClass, SIGNAL_HANDLER__FILEMASK);
-		createEReference(signalHandlerEClass, SIGNAL_HANDLER__DATA);
 		createEAttribute(signalHandlerEClass, SIGNAL_HANDLER__EXECUTIONTYPE);
+		createEReference(signalHandlerEClass, SIGNAL_HANDLER__INTERCHANGES);
+		createEReference(signalHandlerEClass, SIGNAL_HANDLER__TRIGGERPOLICY);
+
+		triggerPolicyEClass = createEClass(TRIGGER_POLICY);
+
+		triggerFileEClass = createEClass(TRIGGER_FILE);
+		createEAttribute(triggerFileEClass, TRIGGER_FILE__FILEMASK);
+
+		signalSchedulerEClass = createEClass(SIGNAL_SCHEDULER);
+		createEReference(signalSchedulerEClass, SIGNAL_SCHEDULER__SCHEDULER);
+
+		schedulerEClass = createEClass(SCHEDULER);
+
+		cronSchedulerEClass = createEClass(CRON_SCHEDULER);
+		createEAttribute(cronSchedulerEClass, CRON_SCHEDULER__EXPRESSION);
+
+		hourlySchedulerEClass = createEClass(HOURLY_SCHEDULER);
+		createEAttribute(hourlySchedulerEClass, HOURLY_SCHEDULER__MINUTE);
+
+		dailySchedulerEClass = createEClass(DAILY_SCHEDULER);
+		createEAttribute(dailySchedulerEClass, DAILY_SCHEDULER__HOUR);
+		createEAttribute(dailySchedulerEClass, DAILY_SCHEDULER__MINUTE);
+
+		weeklySchedulerEClass = createEClass(WEEKLY_SCHEDULER);
+		createEAttribute(weeklySchedulerEClass, WEEKLY_SCHEDULER__DAYOFWEEK);
+		createEAttribute(weeklySchedulerEClass, WEEKLY_SCHEDULER__HOUR);
+		createEAttribute(weeklySchedulerEClass, WEEKLY_SCHEDULER__MINUTE);
+
+		monthlySchedulerEClass = createEClass(MONTHLY_SCHEDULER);
+		createEAttribute(monthlySchedulerEClass, MONTHLY_SCHEDULER__DAYOFMONTH);
+		createEAttribute(monthlySchedulerEClass, MONTHLY_SCHEDULER__HOUR);
+		createEAttribute(monthlySchedulerEClass, MONTHLY_SCHEDULER__MINUTE);
 
 		signalProcessorEClass = createEClass(SIGNAL_PROCESSOR);
 
@@ -609,19 +796,10 @@
 		createEReference(signalDatainterchangeEClass, SIGNAL_DATAINTERCHANGE__DATA_REF);
 		createEAttribute(signalDatainterchangeEClass, SIGNAL_DATAINTERCHANGE__FILE_NAME);
 
-		dataTransferEClass = createEClass(DATA_TRANSFER);
-
-		singleTransferEClass = createEClass(SINGLE_TRANSFER);
-		createEReference(singleTransferEClass, SINGLE_TRANSFER__INTERCHANGE);
-
-		listTransferEClass = createEClass(LIST_TRANSFER);
-		createEReference(listTransferEClass, LIST_TRANSFER__INTERCHANGES);
-
 		// Create enums
-		signalHandlerTypeEnumEEnum = createEEnum(SIGNAL_HANDLER_TYPE_ENUM);
-		signalTypeEnumEEnum = createEEnum(SIGNAL_TYPE_ENUM);
 		signalActionEnumEEnum = createEEnum(SIGNAL_ACTION_ENUM);
 		signalExecutionTypeEnumEEnum = createEEnum(SIGNAL_EXECUTION_TYPE_ENUM);
+		dayOfWeekEnumEEnum = createEEnum(DAY_OF_WEEK_ENUM);
 
 		// Create data types
 		internalEObjectEDataType = createEDataType(INTERNAL_EOBJECT);
@@ -665,16 +843,22 @@
 		signalBaseEClass.getESuperTypes().add(this.getSignalLazyResolver());
 		signalWatcherEClass.getESuperTypes().add(this.getSignalLazyResolver());
 		signalHandlerEClass.getESuperTypes().add(this.getSignalLazyResolver());
+		triggerPolicyEClass.getESuperTypes().add(this.getSignalLazyResolver());
+		triggerFileEClass.getESuperTypes().add(this.getTriggerPolicy());
+		signalSchedulerEClass.getESuperTypes().add(this.getTriggerPolicy());
+		schedulerEClass.getESuperTypes().add(this.getSignalLazyResolver());
+		cronSchedulerEClass.getESuperTypes().add(this.getScheduler());
+		hourlySchedulerEClass.getESuperTypes().add(this.getScheduler());
+		dailySchedulerEClass.getESuperTypes().add(this.getScheduler());
+		weeklySchedulerEClass.getESuperTypes().add(this.getScheduler());
+		monthlySchedulerEClass.getESuperTypes().add(this.getScheduler());
 		signalProcessorEClass.getESuperTypes().add(this.getSignalLazyResolver());
 		signalDatainterchangeEClass.getESuperTypes().add(this.getSignalProcessor());
-		dataTransferEClass.getESuperTypes().add(this.getSignalLazyResolver());
-		singleTransferEClass.getESuperTypes().add(this.getDataTransfer());
-		listTransferEClass.getESuperTypes().add(this.getDataTransfer());
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(signalModelEClass, SignalModel.class, "SignalModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getSignalModel_ImportSection(), theXtypePackage.getXImportSection(), null, "importSection", null, 0, 1, SignalModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getSignalModel_Packages(), this.getSignalPackage(), null, "packages", null, 0, -1, SignalModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalModel_Packages(), this.getSignalPackage(), null, "packages", null, 0, 1, SignalModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(signalLazyResolverEClass, SignalLazyResolver.class, "SignalLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
@@ -690,15 +874,43 @@
 		initEClass(signalWatcherEClass, SignalWatcher.class, "SignalWatcher", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getSignalWatcher_Name(), theEcorePackage.getEString(), "name", null, 0, 1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getSignalWatcher_Directory(), theEcorePackage.getEString(), "directory", null, 0, 1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSignalWatcher_Signal(), this.getSignalTypeEnum(), "signal", null, 0, 1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getSignalWatcher_Handlers(), this.getSignalHandler(), null, "handlers", null, 0, -1, SignalWatcher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(signalHandlerEClass, SignalHandler.class, "SignalHandler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getSignalHandler_Name(), theEcorePackage.getEString(), "name", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSignalHandler_ActionType(), this.getSignalHandlerTypeEnum(), "actionType", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEAttribute(getSignalHandler_Filemask(), theEcorePackage.getEString(), "filemask", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getSignalHandler_Data(), this.getDataTransfer(), null, "data", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getSignalHandler_Executiontype(), this.getSignalExecutionTypeEnum(), "executiontype", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalHandler_Interchanges(), this.getSignalDatainterchange(), null, "interchanges", null, 0, -1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getSignalHandler_Triggerpolicy(), this.getTriggerPolicy(), null, "triggerpolicy", null, 0, 1, SignalHandler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(triggerPolicyEClass, TriggerPolicy.class, "TriggerPolicy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(triggerFileEClass, TriggerFile.class, "TriggerFile", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getTriggerFile_Filemask(), theEcorePackage.getEString(), "filemask", null, 0, 1, TriggerFile.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(signalSchedulerEClass, SignalScheduler.class, "SignalScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSignalScheduler_Scheduler(), this.getScheduler(), null, "scheduler", null, 0, 1, SignalScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(schedulerEClass, Scheduler.class, "Scheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(cronSchedulerEClass, CronScheduler.class, "CronScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getCronScheduler_Expression(), theEcorePackage.getEString(), "expression", null, 0, 1, CronScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(hourlySchedulerEClass, HourlyScheduler.class, "HourlyScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getHourlyScheduler_Minute(), theEcorePackage.getEInt(), "minute", null, 0, 1, HourlyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(dailySchedulerEClass, DailyScheduler.class, "DailyScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDailyScheduler_Hour(), theEcorePackage.getEInt(), "hour", null, 0, 1, DailyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getDailyScheduler_Minute(), theEcorePackage.getEInt(), "minute", null, 0, 1, DailyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(weeklySchedulerEClass, WeeklyScheduler.class, "WeeklyScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getWeeklyScheduler_Dayofweek(), this.getDayOfWeekEnum(), "dayofweek", null, 0, 1, WeeklyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getWeeklyScheduler_Hour(), theEcorePackage.getEInt(), "hour", null, 0, 1, WeeklyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getWeeklyScheduler_Minute(), theEcorePackage.getEInt(), "minute", null, 0, 1, WeeklyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(monthlySchedulerEClass, MonthlyScheduler.class, "MonthlyScheduler", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getMonthlyScheduler_Dayofmonth(), theEcorePackage.getEInt(), "dayofmonth", null, 0, 1, MonthlyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMonthlyScheduler_Hour(), theEcorePackage.getEInt(), "hour", null, 0, 1, MonthlyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getMonthlyScheduler_Minute(), theEcorePackage.getEInt(), "minute", null, 0, 1, MonthlyScheduler.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(signalProcessorEClass, SignalProcessor.class, "SignalProcessor", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
@@ -707,32 +919,24 @@
 		initEReference(getSignalDatainterchange_DataRef(), theDataDSLPackage.getDataInterchange(), null, "dataRef", null, 0, 1, SignalDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getSignalDatainterchange_FileName(), theEcorePackage.getEString(), "fileName", null, 0, 1, SignalDatainterchange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		initEClass(dataTransferEClass, DataTransfer.class, "DataTransfer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-
-		initEClass(singleTransferEClass, SingleTransfer.class, "SingleTransfer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getSingleTransfer_Interchange(), this.getSignalDatainterchange(), null, "interchange", null, 0, 1, SingleTransfer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
-		initEClass(listTransferEClass, ListTransfer.class, "ListTransfer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getListTransfer_Interchanges(), this.getSignalDatainterchange(), null, "interchanges", null, 0, -1, ListTransfer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
 		// Initialize enums and add enum literals
-		initEEnum(signalHandlerTypeEnumEEnum, SignalHandlerTypeEnum.class, "SignalHandlerTypeEnum");
-		addEEnumLiteral(signalHandlerTypeEnumEEnum, SignalHandlerTypeEnum.DOAFTER);
-		addEEnumLiteral(signalHandlerTypeEnumEEnum, SignalHandlerTypeEnum.DOAFTERMODIFY);
-		addEEnumLiteral(signalHandlerTypeEnumEEnum, SignalHandlerTypeEnum.DOAFTERCREATE);
-
-		initEEnum(signalTypeEnumEEnum, SignalTypeEnum.class, "SignalTypeEnum");
-		addEEnumLiteral(signalTypeEnumEEnum, SignalTypeEnum.CREATESIGNALS);
-		addEEnumLiteral(signalTypeEnumEEnum, SignalTypeEnum.MODIFYSIGNALS);
-
 		initEEnum(signalActionEnumEEnum, SignalActionEnum.class, "SignalActionEnum");
 		addEEnumLiteral(signalActionEnumEEnum, SignalActionEnum.DATAIMPORT);
 		addEEnumLiteral(signalActionEnumEEnum, SignalActionEnum.DATAEXPORT);
 		addEEnumLiteral(signalActionEnumEEnum, SignalActionEnum.NONE);
 
 		initEEnum(signalExecutionTypeEnumEEnum, SignalExecutionTypeEnum.class, "SignalExecutionTypeEnum");
-		addEEnumLiteral(signalExecutionTypeEnumEEnum, SignalExecutionTypeEnum.SYNC);
-		addEEnumLiteral(signalExecutionTypeEnumEEnum, SignalExecutionTypeEnum.ASYNC);
+		addEEnumLiteral(signalExecutionTypeEnumEEnum, SignalExecutionTypeEnum.SEQ);
+		addEEnumLiteral(signalExecutionTypeEnumEEnum, SignalExecutionTypeEnum.NOSEQ);
+
+		initEEnum(dayOfWeekEnumEEnum, DayOfWeekEnum.class, "DayOfWeekEnum");
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.SUNDAY);
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.MONDAY);
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.TUESDAY);
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.WEDNESDAY);
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.THURSDAY);
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.FRIDAY);
+		addEEnumLiteral(dayOfWeekEnumEEnum, DayOfWeekEnum.SATURDAY);
 
 		// Initialize data types
 		initEDataType(internalEObjectEDataType, InternalEObject.class, "InternalEObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java
index eb528cf..75b6371 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalDatainterchangeImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java
index 4d3933a..822017d 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalHandlerImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,19 +16,26 @@
  */
 package org.eclipse.osbp.xtext.signal.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.osbp.xtext.signal.DataTransfer;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
+import org.eclipse.osbp.xtext.signal.TriggerPolicy;
 
 /**
  * <!-- begin-user-doc -->
@@ -37,10 +46,9 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getActionType <em>Action Type</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getFilemask <em>Filemask</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getData <em>Data</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getExecutiontype <em>Executiontype</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getInterchanges <em>Interchanges</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalHandlerImpl#getTriggerpolicy <em>Triggerpolicy</em>}</li>
  * </ul>
  *
  * @generated
@@ -67,56 +75,6 @@
 	protected String name = NAME_EDEFAULT;
 
 	/**
-	 * The default value of the '{@link #getActionType() <em>Action Type</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getActionType()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final SignalHandlerTypeEnum ACTION_TYPE_EDEFAULT = SignalHandlerTypeEnum.DOAFTER;
-
-	/**
-	 * The cached value of the '{@link #getActionType() <em>Action Type</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getActionType()
-	 * @generated
-	 * @ordered
-	 */
-	protected SignalHandlerTypeEnum actionType = ACTION_TYPE_EDEFAULT;
-
-	/**
-	 * The default value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getFilemask()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final String FILEMASK_EDEFAULT = null;
-
-	/**
-	 * The cached value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getFilemask()
-	 * @generated
-	 * @ordered
-	 */
-	protected String filemask = FILEMASK_EDEFAULT;
-
-	/**
-	 * The cached value of the '{@link #getData() <em>Data</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getData()
-	 * @generated
-	 * @ordered
-	 */
-	protected DataTransfer data;
-
-	/**
 	 * The default value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -124,7 +82,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected static final SignalExecutionTypeEnum EXECUTIONTYPE_EDEFAULT = SignalExecutionTypeEnum.SYNC;
+	protected static final SignalExecutionTypeEnum EXECUTIONTYPE_EDEFAULT = SignalExecutionTypeEnum.SEQ;
 
 	/**
 	 * The cached value of the '{@link #getExecutiontype() <em>Executiontype</em>}' attribute.
@@ -137,6 +95,26 @@
 	protected SignalExecutionTypeEnum executiontype = EXECUTIONTYPE_EDEFAULT;
 
 	/**
+	 * The cached value of the '{@link #getInterchanges() <em>Interchanges</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInterchanges()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<SignalDatainterchange> interchanges;
+
+	/**
+	 * The cached value of the '{@link #getTriggerpolicy() <em>Triggerpolicy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTriggerpolicy()
+	 * @generated
+	 * @ordered
+	 */
+	protected TriggerPolicy triggerpolicy;
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -181,91 +159,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public SignalHandlerTypeEnum getActionType() {
-		return actionType;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setActionType(SignalHandlerTypeEnum newActionType) {
-		SignalHandlerTypeEnum oldActionType = actionType;
-		actionType = newActionType == null ? ACTION_TYPE_EDEFAULT : newActionType;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__ACTION_TYPE, oldActionType, actionType));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public String getFilemask() {
-		return filemask;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setFilemask(String newFilemask) {
-		String oldFilemask = filemask;
-		filemask = newFilemask;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__FILEMASK, oldFilemask, filemask));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public DataTransfer getData() {
-		return data;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetData(DataTransfer newData, NotificationChain msgs) {
-		DataTransfer oldData = data;
-		data = newData;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__DATA, oldData, newData);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setData(DataTransfer newData) {
-		if (newData != data) {
-			NotificationChain msgs = null;
-			if (data != null)
-				msgs = ((InternalEObject)data).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_HANDLER__DATA, null, msgs);
-			if (newData != null)
-				msgs = ((InternalEObject)newData).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_HANDLER__DATA, null, msgs);
-			msgs = basicSetData(newData, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__DATA, newData, newData));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public SignalExecutionTypeEnum getExecutiontype() {
 		return executiontype;
 	}
@@ -287,11 +180,68 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EList<SignalDatainterchange> getInterchanges() {
+		if (interchanges == null) {
+			interchanges = new EObjectContainmentEList<SignalDatainterchange>(SignalDatainterchange.class, this, SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES);
+		}
+		return interchanges;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TriggerPolicy getTriggerpolicy() {
+		return triggerpolicy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTriggerpolicy(TriggerPolicy newTriggerpolicy, NotificationChain msgs) {
+		TriggerPolicy oldTriggerpolicy = triggerpolicy;
+		triggerpolicy = newTriggerpolicy;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, oldTriggerpolicy, newTriggerpolicy);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTriggerpolicy(TriggerPolicy newTriggerpolicy) {
+		if (newTriggerpolicy != triggerpolicy) {
+			NotificationChain msgs = null;
+			if (triggerpolicy != null)
+				msgs = ((InternalEObject)triggerpolicy).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, null, msgs);
+			if (newTriggerpolicy != null)
+				msgs = ((InternalEObject)newTriggerpolicy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, null, msgs);
+			msgs = basicSetTriggerpolicy(newTriggerpolicy, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY, newTriggerpolicy, newTriggerpolicy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
-			case SignalDSLPackage.SIGNAL_HANDLER__DATA:
-				return basicSetData(null, msgs);
+			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
+				return ((InternalEList<?>)getInterchanges()).basicRemove(otherEnd, msgs);
+			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
+				return basicSetTriggerpolicy(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -306,14 +256,12 @@
 		switch (featureID) {
 			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
 				return getName();
-			case SignalDSLPackage.SIGNAL_HANDLER__ACTION_TYPE:
-				return getActionType();
-			case SignalDSLPackage.SIGNAL_HANDLER__FILEMASK:
-				return getFilemask();
-			case SignalDSLPackage.SIGNAL_HANDLER__DATA:
-				return getData();
 			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
 				return getExecutiontype();
+			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
+				return getInterchanges();
+			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
+				return getTriggerpolicy();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -323,24 +271,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
 				setName((String)newValue);
 				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__ACTION_TYPE:
-				setActionType((SignalHandlerTypeEnum)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__FILEMASK:
-				setFilemask((String)newValue);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__DATA:
-				setData((DataTransfer)newValue);
-				return;
 			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
 				setExecutiontype((SignalExecutionTypeEnum)newValue);
 				return;
+			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
+				getInterchanges().clear();
+				getInterchanges().addAll((Collection<? extends SignalDatainterchange>)newValue);
+				return;
+			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
+				setTriggerpolicy((TriggerPolicy)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -356,18 +303,15 @@
 			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
 				setName(NAME_EDEFAULT);
 				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__ACTION_TYPE:
-				setActionType(ACTION_TYPE_EDEFAULT);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__FILEMASK:
-				setFilemask(FILEMASK_EDEFAULT);
-				return;
-			case SignalDSLPackage.SIGNAL_HANDLER__DATA:
-				setData((DataTransfer)null);
-				return;
 			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
 				setExecutiontype(EXECUTIONTYPE_EDEFAULT);
 				return;
+			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
+				getInterchanges().clear();
+				return;
+			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
+				setTriggerpolicy((TriggerPolicy)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -382,14 +326,12 @@
 		switch (featureID) {
 			case SignalDSLPackage.SIGNAL_HANDLER__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case SignalDSLPackage.SIGNAL_HANDLER__ACTION_TYPE:
-				return actionType != ACTION_TYPE_EDEFAULT;
-			case SignalDSLPackage.SIGNAL_HANDLER__FILEMASK:
-				return FILEMASK_EDEFAULT == null ? filemask != null : !FILEMASK_EDEFAULT.equals(filemask);
-			case SignalDSLPackage.SIGNAL_HANDLER__DATA:
-				return data != null;
 			case SignalDSLPackage.SIGNAL_HANDLER__EXECUTIONTYPE:
 				return executiontype != EXECUTIONTYPE_EDEFAULT;
+			case SignalDSLPackage.SIGNAL_HANDLER__INTERCHANGES:
+				return interchanges != null && !interchanges.isEmpty();
+			case SignalDSLPackage.SIGNAL_HANDLER__TRIGGERPOLICY:
+				return triggerpolicy != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -406,10 +348,6 @@
 		StringBuffer result = new StringBuffer(super.toString());
 		result.append(" (name: ");
 		result.append(name);
-		result.append(", actionType: ");
-		result.append(actionType);
-		result.append(", filemask: ");
-		result.append(filemask);
 		result.append(", executiontype: ");
 		result.append(executiontype);
 		result.append(')');
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java
index a618745..a3b6e76 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalLazyResolverImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java
index d88939f..dbdc928 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalModelImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,22 +16,15 @@
  */
 package org.eclipse.osbp.xtext.signal.impl;
 
-import java.util.Collection;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
-import org.eclipse.emf.common.util.EList;
-
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
-import org.eclipse.emf.ecore.util.EObjectContainmentEList;
-import org.eclipse.emf.ecore.util.InternalEList;
-
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalModel;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
@@ -62,14 +57,14 @@
 	protected XImportSection importSection;
 
 	/**
-	 * The cached value of the '{@link #getPackages() <em>Packages</em>}' containment reference list.
+	 * The cached value of the '{@link #getPackages() <em>Packages</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see #getPackages()
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<SignalPackage> packages;
+	protected SignalPackage packages;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -138,10 +133,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList<SignalPackage> getPackages() {
-		if (packages == null) {
-			packages = new EObjectContainmentEList<SignalPackage>(SignalPackage.class, this, SignalDSLPackage.SIGNAL_MODEL__PACKAGES);
-		}
+	public SignalPackage getPackages() {
 		return packages;
 	}
 
@@ -150,13 +142,47 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public NotificationChain basicSetPackages(SignalPackage newPackages, NotificationChain msgs) {
+		SignalPackage oldPackages = packages;
+		packages = newPackages;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_MODEL__PACKAGES, oldPackages, newPackages);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPackages(SignalPackage newPackages) {
+		if (newPackages != packages) {
+			NotificationChain msgs = null;
+			if (packages != null)
+				msgs = ((InternalEObject)packages).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_MODEL__PACKAGES, null, msgs);
+			if (newPackages != null)
+				msgs = ((InternalEObject)newPackages).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_MODEL__PACKAGES, null, msgs);
+			msgs = basicSetPackages(newPackages, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_MODEL__PACKAGES, newPackages, newPackages));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case SignalDSLPackage.SIGNAL_MODEL__IMPORT_SECTION:
 				return basicSetImportSection(null, msgs);
 			case SignalDSLPackage.SIGNAL_MODEL__PACKAGES:
-				return ((InternalEList<?>)getPackages()).basicRemove(otherEnd, msgs);
+				return basicSetPackages(null, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -182,7 +208,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -190,8 +215,7 @@
 				setImportSection((XImportSection)newValue);
 				return;
 			case SignalDSLPackage.SIGNAL_MODEL__PACKAGES:
-				getPackages().clear();
-				getPackages().addAll((Collection<? extends SignalPackage>)newValue);
+				setPackages((SignalPackage)newValue);
 				return;
 		}
 		super.eSet(featureID, newValue);
@@ -209,7 +233,7 @@
 				setImportSection((XImportSection)null);
 				return;
 			case SignalDSLPackage.SIGNAL_MODEL__PACKAGES:
-				getPackages().clear();
+				setPackages((SignalPackage)null);
 				return;
 		}
 		super.eUnset(featureID);
@@ -226,7 +250,7 @@
 			case SignalDSLPackage.SIGNAL_MODEL__IMPORT_SECTION:
 				return importSection != null;
 			case SignalDSLPackage.SIGNAL_MODEL__PACKAGES:
-				return packages != null && !packages.isEmpty();
+				return packages != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java
index f0b3fab..84d5739 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalPackageImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java
new file mode 100644
index 0000000..0b35485
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalSchedulerImpl.java
@@ -0,0 +1,189 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.Scheduler;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Signal Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalSchedulerImpl#getScheduler <em>Scheduler</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SignalSchedulerImpl extends TriggerPolicyImpl implements SignalScheduler {
+	/**
+	 * The cached value of the '{@link #getScheduler() <em>Scheduler</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScheduler()
+	 * @generated
+	 * @ordered
+	 */
+	protected Scheduler scheduler;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SignalSchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.SIGNAL_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Scheduler getScheduler() {
+		return scheduler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetScheduler(Scheduler newScheduler, NotificationChain msgs) {
+		Scheduler oldScheduler = scheduler;
+		scheduler = newScheduler;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, oldScheduler, newScheduler);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setScheduler(Scheduler newScheduler) {
+		if (newScheduler != scheduler) {
+			NotificationChain msgs = null;
+			if (scheduler != null)
+				msgs = ((InternalEObject)scheduler).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, null, msgs);
+			if (newScheduler != null)
+				msgs = ((InternalEObject)newScheduler).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, null, msgs);
+			msgs = basicSetScheduler(newScheduler, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER, newScheduler, newScheduler));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
+				return basicSetScheduler(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 SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
+				return getScheduler();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
+				setScheduler((Scheduler)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
+				setScheduler((Scheduler)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.SIGNAL_SCHEDULER__SCHEDULER:
+				return scheduler != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SignalSchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java
index e69db30..0695b1a 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SignalWatcherImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -31,7 +33,6 @@
 
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
 
 /**
@@ -44,7 +45,6 @@
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getName <em>Name</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getDirectory <em>Directory</em>}</li>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getSignal <em>Signal</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SignalWatcherImpl#getHandlers <em>Handlers</em>}</li>
  * </ul>
  *
@@ -92,26 +92,6 @@
 	protected String directory = DIRECTORY_EDEFAULT;
 
 	/**
-	 * The default value of the '{@link #getSignal() <em>Signal</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSignal()
-	 * @generated
-	 * @ordered
-	 */
-	protected static final SignalTypeEnum SIGNAL_EDEFAULT = SignalTypeEnum.CREATESIGNALS;
-
-	/**
-	 * The cached value of the '{@link #getSignal() <em>Signal</em>}' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getSignal()
-	 * @generated
-	 * @ordered
-	 */
-	protected SignalTypeEnum signal = SIGNAL_EDEFAULT;
-
-	/**
 	 * The cached value of the '{@link #getHandlers() <em>Handlers</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -187,27 +167,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public SignalTypeEnum getSignal() {
-		return signal;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setSignal(SignalTypeEnum newSignal) {
-		SignalTypeEnum oldSignal = signal;
-		signal = newSignal == null ? SIGNAL_EDEFAULT : newSignal;
-		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SIGNAL_WATCHER__SIGNAL, oldSignal, signal));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
 	public EList<SignalHandler> getHandlers() {
 		if (handlers == null) {
 			handlers = new EObjectContainmentEList<SignalHandler>(SignalHandler.class, this, SignalDSLPackage.SIGNAL_WATCHER__HANDLERS);
@@ -241,8 +200,6 @@
 				return getName();
 			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
 				return getDirectory();
-			case SignalDSLPackage.SIGNAL_WATCHER__SIGNAL:
-				return getSignal();
 			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
 				return getHandlers();
 		}
@@ -264,9 +221,6 @@
 			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
 				setDirectory((String)newValue);
 				return;
-			case SignalDSLPackage.SIGNAL_WATCHER__SIGNAL:
-				setSignal((SignalTypeEnum)newValue);
-				return;
 			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
 				getHandlers().clear();
 				getHandlers().addAll((Collection<? extends SignalHandler>)newValue);
@@ -289,9 +243,6 @@
 			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
 				setDirectory(DIRECTORY_EDEFAULT);
 				return;
-			case SignalDSLPackage.SIGNAL_WATCHER__SIGNAL:
-				setSignal(SIGNAL_EDEFAULT);
-				return;
 			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
 				getHandlers().clear();
 				return;
@@ -311,8 +262,6 @@
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case SignalDSLPackage.SIGNAL_WATCHER__DIRECTORY:
 				return DIRECTORY_EDEFAULT == null ? directory != null : !DIRECTORY_EDEFAULT.equals(directory);
-			case SignalDSLPackage.SIGNAL_WATCHER__SIGNAL:
-				return signal != SIGNAL_EDEFAULT;
 			case SignalDSLPackage.SIGNAL_WATCHER__HANDLERS:
 				return handlers != null && !handlers.isEmpty();
 		}
@@ -333,8 +282,6 @@
 		result.append(name);
 		result.append(", directory: ");
 		result.append(directory);
-		result.append(", signal: ");
-		result.append(signal);
 		result.append(')');
 		return result.toString();
 	}
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SingleTransferImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SingleTransferImpl.java
deleted file mode 100644
index 8aa21c9..0000000
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/SingleTransferImpl.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/**
- * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
- *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
- *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
- *  
- *  Contributors:                                                      
- *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- *  
- *  generated from SignalDSL.xcore
- * 
- *  
- */
-package org.eclipse.osbp.xtext.signal.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.signal.SignalDSLPackage;
-import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
-import org.eclipse.osbp.xtext.signal.SingleTransfer;
-
-/**
- * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Single Transfer</b></em>'.
- * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link org.eclipse.osbp.xtext.signal.impl.SingleTransferImpl#getInterchange <em>Interchange</em>}</li>
- * </ul>
- *
- * @generated
- */
-public class SingleTransferImpl extends DataTransferImpl implements SingleTransfer {
-	/**
-	 * The cached value of the '{@link #getInterchange() <em>Interchange</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getInterchange()
-	 * @generated
-	 * @ordered
-	 */
-	protected SignalDatainterchange interchange;
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected SingleTransferImpl() {
-		super();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.SINGLE_TRANSFER;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public SignalDatainterchange getInterchange() {
-		return interchange;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetInterchange(SignalDatainterchange newInterchange, NotificationChain msgs) {
-		SignalDatainterchange oldInterchange = interchange;
-		interchange = newInterchange;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE, oldInterchange, newInterchange);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setInterchange(SignalDatainterchange newInterchange) {
-		if (newInterchange != interchange) {
-			NotificationChain msgs = null;
-			if (interchange != null)
-				msgs = ((InternalEObject)interchange).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE, null, msgs);
-			if (newInterchange != null)
-				msgs = ((InternalEObject)newInterchange).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE, null, msgs);
-			msgs = basicSetInterchange(newInterchange, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE, newInterchange, newInterchange));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE:
-				return basicSetInterchange(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 SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE:
-				return getInterchange();
-		}
-		return super.eGet(featureID, resolve, coreType);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eSet(int featureID, Object newValue) {
-		switch (featureID) {
-			case SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE:
-				setInterchange((SignalDatainterchange)newValue);
-				return;
-		}
-		super.eSet(featureID, newValue);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void eUnset(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE:
-				setInterchange((SignalDatainterchange)null);
-				return;
-		}
-		super.eUnset(featureID);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public boolean eIsSet(int featureID) {
-		switch (featureID) {
-			case SignalDSLPackage.SINGLE_TRANSFER__INTERCHANGE:
-				return interchange != null;
-		}
-		return super.eIsSet(featureID);
-	}
-
-} //SingleTransferImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerFileImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerFileImpl.java
new file mode 100644
index 0000000..3986d0b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerFileImpl.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.TriggerFile;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Trigger File</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.TriggerFileImpl#getFilemask <em>Filemask</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TriggerFileImpl extends TriggerPolicyImpl implements TriggerFile {
+	/**
+	 * The default value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilemask()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FILEMASK_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFilemask() <em>Filemask</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilemask()
+	 * @generated
+	 * @ordered
+	 */
+	protected String filemask = FILEMASK_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TriggerFileImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.TRIGGER_FILE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFilemask() {
+		return filemask;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilemask(String newFilemask) {
+		String oldFilemask = filemask;
+		filemask = newFilemask;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.TRIGGER_FILE__FILEMASK, oldFilemask, filemask));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
+				return getFilemask();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
+				setFilemask((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
+				setFilemask(FILEMASK_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.TRIGGER_FILE__FILEMASK:
+				return FILEMASK_EDEFAULT == null ? filemask != null : !FILEMASK_EDEFAULT.equals(filemask);
+		}
+		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(" (filemask: ");
+		result.append(filemask);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TriggerFileImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DataTransferImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerPolicyImpl.java
similarity index 68%
copy from org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DataTransferImpl.java
copy to org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerPolicyImpl.java
index a87a172..0364e57 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/DataTransferImpl.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/TriggerPolicyImpl.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -16,23 +18,23 @@
 
 import org.eclipse.emf.ecore.EClass;
 
-import org.eclipse.osbp.xtext.signal.DataTransfer;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.TriggerPolicy;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Data Transfer</b></em>'.
+ * An implementation of the model object '<em><b>Trigger Policy</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public class DataTransferImpl extends SignalLazyResolverImpl implements DataTransfer {
+public class TriggerPolicyImpl extends SignalLazyResolverImpl implements TriggerPolicy {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected DataTransferImpl() {
+	protected TriggerPolicyImpl() {
 		super();
 	}
 
@@ -43,7 +45,7 @@
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return SignalDSLPackage.Literals.DATA_TRANSFER;
+		return SignalDSLPackage.Literals.TRIGGER_POLICY;
 	}
 
-} //DataTransferImpl
+} //TriggerPolicyImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java
new file mode 100644
index 0000000..9674526
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/impl/WeeklySchedulerImpl.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License 2.0 
+ *  which accompanies this distribution, and is available at
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
+ *  
+ *  Contributors:                                                      
+ *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ *  
+ *  generated from SignalDSL.xcore
+ * 
+ *  
+ */
+package org.eclipse.osbp.xtext.signal.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.signal.DayOfWeekEnum;
+import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Weekly Scheduler</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl#getDayofweek <em>Dayofweek</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl#getHour <em>Hour</em>}</li>
+ *   <li>{@link org.eclipse.osbp.xtext.signal.impl.WeeklySchedulerImpl#getMinute <em>Minute</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class WeeklySchedulerImpl extends SchedulerImpl implements WeeklyScheduler {
+	/**
+	 * The default value of the '{@link #getDayofweek() <em>Dayofweek</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDayofweek()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final DayOfWeekEnum DAYOFWEEK_EDEFAULT = DayOfWeekEnum.SUNDAY;
+
+	/**
+	 * The cached value of the '{@link #getDayofweek() <em>Dayofweek</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDayofweek()
+	 * @generated
+	 * @ordered
+	 */
+	protected DayOfWeekEnum dayofweek = DAYOFWEEK_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHour() <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHour()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int HOUR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getHour() <em>Hour</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHour()
+	 * @generated
+	 * @ordered
+	 */
+	protected int hour = HOUR_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MINUTE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMinute() <em>Minute</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinute()
+	 * @generated
+	 * @ordered
+	 */
+	protected int minute = MINUTE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected WeeklySchedulerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SignalDSLPackage.Literals.WEEKLY_SCHEDULER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DayOfWeekEnum getDayofweek() {
+		return dayofweek;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDayofweek(DayOfWeekEnum newDayofweek) {
+		DayOfWeekEnum oldDayofweek = dayofweek;
+		dayofweek = newDayofweek == null ? DAYOFWEEK_EDEFAULT : newDayofweek;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WEEKLY_SCHEDULER__DAYOFWEEK, oldDayofweek, dayofweek));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getHour() {
+		return hour;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHour(int newHour) {
+		int oldHour = hour;
+		hour = newHour;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WEEKLY_SCHEDULER__HOUR, oldHour, hour));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMinute() {
+		return minute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMinute(int newMinute) {
+		int oldMinute = minute;
+		minute = newMinute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SignalDSLPackage.WEEKLY_SCHEDULER__MINUTE, oldMinute, minute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SignalDSLPackage.WEEKLY_SCHEDULER__DAYOFWEEK:
+				return getDayofweek();
+			case SignalDSLPackage.WEEKLY_SCHEDULER__HOUR:
+				return getHour();
+			case SignalDSLPackage.WEEKLY_SCHEDULER__MINUTE:
+				return getMinute();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SignalDSLPackage.WEEKLY_SCHEDULER__DAYOFWEEK:
+				setDayofweek((DayOfWeekEnum)newValue);
+				return;
+			case SignalDSLPackage.WEEKLY_SCHEDULER__HOUR:
+				setHour((Integer)newValue);
+				return;
+			case SignalDSLPackage.WEEKLY_SCHEDULER__MINUTE:
+				setMinute((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WEEKLY_SCHEDULER__DAYOFWEEK:
+				setDayofweek(DAYOFWEEK_EDEFAULT);
+				return;
+			case SignalDSLPackage.WEEKLY_SCHEDULER__HOUR:
+				setHour(HOUR_EDEFAULT);
+				return;
+			case SignalDSLPackage.WEEKLY_SCHEDULER__MINUTE:
+				setMinute(MINUTE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SignalDSLPackage.WEEKLY_SCHEDULER__DAYOFWEEK:
+				return dayofweek != DAYOFWEEK_EDEFAULT;
+			case SignalDSLPackage.WEEKLY_SCHEDULER__HOUR:
+				return hour != HOUR_EDEFAULT;
+			case SignalDSLPackage.WEEKLY_SCHEDULER__MINUTE:
+				return minute != MINUTE_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(" (dayofweek: ");
+		result.append(dayofweek);
+		result.append(", hour: ");
+		result.append(hour);
+		result.append(", minute: ");
+		result.append(minute);
+		result.append(')');
+		return result.toString();
+	}
+
+} //WeeklySchedulerImpl
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java
index 2c37a94..e6c33b7 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLAdapterFactory.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -107,6 +109,42 @@
 				return createSignalHandlerAdapter();
 			}
 			@Override
+			public Adapter caseTriggerPolicy(TriggerPolicy object) {
+				return createTriggerPolicyAdapter();
+			}
+			@Override
+			public Adapter caseTriggerFile(TriggerFile object) {
+				return createTriggerFileAdapter();
+			}
+			@Override
+			public Adapter caseSignalScheduler(SignalScheduler object) {
+				return createSignalSchedulerAdapter();
+			}
+			@Override
+			public Adapter caseScheduler(Scheduler object) {
+				return createSchedulerAdapter();
+			}
+			@Override
+			public Adapter caseCronScheduler(CronScheduler object) {
+				return createCronSchedulerAdapter();
+			}
+			@Override
+			public Adapter caseHourlyScheduler(HourlyScheduler object) {
+				return createHourlySchedulerAdapter();
+			}
+			@Override
+			public Adapter caseDailyScheduler(DailyScheduler object) {
+				return createDailySchedulerAdapter();
+			}
+			@Override
+			public Adapter caseWeeklyScheduler(WeeklyScheduler object) {
+				return createWeeklySchedulerAdapter();
+			}
+			@Override
+			public Adapter caseMonthlyScheduler(MonthlyScheduler object) {
+				return createMonthlySchedulerAdapter();
+			}
+			@Override
 			public Adapter caseSignalProcessor(SignalProcessor object) {
 				return createSignalProcessorAdapter();
 			}
@@ -115,18 +153,6 @@
 				return createSignalDatainterchangeAdapter();
 			}
 			@Override
-			public Adapter caseDataTransfer(DataTransfer object) {
-				return createDataTransferAdapter();
-			}
-			@Override
-			public Adapter caseSingleTransfer(SingleTransfer object) {
-				return createSingleTransferAdapter();
-			}
-			@Override
-			public Adapter caseListTransfer(ListTransfer object) {
-				return createListTransferAdapter();
-			}
-			@Override
 			public Adapter caseLLazyResolver(LLazyResolver object) {
 				return createLLazyResolverAdapter();
 			}
@@ -239,6 +265,132 @@
 	}
 
 	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.TriggerPolicy <em>Trigger Policy</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.signal.TriggerPolicy
+	 * @generated
+	 */
+	public Adapter createTriggerPolicyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.TriggerFile <em>Trigger File</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.signal.TriggerFile
+	 * @generated
+	 */
+	public Adapter createTriggerFileAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SignalScheduler <em>Signal 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.signal.SignalScheduler
+	 * @generated
+	 */
+	public Adapter createSignalSchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.Scheduler <em>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.signal.Scheduler
+	 * @generated
+	 */
+	public Adapter createSchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.CronScheduler <em>Cron 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.signal.CronScheduler
+	 * @generated
+	 */
+	public Adapter createCronSchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.HourlyScheduler <em>Hourly 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.signal.HourlyScheduler
+	 * @generated
+	 */
+	public Adapter createHourlySchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.DailyScheduler <em>Daily 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.signal.DailyScheduler
+	 * @generated
+	 */
+	public Adapter createDailySchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.WeeklyScheduler <em>Weekly 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.signal.WeeklyScheduler
+	 * @generated
+	 */
+	public Adapter createWeeklySchedulerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.MonthlyScheduler <em>Monthly 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.signal.MonthlyScheduler
+	 * @generated
+	 */
+	public Adapter createMonthlySchedulerAdapter() {
+		return null;
+	}
+
+	/**
 	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SignalProcessor <em>Signal Processor</em>}'.
 	 * <!-- begin-user-doc -->
 	 * This default implementation returns null so that we can easily ignore cases;
@@ -267,48 +419,6 @@
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.DataTransfer <em>Data Transfer</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.signal.DataTransfer
-	 * @generated
-	 */
-	public Adapter createDataTransferAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.SingleTransfer <em>Single Transfer</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.signal.SingleTransfer
-	 * @generated
-	 */
-	public Adapter createSingleTransferAdapter() {
-		return null;
-	}
-
-	/**
-	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.xtext.signal.ListTransfer <em>List Transfer</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.signal.ListTransfer
-	 * @generated
-	 */
-	public Adapter createListTransferAdapter() {
-		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;
diff --git a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java
index aab0343..9e8001f 100644
--- a/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java
+++ b/org.eclipse.osbp.xtext.signal/emf-gen/org/eclipse/osbp/xtext/signal/util/SignalDSLSwitch.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  *  
  *  Contributors:                                                      
  *     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -122,6 +124,76 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SignalDSLPackage.TRIGGER_POLICY: {
+				TriggerPolicy triggerPolicy = (TriggerPolicy)theEObject;
+				T result = caseTriggerPolicy(triggerPolicy);
+				if (result == null) result = caseSignalLazyResolver(triggerPolicy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.TRIGGER_FILE: {
+				TriggerFile triggerFile = (TriggerFile)theEObject;
+				T result = caseTriggerFile(triggerFile);
+				if (result == null) result = caseTriggerPolicy(triggerFile);
+				if (result == null) result = caseSignalLazyResolver(triggerFile);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.SIGNAL_SCHEDULER: {
+				SignalScheduler signalScheduler = (SignalScheduler)theEObject;
+				T result = caseSignalScheduler(signalScheduler);
+				if (result == null) result = caseTriggerPolicy(signalScheduler);
+				if (result == null) result = caseSignalLazyResolver(signalScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.SCHEDULER: {
+				Scheduler scheduler = (Scheduler)theEObject;
+				T result = caseScheduler(scheduler);
+				if (result == null) result = caseSignalLazyResolver(scheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.CRON_SCHEDULER: {
+				CronScheduler cronScheduler = (CronScheduler)theEObject;
+				T result = caseCronScheduler(cronScheduler);
+				if (result == null) result = caseScheduler(cronScheduler);
+				if (result == null) result = caseSignalLazyResolver(cronScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.HOURLY_SCHEDULER: {
+				HourlyScheduler hourlyScheduler = (HourlyScheduler)theEObject;
+				T result = caseHourlyScheduler(hourlyScheduler);
+				if (result == null) result = caseScheduler(hourlyScheduler);
+				if (result == null) result = caseSignalLazyResolver(hourlyScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.DAILY_SCHEDULER: {
+				DailyScheduler dailyScheduler = (DailyScheduler)theEObject;
+				T result = caseDailyScheduler(dailyScheduler);
+				if (result == null) result = caseScheduler(dailyScheduler);
+				if (result == null) result = caseSignalLazyResolver(dailyScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.WEEKLY_SCHEDULER: {
+				WeeklyScheduler weeklyScheduler = (WeeklyScheduler)theEObject;
+				T result = caseWeeklyScheduler(weeklyScheduler);
+				if (result == null) result = caseScheduler(weeklyScheduler);
+				if (result == null) result = caseSignalLazyResolver(weeklyScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SignalDSLPackage.MONTHLY_SCHEDULER: {
+				MonthlyScheduler monthlyScheduler = (MonthlyScheduler)theEObject;
+				T result = caseMonthlyScheduler(monthlyScheduler);
+				if (result == null) result = caseScheduler(monthlyScheduler);
+				if (result == null) result = caseSignalLazyResolver(monthlyScheduler);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SignalDSLPackage.SIGNAL_PROCESSOR: {
 				SignalProcessor signalProcessor = (SignalProcessor)theEObject;
 				T result = caseSignalProcessor(signalProcessor);
@@ -137,29 +209,6 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SignalDSLPackage.DATA_TRANSFER: {
-				DataTransfer dataTransfer = (DataTransfer)theEObject;
-				T result = caseDataTransfer(dataTransfer);
-				if (result == null) result = caseSignalLazyResolver(dataTransfer);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SignalDSLPackage.SINGLE_TRANSFER: {
-				SingleTransfer singleTransfer = (SingleTransfer)theEObject;
-				T result = caseSingleTransfer(singleTransfer);
-				if (result == null) result = caseDataTransfer(singleTransfer);
-				if (result == null) result = caseSignalLazyResolver(singleTransfer);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SignalDSLPackage.LIST_TRANSFER: {
-				ListTransfer listTransfer = (ListTransfer)theEObject;
-				T result = caseListTransfer(listTransfer);
-				if (result == null) result = caseDataTransfer(listTransfer);
-				if (result == null) result = caseSignalLazyResolver(listTransfer);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -255,6 +304,141 @@
 	}
 
 	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Trigger Policy</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>Trigger Policy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTriggerPolicy(TriggerPolicy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Trigger File</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>Trigger File</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTriggerFile(TriggerFile object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Signal 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>Signal Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSignalScheduler(SignalScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>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>Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseScheduler(Scheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cron 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>Cron Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCronScheduler(CronScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hourly 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>Hourly Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHourlyScheduler(HourlyScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Daily 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>Daily Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDailyScheduler(DailyScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Weekly 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>Weekly Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseWeeklyScheduler(WeeklyScheduler object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Monthly 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>Monthly Scheduler</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMonthlyScheduler(MonthlyScheduler object) {
+		return null;
+	}
+
+	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Signal Processor</em>'.
 	 * <!-- begin-user-doc -->
 	 * This implementation returns null;
@@ -285,51 +469,6 @@
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Data Transfer</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>Data Transfer</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseDataTransfer(DataTransfer object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Single Transfer</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>Single Transfer</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseSingleTransfer(SingleTransfer object) {
-		return null;
-	}
-
-	/**
-	 * Returns the result of interpreting the object as an instance of '<em>List Transfer</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>List Transfer</em>'.
-	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-	 * @generated
-	 */
-	public T caseListTransfer(ListTransfer 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;
diff --git a/org.eclipse.osbp.xtext.signal/epl-2.0.html b/org.eclipse.osbp.xtext.signal/epl-2.0.html
new file mode 100644
index 0000000..637a181
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/epl-2.0.html
@@ -0,0 +1,300 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>Eclipse Public License - Version 2.0</title>
+    <style type="text/css">
+      body {
+        margin: 1.5em 3em;
+      }
+      h1{
+        font-size:1.5em;
+      }
+      h2{
+        font-size:1em;
+        margin-bottom:0.5em;
+        margin-top:1em;
+      }
+      p {
+        margin-top:  0.5em;
+        margin-bottom: 0.5em;
+      }
+      ul, ol{
+        list-style-type:none;
+      }
+    </style>
+  </head>
+  <body>
+    <h1>Eclipse Public License - v 2.0</h1>
+    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
+      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
+    </p>
+    <h2 id="definitions">1. DEFINITIONS</h2>
+    <p>&ldquo;Contribution&rdquo; means:</p>
+    <ul>
+      <li>a) in the case of the initial Contributor, the initial content
+        Distributed under this Agreement, and
+      </li>
+      <li>
+        b) in the case of each subsequent Contributor:
+        <ul>
+          <li>i) changes to the Program, and</li>
+          <li>ii) additions to the Program;</li>
+        </ul>
+        where such changes and/or additions to the Program originate from
+        and are Distributed by that particular Contributor. A Contribution
+        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
+        Contributor itself or anyone acting on such Contributor&#039;s behalf.
+        Contributions do not include changes or additions to the Program that
+        are not Modified Works.
+      </li>
+    </ul>
+    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
+    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
+      are necessarily infringed by the use or sale of its Contribution alone
+      or when combined with the Program.
+    </p>
+    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
+      Agreement.
+    </p>
+    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
+      or any Secondary License (as applicable), including Contributors.
+    </p>
+    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
+      form, that is based on (or derived from) the Program and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship.
+    </p>
+    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
+      results from an addition to, deletion from, or modification of the
+      contents of the Program, including, for purposes of clarity any new file
+      in Source Code form that contains any contents of the Program. Modified
+      Works shall not include works that contain only declarations, interfaces,
+      types, classes, structures, or files of the Program solely in each case
+      in order to link to, bind by name, or subclass the Program or Modified
+      Works thereof.
+    </p>
+    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
+      in any manner that enables the transfer of a copy.
+    </p>
+    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
+      modifications, including but not limited to software source code,
+      documentation source, and configuration files.
+    </p>
+    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
+      Version 2.0, or any later versions of that license, including any
+      exceptions or additional permissions as identified by the initial
+      Contributor.
+    </p>
+    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
+    <ul>
+      <li>a) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free copyright
+        license to reproduce, prepare Derivative Works of, publicly display,
+        publicly perform, Distribute and sublicense the Contribution of such
+        Contributor, if any, and such Derivative Works.
+      </li>
+      <li>b) Subject to the terms of this Agreement, each Contributor hereby
+        grants Recipient a non-exclusive, worldwide, royalty-free patent
+        license under Licensed Patents to make, use, sell, offer to sell,
+        import and otherwise transfer the Contribution of such Contributor,
+        if any, in Source Code or other form. This patent license shall
+        apply to the combination of the Contribution and the Program if,
+        at the time the Contribution is added by the Contributor, such
+        addition of the Contribution causes such combination to be covered
+        by the Licensed Patents. The patent license shall not apply to any
+        other combinations which include the Contribution. No hardware per
+        se is licensed hereunder.
+      </li>
+      <li>c) Recipient understands that although each Contributor grants the
+        licenses to its Contributions set forth herein, no assurances are
+        provided by any Contributor that the Program does not infringe the
+        patent or other intellectual property rights of any other entity.
+        Each Contributor disclaims any liability to Recipient for claims
+        brought by any other entity based on infringement of intellectual
+        property rights or otherwise. As a condition to exercising the rights
+        and licenses granted hereunder, each Recipient hereby assumes sole
+        responsibility to secure any other intellectual property rights needed,
+        if any. For example, if a third party patent license is required to
+        allow Recipient to Distribute the Program, it is Recipient&#039;s
+        responsibility to acquire that license before distributing the Program.
+      </li>
+      <li>d) Each Contributor represents that to its knowledge it has sufficient
+        copyright rights in its Contribution, if any, to grant the copyright
+        license set forth in this Agreement.
+      </li>
+      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
+        makes additional grants to any Recipient (other than those set forth
+        in this Agreement) as a result of such Recipient&#039;s receipt of the
+        Program under the terms of a Secondary License (if permitted under
+        the terms of Section 3).
+      </li>
+    </ul>
+    <h2 id="requirements">3. REQUIREMENTS</h2>
+    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
+    <ul>
+      <li>a) the Program must also be made available as Source Code, in
+        accordance with section 3.2, and the Contributor must accompany
+        the Program with a statement that the Source Code for the Program
+        is available under this Agreement, and informs Recipients how to
+        obtain it in a reasonable manner on or through a medium customarily
+        used for software exchange; and
+      </li>
+      <li>
+        b) the Contributor may Distribute the Program under a license
+        different than this Agreement, provided that such license:
+        <ul>
+          <li>i) effectively disclaims on behalf of all other Contributors all
+            warranties and conditions, express and implied, including warranties
+            or conditions of title and non-infringement, and implied warranties
+            or conditions of merchantability and fitness for a particular purpose;
+          </li>
+          <li>ii) effectively excludes on behalf of all other Contributors all
+            liability for damages, including direct, indirect, special, incidental
+            and consequential damages, such as lost profits;
+          </li>
+          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
+            Source Code under section 3.2; and
+          </li>
+          <li>iv) requires any subsequent distribution of the Program by any party
+            to be under a license that satisfies the requirements of this section 3.
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <p>3.2 When the Program is Distributed as Source Code:</p>
+    <ul>
+      <li>a) it must be made available under this Agreement, or if the Program (i)
+        is combined with other material in a separate file or files made available
+        under a Secondary License, and (ii) the initial Contributor attached to
+        the Source Code the notice described in Exhibit A of this Agreement,
+        then the Program may be made available under the terms of such
+        Secondary Licenses, and
+      </li>
+      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
+    </ul>
+    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
+      attribution notices, disclaimers of warranty, or limitations of liability
+      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
+      they Distribute, provided that Contributors may add their own appropriate
+      notices.
+    </p>
+    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
+    <p>Commercial distributors of software may accept certain responsibilities
+      with respect to end users, business partners and the like. While this
+      license is intended to facilitate the commercial use of the Program, the
+      Contributor who includes the Program in a commercial product offering should
+      do so in a manner which does not create potential liability for other
+      Contributors. Therefore, if a Contributor includes the Program in a
+      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
+      hereby agrees to defend and indemnify every other Contributor
+      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
+      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
+      brought by a third party against the Indemnified Contributor to the extent
+      caused by the acts or omissions of such Commercial Contributor in connection
+      with its distribution of the Program in a commercial product offering.
+      The obligations in this section do not apply to any claims or Losses relating
+      to any actual or alleged intellectual property infringement. In order to
+      qualify, an Indemnified Contributor must: a) promptly notify the
+      Commercial Contributor in writing of such claim, and b) allow the Commercial
+      Contributor to control, and cooperate with the Commercial Contributor in,
+      the defense and any related settlement negotiations. The Indemnified
+      Contributor may participate in any such claim at its own expense.
+    </p>
+    <p>For example, a Contributor might include the Program
+      in a commercial product offering, Product X. That Contributor is then a
+      Commercial Contributor. If that Commercial Contributor then makes performance
+      claims, or offers warranties related to Product X, those performance claims
+      and warranties are such Commercial Contributor&#039;s responsibility alone.
+      Under this section, the Commercial Contributor would have to defend claims
+      against the other Contributors related to those performance claims and
+      warranties, and if a court requires any other Contributor to pay any damages
+      as a result, the Commercial Contributor must pay those damages.
+    </p>
+    <h2 id="warranty">5. NO WARRANTY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
+      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
+      solely responsible for determining the appropriateness of using and
+      distributing the Program and assumes all risks associated with its
+      exercise of rights under this Agreement, including but not limited to the
+      risks and costs of program errors, compliance with applicable laws, damage
+      to or loss of data, programs or equipment, and unavailability or
+      interruption of operations.
+    </p>
+    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
+    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
+      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
+      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
+      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+    </p>
+    <h2 id="general">7. GENERAL</h2>
+    <p>If any provision of this Agreement is invalid or unenforceable under
+      applicable law, it shall not affect the validity or enforceability of the
+      remainder of the terms of this Agreement, and without further action by the
+      parties hereto, such provision shall be reformed to the minimum extent
+      necessary to make such provision valid and enforceable.
+    </p>
+    <p>If Recipient institutes patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+      (excluding combinations of the Program with other software or hardware)
+      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
+      under Section 2(b) shall terminate as of the date such litigation is filed.
+    </p>
+    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
+      comply with any of the material terms or conditions of this Agreement and
+      does not cure such failure in a reasonable period of time after becoming
+      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
+      terminate, Recipient agrees to cease use and distribution of the Program
+      as soon as reasonably practicable. However, Recipient&#039;s obligations under
+      this Agreement and any licenses granted by Recipient relating to the
+      Program shall continue and survive.
+    </p>
+    <p>Everyone is permitted to copy and distribute copies of this Agreement,
+      but in order to avoid inconsistency the Agreement is copyrighted and may
+      only be modified in the following manner. The Agreement Steward reserves
+      the right to publish new versions (including revisions) of this Agreement
+      from time to time. No one other than the Agreement Steward has the right
+      to modify this Agreement. The Eclipse Foundation is the initial Agreement
+      Steward. The Eclipse Foundation may assign the responsibility to serve as
+      the Agreement Steward to a suitable separate entity. Each new version of
+      the Agreement will be given a distinguishing version number. The Program
+      (including Contributions) may always be Distributed subject to the version
+      of the Agreement under which it was received. In addition, after a new
+      version of the Agreement is published, Contributor may elect to Distribute
+      the Program (including its Contributions) under the new version.
+    </p>
+    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+      receives no rights or licenses to the intellectual property of any
+      Contributor under this Agreement, whether expressly, by implication,
+      estoppel or otherwise. All rights in the Program not expressly granted
+      under this Agreement are reserved. Nothing in this Agreement is intended
+      to be enforceable by any entity that is not a Contributor or Recipient.
+      No third-party beneficiary rights are created under this Agreement.
+    </p>
+    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
+    <p>&ldquo;This Source Code may also be made available under the following 
+    	Secondary Licenses when the conditions for such availability set forth 
+    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+    	version(s), and exceptions or additional permissions here}.&rdquo;
+    </p>
+    <blockquote>
+      <p>Simply including a copy of this Agreement, including this Exhibit A
+        is not sufficient to license the Source Code under Secondary Licenses.
+      </p>
+      <p>If it is not possible or desirable to put the notice in a particular file,
+        then You may include the notice in a location (such as a LICENSE file in a
+        relevant directory) where a recipient would be likely to look for
+        such a notice.
+      </p>
+      <p>You may add additional accurate notices of copyright ownership.</p>
+    </blockquote>
+  </body>
+</html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/epl-v10.html b/org.eclipse.osbp.xtext.signal/epl-v10.html
deleted file mode 100644
index b398acc..0000000
--- a/org.eclipse.osbp.xtext.signal/epl-v10.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {  	
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-  	margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<h2>Eclipse Public License - v 1.0</h2>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>"Contribution" means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>"Contributor" means any person or entity that distributes
-the Program.</p>
-
-<p>"Licensed Patents" mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>"Program" means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>"Recipient" means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-("Commercial Contributor") hereby agrees to defend and
-indemnify every other Contributor ("Indemnified Contributor")
-against any losses, damages and costs (collectively "Losses")
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-
-
-</body></html>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/license.html b/org.eclipse.osbp.xtext.signal/license.html
index 6e579a5..008b801 100644
--- a/org.eclipse.osbp.xtext.signal/license.html
+++ b/org.eclipse.osbp.xtext.signal/license.html
@@ -1,164 +1,189 @@
-<!--?xml version="1.0" encoding="ISO-8859-1" ?-->
+<?xml version="1.0" encoding="ISO-8859-1" ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
 <title>Eclipse Foundation Software User Agreement</title>
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>February 1, 2011</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse
- Foundation is provided to you under the terms and conditions of the 
-Eclipse Public License Version 1.0
-   ("EPL").  A copy of the EPL is provided with this Content and is also
- available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, "Program" will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse Foundation 
-source code
-   repository ("Repository") in software modules ("Modules") and made 
-available as downloadable archives ("Downloads").</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to 
-facilitate delivering, extending, and upgrading the Content.  Typical 
-modules may include plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features").</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&#8482; ARchive) in a directory named "plugins".</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or 
-Fragments and associated material.  Each Feature may be packaged as a 
-sub-directory in a directory named "features".  Within a Feature, files 
-named "feature.xml" may contain a list of the names and version numbers 
-of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features ("Included 
-Features"). Within a Feature, files named "feature.xml" may contain a 
-list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be 
-contained in files named "about.html" ("Abouts"). The terms and 
-conditions governing Features and
-Included Features should be contained in files named "license.html" 
-("Feature Licenses").  Abouts and Feature Licenses may be located in any
- directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named "src" of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is 
-installed using the Provisioning Technology (as defined below), you must
- agree to a license ("Feature Update License") during the
-installation process.  If the Feature contains Included Features, the 
-Feature Update License should either provide you with the terms and 
-conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be 
-found in the "license" property of files named "feature.properties" 
-found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the 
-terms and conditions (or references to such terms and conditions) that 
-govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER 
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
-  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND 
-CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, 
-or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions 
-govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, 
-examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager ("Provisioning Technology") for the purpose of 
-allowing users to install software, documentation, information and/or
-   other materials (collectively "Installable Software"). This 
-capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about 
-packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   ("Specification").</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install
- Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to
- be presented to, and accepted by, the users of the Provisioning 
-Technology
-   in accordance with the Specification. By using Provisioning 
-Technology in such a manner and making it available in accordance with 
-the
-   Specification, you further acknowledge your agreement to, and the 
-acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur ("Provisioning Process") in 
-which a user may execute the Provisioning Technology
-       on a machine ("Target Machine") with the intent of installing, 
-extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology 
-may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user 
-the terms and conditions that govern the use of the Installable
-       Software ("Installable Software Agreement") and such Installable 
-Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable 
-Software Agreement must inform the user of the terms and conditions that
- govern
-       the Installable Software and must solicit acceptance by the end 
-user in the manner prescribed in such Installable Software Agreement. 
-Upon such
-       indication of agreement by the user, the provisioning Technology 
-will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are
- currently may have restrictions on the import, possession, and use, 
-and/or re-export to
-   another country, of encryption software. BEFORE using any encryption 
-software, please check the country's laws, regulations and policies 
-concerning the import,
-   possession, or use, and re-export of encryption software, to see if 
-this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-
-
-</body></html>
\ No newline at end of file
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
+</body>
+</html>
diff --git a/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore b/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore
index e971238..a9a19e1 100644
--- a/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore
+++ b/org.eclipse.osbp.xtext.signal/model/SignalDSL.xcore
@@ -7,9 +7,11 @@
 
 @GenModel(copyrightText="Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  All rights reserved. This program and the accompanying materials
- are made available under the terms of the Eclipse Public License v1.0
+ are made available under the terms of the Eclipse Public License 2.0 
  which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/epl-v10.html
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
  
  Contributors:                                                      
     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -32,7 +34,7 @@
 
 class SignalModel{
 	contains XImportSection importSection
-	contains SignalPackage[] packages
+	contains SignalPackage packages
 }
 
 type InternalEObject wraps InternalEObject
@@ -54,17 +56,45 @@
 class SignalWatcher extends SignalLazyResolver {
 	String name
 	String directory
-	SignalTypeEnum signal
 	contains SignalHandler[] handlers
 }
 
 class SignalHandler extends SignalLazyResolver {
 	String name
-	SignalHandlerTypeEnum actionType
-	String filemask
-	contains DataTransfer data
 	SignalExecutionTypeEnum executiontype
-//	contains SignalNotification notification
+	contains SignalDatainterchange[] interchanges
+	contains TriggerPolicy triggerpolicy
+}
+
+class TriggerPolicy extends SignalLazyResolver{}
+class TriggerFile extends TriggerPolicy{
+	String filemask
+}
+
+class SignalScheduler extends TriggerPolicy {
+	contains Scheduler scheduler
+}
+class Scheduler extends SignalLazyResolver {
+}
+class CronScheduler extends Scheduler {
+	String expression
+}
+class HourlyScheduler extends Scheduler {
+	int minute
+}
+class DailyScheduler extends Scheduler {
+	int hour
+	int minute
+}
+class WeeklyScheduler extends Scheduler {
+	DayOfWeekEnum dayofweek
+	int hour
+	int minute
+}
+class MonthlyScheduler extends Scheduler {
+	int dayofmonth
+	int hour
+	int minute
 }
 
 interface SignalProcessor extends SignalLazyResolver {}
@@ -75,31 +105,6 @@
 	String fileName
 }
 
-class DataTransfer extends SignalLazyResolver {
-}
-
-class SingleTransfer extends DataTransfer {
-	contains SignalDatainterchange interchange
-}
-
-class ListTransfer extends DataTransfer {
-	contains SignalDatainterchange[] interchanges
-}
-
-enum SignalHandlerTypeEnum {
-	doafter as 'doAfter'	
-//	doafterdelete as 'doAfterDelete'
-	doaftermodify as 'doAfterModify'
-	doaftercreate as 'doAfterCreate'
-}
-
-enum SignalTypeEnum{
-//	all as 'all'
-//	deletesignals as 'deleteSignals' 
-	createsignals as 'createSignals' 
-	modifysignals as 'modifySignals'
-}
-
 enum SignalActionEnum {
 	DATAIMPORT as 'Import'
 	DATAEXPORT as 'Export'
@@ -107,6 +112,16 @@
 }
 
 enum SignalExecutionTypeEnum {
-	SYNC as 'synch'
-	ASYNC as 'asynch'
+	SEQ as 'sequential'
+	NOSEQ as 'parallel'
 }
+
+enum DayOfWeekEnum{
+	SUNDAY as 'sunday'
+	MONDAY as 'monday'
+	TUESDAY as 'tuesday'
+	WEDNESDAY as 'wednesday'
+	THURSDAY as 'thursday'
+	FRIDAY as 'friday'
+	SATURDAY as 'saturday'
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/notice.html b/org.eclipse.osbp.xtext.signal/notice.html
index c3d34c3..008b801 100644
--- a/org.eclipse.osbp.xtext.signal/notice.html
+++ b/org.eclipse.osbp.xtext.signal/notice.html
@@ -7,101 +7,183 @@
 </head>
 
 <body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 9, 2014</p>
+	<h2>Eclipse Foundation Software User Agreement</h2>
+	<p>November 22, 2017</p>
 
-<h3>Usage Of Content</h3>
+	<h3>Usage Of Content</h3>
 
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+	<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION,
+		INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+		(COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY
+		THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+		CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS
+		GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY
+		APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
+		BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS
+		AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE
+		AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT
+		USE THE CONTENT.</p>
 
-<h3>Applicable Licenses</h3>
+	<h3>Applicable Licenses</h3>
 
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+	<p>
+		Unless otherwise indicated, all Content made available by the Eclipse
+		Foundation is provided to you under the terms and conditions of the
+		Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the
+		EPL is provided with this Content and is also available at <a
+			href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
+		For purposes of the EPL, &quot;Program&quot; will mean the Content.
+	</p>
 
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+	<p>Content includes, but is not limited to, source code, object
+		code, documentation and other files maintained in the Eclipse
+		Foundation source code repository (&quot;Repository&quot;) in software
+		modules (&quot;Modules&quot;) and made available as downloadable
+		archives (&quot;Downloads&quot;).</p>
 
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
+	<ul>
+		<li>Content may be structured and packaged into modules to
+			facilitate delivering, extending, and upgrading the Content. Typical
+			modules may include plug-ins (&quot;Plug-ins&quot;), plug-in
+			fragments (&quot;Fragments&quot;), and features
+			(&quot;Features&quot;).</li>
+		<li>Each Plug-in or Fragment may be packaged as a sub-directory
+			or JAR (Java&trade; ARchive) in a directory named
+			&quot;plugins&quot;.</li>
+		<li>A Feature is a bundle of one or more Plug-ins and/or
+			Fragments and associated material. Each Feature may be packaged as a
+			sub-directory in a directory named &quot;features&quot;. Within a
+			Feature, files named &quot;feature.xml&quot; may contain a list of
+			the names and version numbers of the Plug-ins and/or Fragments
+			associated with that Feature.</li>
+		<li>Features may also include other Features (&quot;Included
+			Features&quot;). Within a Feature, files named
+			&quot;feature.xml&quot; may contain a list of the names and version
+			numbers of Included Features.</li>
+	</ul>
 
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
+	<p>The terms and conditions governing Plug-ins and Fragments should
+		be contained in files named &quot;about.html&quot;
+		(&quot;Abouts&quot;). The terms and conditions governing Features and
+		Included Features should be contained in files named
+		&quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and
+		Feature Licenses may be located in any directory of a Download or
+		Module including, but not limited to the following locations:</p>
 
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
+	<ul>
+		<li>The top-level (root) directory</li>
+		<li>Plug-in and Fragment directories</li>
+		<li>Inside Plug-ins and Fragments packaged as JARs</li>
+		<li>Sub-directories of the directory named &quot;src&quot; of
+			certain Plug-ins</li>
+		<li>Feature directories</li>
+	</ul>
 
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
+	<p>Note: if a Feature made available by the Eclipse Foundation is
+		installed using the Provisioning Technology (as defined below), you
+		must agree to a license (&quot;Feature Update License&quot;) during
+		the installation process. If the Feature contains Included Features,
+		the Feature Update License should either provide you with the terms
+		and conditions governing the Included Features or inform you where you
+		can locate them. Feature Update Licenses may be found in the
+		&quot;license&quot; property of files named
+		&quot;feature.properties&quot; found within a Feature. Such Abouts,
+		Feature Licenses, and Feature Update Licenses contain the terms and
+		conditions (or references to such terms and conditions) that govern
+		your use of the associated Content in that directory.</p>
 
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+	<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY
+		REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND
+		CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT
+		ARE NOT LIMITED TO):</p>
 
-<ul>
-       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
+	<ul>
+		<li>Eclipse Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>)
+		</li>
+		<li>Eclipse Distribution License Version 1.0 (available at <a
+			href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)
+		</li>
+		<li>Common Public License Version 1.0 (available at <a
+			href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)
+		</li>
+		<li>Apache Software License 1.1 (available at <a
+			href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)
+		</li>
+		<li>Apache Software License 2.0 (available at <a
+			href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)
+		</li>
+		<li>Mozilla Public License Version 1.1 (available at <a
+			href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)
+		</li>
+	</ul>
 
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+	<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND
+		CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License,
+		or Feature Update License is provided, please contact the Eclipse
+		Foundation to determine what terms and conditions govern that
+		particular Content.</p>
 
 
-<h3>Use of Provisioning Technology</h3>
+	<h3>Use of Provisioning Technology</h3>
 
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
+	<p>
+		The Eclipse Foundation makes available provisioning software, examples
+		of which include, but are not limited to, p2 and the Eclipse Update
+		Manager (&quot;Provisioning Technology&quot;) for the purpose of
+		allowing users to install software, documentation, information and/or
+		other materials (collectively &quot;Installable Software&quot;). This
+		capability is provided with the intent of allowing such users to
+		install, extend and update Eclipse-based products. Information about
+		packaging Installable Software is available at <a
+			href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+		(&quot;Specification&quot;).
+	</p>
 
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+	<p>You may use Provisioning Technology to allow other parties to
+		install Installable Software. You shall be responsible for enabling
+		the applicable license agreements relating to the Installable Software
+		to be presented to, and accepted by, the users of the Provisioning
+		Technology in accordance with the Specification. By using Provisioning
+		Technology in such a manner and making it available in accordance with
+		the Specification, you further acknowledge your agreement to, and the
+		acquisition of all necessary rights to permit the following:</p>
 
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
+	<ol>
+		<li>A series of actions may occur (&quot;Provisioning
+			Process&quot;) in which a user may execute the Provisioning
+			Technology on a machine (&quot;Target Machine&quot;) with the intent
+			of installing, extending or updating the functionality of an
+			Eclipse-based product.</li>
+		<li>During the Provisioning Process, the Provisioning Technology
+			may cause third party Installable Software or a portion thereof to be
+			accessed and copied to the Target Machine.</li>
+		<li>Pursuant to the Specification, you will provide to the user
+			the terms and conditions that govern the use of the Installable
+			Software (&quot;Installable Software Agreement&quot;) and such
+			Installable Software Agreement shall be accessed from the Target
+			Machine in accordance with the Specification. Such Installable
+			Software Agreement must inform the user of the terms and conditions
+			that govern the Installable Software and must solicit acceptance by
+			the end user in the manner prescribed in such Installable Software
+			Agreement. Upon such indication of agreement by the user, the
+			provisioning Technology will complete installation of the Installable
+			Software.</li>
+	</ol>
 
-<h3>Cryptography</h3>
+	<h3>Cryptography</h3>
 
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+	<p>Content may contain encryption software. The country in which
+		you are currently may have restrictions on the import, possession, and
+		use, and/or re-export to another country, of encryption software.
+		BEFORE using any encryption software, please check the country's laws,
+		regulations and policies concerning the import, possession, or use,
+		and re-export of encryption software, to see if this is permitted.</p>
 
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+	<p>
+		<small>Java and all Java-based trademarks are trademarks of
+			Oracle Corporation in the United States, other countries, or both.</small>
+	</p>
 </body>
 </html>
diff --git a/org.eclipse.osbp.xtext.signal/plugin.properties b/org.eclipse.osbp.xtext.signal/plugin.properties
index d69b21f..f56504d 100644
--- a/org.eclipse.osbp.xtext.signal/plugin.properties
+++ b/org.eclipse.osbp.xtext.signal/plugin.properties
@@ -1,9 +1,11 @@
 #Generated by Eclipse Messages Editor (Eclipse Babel)
 # Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 #  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License v1.0
+#  are made available under the terms of the Eclipse Public License 2.0 
 #  which accompanies this distribution, and is available at
-#  http://www.eclipse.org/legal/epl-v10.html
+#  https://www.eclipse.org/legal/epl-2.0/
+#
+#  SPDX-License-Identifier: EPL-2.0
 #  
 #  Contributors:                                                      
 #     Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/plugin.xml b/org.eclipse.osbp.xtext.signal/plugin.xml
index b36fa30..7de8b10 100644
--- a/org.eclipse.osbp.xtext.signal/plugin.xml
+++ b/org.eclipse.osbp.xtext.signal/plugin.xml
@@ -4,9 +4,11 @@
 <!--
  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
   All rights reserved. This program and the accompanying materials
-  are made available under the terms of the Eclipse Public License v1.0
+  are made available under the terms of the Eclipse Public License 2.0 
   which accompanies this distribution, and is available at
-  http://www.eclipse.org/legal/epl-v10.html
+  https://www.eclipse.org/legal/epl-2.0/
+
+  SPDX-License-Identifier: EPL-2.0
   
   Contributors:                                                      
      Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/pom.xml b/org.eclipse.osbp.xtext.signal/pom.xml
index f314c4a..996fc19 100644
--- a/org.eclipse.osbp.xtext.signal/pom.xml
+++ b/org.eclipse.osbp.xtext.signal/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation 
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/AbstractSignalDSLRuntimeModule.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/AbstractSignalDSLRuntimeModule.java
index 7e62f01..1b63944 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/AbstractSignalDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/AbstractSignalDSLRuntimeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin
index 17c810a..3d8b6d9 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSL.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetupGenerated.java
index 62eeb73..07cfee8 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetupGenerated.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetupGenerated.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLAntlrTokenFileProvider.java
index 08a8ea4..ec4bcce 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLAntlrTokenFileProvider.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLAntlrTokenFileProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLParser.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLParser.java
index bba1c3f..d3c893c 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/SignalDSLParser.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g
index 09723b3..6aae9f5 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.g
@@ -119,7 +119,7 @@
 					if ($current==null) {
 						$current = createModelElementForParent(grammarAccess.getSignalModelRule());
 					}
-					add(
+					set(
 						$current,
 						"packages",
 						lv_packages_1_0,
@@ -127,7 +127,7 @@
 					afterParserOrEnumRuleCall();
 				}
 			)
-		)*
+		)
 	)
 ;
 
@@ -277,39 +277,16 @@
 				}
 			)
 		)
-		otherlv_5='for'
+		otherlv_5='{'
 		{
-			newLeafNode(otherlv_5, grammarAccess.getSignalWatcherAccess().getForKeyword_5());
+			newLeafNode(otherlv_5, grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5());
 		}
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getSignalWatcherAccess().getSignalSignalTypeEnumEnumRuleCall_6_0());
+					newCompositeNode(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0());
 				}
-				lv_signal_6_0=ruleSignalTypeEnum
-				{
-					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
-					}
-					set(
-						$current,
-						"signal",
-						lv_signal_6_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalTypeEnum");
-					afterParserOrEnumRuleCall();
-				}
-			)
-		)
-		otherlv_7='{'
-		{
-			newLeafNode(otherlv_7, grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_7());
-		}
-		(
-			(
-				{
-					newCompositeNode(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_8_0());
-				}
-				lv_handlers_8_0=ruleSignalHandler
+				lv_handlers_6_0=ruleSignalHandler
 				{
 					if ($current==null) {
 						$current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
@@ -317,15 +294,15 @@
 					add(
 						$current,
 						"handlers",
-						lv_handlers_8_0,
+						lv_handlers_6_0,
 						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandler");
 					afterParserOrEnumRuleCall();
 				}
 			)
 		)*
-		otherlv_9='}'
+		otherlv_7='}'
 		{
-			newLeafNode(otherlv_9, grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_9());
+			newLeafNode(otherlv_7, grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7());
 		}
 	)
 ;
@@ -379,161 +356,12 @@
 		(
 			(
 				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0());
-				}
-				lv_actionType_3_0=ruleSignalHandlerTypeEnum
-				{
-					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-					}
-					set(
-						$current,
-						"actionType",
-						lv_actionType_3_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandlerTypeEnum");
-					afterParserOrEnumRuleCall();
-				}
-			)
-		)
-		(
-			(
-				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getDataDataTransferParserRuleCall_4_0());
-				}
-				lv_data_4_0=ruleDataTransfer
-				{
-					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-					}
-					set(
-						$current,
-						"data",
-						lv_data_4_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.DataTransfer");
-					afterParserOrEnumRuleCall();
-				}
-			)
-		)
-		(
-			(
-				{
-					newCompositeNode(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0());
-				}
-				lv_executiontype_5_0=ruleSignalExecutionTypeEnum
-				{
-					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-					}
-					set(
-						$current,
-						"executiontype",
-						lv_executiontype_5_0,
-						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
-					afterParserOrEnumRuleCall();
-				}
-			)
-		)?
-		otherlv_6='forFileMask'
-		{
-			newLeafNode(otherlv_6, grammarAccess.getSignalHandlerAccess().getForFileMaskKeyword_6());
-		}
-		(
-			(
-				lv_filemask_7_0=RULE_STRING
-				{
-					newLeafNode(lv_filemask_7_0, grammarAccess.getSignalHandlerAccess().getFilemaskSTRINGTerminalRuleCall_7_0());
-				}
-				{
-					if ($current==null) {
-						$current = createModelElement(grammarAccess.getSignalHandlerRule());
-					}
-					setWithLastConsumed(
-						$current,
-						"filemask",
-						lv_filemask_7_0,
-						"org.eclipse.xtext.xbase.Xtype.STRING");
-				}
-			)
-		)
-	)
-;
-
-// Entry rule entryRuleDataTransfer
-entryRuleDataTransfer returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getDataTransferRule()); }
-	iv_ruleDataTransfer=ruleDataTransfer
-	{ $current=$iv_ruleDataTransfer.current; }
-	EOF;
-
-// Rule DataTransfer
-ruleDataTransfer returns [EObject current=null]
-@init {
-	enterRule();
-}
-@after {
-	leaveRule();
-}:
-	(
-		{
-			newCompositeNode(grammarAccess.getDataTransferAccess().getSingleTransferParserRuleCall_0());
-		}
-		this_SingleTransfer_0=ruleSingleTransfer
-		{
-			$current = $this_SingleTransfer_0.current;
-			afterParserOrEnumRuleCall();
-		}
-		    |
-		{
-			newCompositeNode(grammarAccess.getDataTransferAccess().getListTransferParserRuleCall_1());
-		}
-		this_ListTransfer_1=ruleListTransfer
-		{
-			$current = $this_ListTransfer_1.current;
-			afterParserOrEnumRuleCall();
-		}
-	)
-;
-
-// Entry rule entryRuleListTransfer
-entryRuleListTransfer returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getListTransferRule()); }
-	iv_ruleListTransfer=ruleListTransfer
-	{ $current=$iv_ruleListTransfer.current; }
-	EOF;
-
-// Rule ListTransfer
-ruleListTransfer returns [EObject current=null]
-@init {
-	enterRule();
-}
-@after {
-	leaveRule();
-}:
-	(
-		(
-			{
-				$current = forceCreateModelElement(
-					grammarAccess.getListTransferAccess().getListTransferAction_0(),
-					$current);
-			}
-		)
-		otherlv_1='DataTransfer'
-		{
-			newLeafNode(otherlv_1, grammarAccess.getListTransferAccess().getDataTransferKeyword_1());
-		}
-		otherlv_2='{'
-		{
-			newLeafNode(otherlv_2, grammarAccess.getListTransferAccess().getLeftCurlyBracketKeyword_2());
-		}
-		(
-			(
-				{
-					newCompositeNode(grammarAccess.getListTransferAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0());
+					newCompositeNode(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0());
 				}
 				lv_interchanges_3_0=ruleSignalDatainterchange
 				{
 					if ($current==null) {
-						$current = createModelElementForParent(grammarAccess.getListTransferRule());
+						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
 					}
 					add(
 						$current,
@@ -544,22 +372,56 @@
 				}
 			)
 		)*
-		otherlv_4='}'
-		{
-			newLeafNode(otherlv_4, grammarAccess.getListTransferAccess().getRightCurlyBracketKeyword_4());
-		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0());
+				}
+				lv_executiontype_4_0=ruleSignalExecutionTypeEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
+					}
+					set(
+						$current,
+						"executiontype",
+						lv_executiontype_4_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0());
+				}
+				lv_triggerpolicy_5_0=ruleTriggerPolicy
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
+					}
+					set(
+						$current,
+						"triggerpolicy",
+						lv_triggerpolicy_5_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.TriggerPolicy");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
 	)
 ;
 
-// Entry rule entryRuleSingleTransfer
-entryRuleSingleTransfer returns [EObject current=null]:
-	{ newCompositeNode(grammarAccess.getSingleTransferRule()); }
-	iv_ruleSingleTransfer=ruleSingleTransfer
-	{ $current=$iv_ruleSingleTransfer.current; }
+// Entry rule entryRuleTriggerPolicy
+entryRuleTriggerPolicy returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getTriggerPolicyRule()); }
+	iv_ruleTriggerPolicy=ruleTriggerPolicy
+	{ $current=$iv_ruleTriggerPolicy.current; }
 	EOF;
 
-// Rule SingleTransfer
-ruleSingleTransfer returns [EObject current=null]
+// Rule TriggerPolicy
+ruleTriggerPolicy returns [EObject current=null]
 @init {
 	enterRule();
 }
@@ -567,22 +429,484 @@
 	leaveRule();
 }:
 	(
+		{
+			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0());
+		}
+		this_TriggerFile_0=ruleTriggerFile
+		{
+			$current = $this_TriggerFile_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1());
+		}
+		this_SignalScheduler_1=ruleSignalScheduler
+		{
+			$current = $this_SignalScheduler_1.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
+// Entry rule entryRuleTriggerFile
+entryRuleTriggerFile returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getTriggerFileRule()); }
+	iv_ruleTriggerFile=ruleTriggerFile
+	{ $current=$iv_ruleTriggerFile.current; }
+	EOF;
+
+// Rule TriggerFile
+ruleTriggerFile returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='forFileMask'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0());
+		}
 		(
-			{
-				newCompositeNode(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0());
-			}
-			lv_interchange_0_0=ruleSignalDatainterchange
-			{
-				if ($current==null) {
-					$current = createModelElementForParent(grammarAccess.getSingleTransferRule());
+			(
+				lv_filemask_1_0=RULE_STRING
+				{
+					newLeafNode(lv_filemask_1_0, grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0());
 				}
-				set(
-					$current,
-					"interchange",
-					lv_interchange_0_0,
-					"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
-				afterParserOrEnumRuleCall();
-			}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getTriggerFileRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"filemask",
+						lv_filemask_1_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleSignalScheduler
+entryRuleSignalScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getSignalSchedulerRule()); }
+	iv_ruleSignalScheduler=ruleSignalScheduler
+	{ $current=$iv_ruleSignalScheduler.current; }
+	EOF;
+
+// Rule SignalScheduler
+ruleSignalScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='scheduleFor'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0());
+				}
+				lv_scheduler_1_0=ruleScheduler
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+					}
+					set(
+						$current,
+						"scheduler",
+						lv_scheduler_1_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.Scheduler");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleScheduler
+entryRuleScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getSchedulerRule()); }
+	iv_ruleScheduler=ruleScheduler
+	{ $current=$iv_ruleScheduler.current; }
+	EOF;
+
+// Rule Scheduler
+ruleScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0());
+		}
+		this_CronScheduler_0=ruleCronScheduler
+		{
+			$current = $this_CronScheduler_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1());
+		}
+		this_HourlyScheduler_1=ruleHourlyScheduler
+		{
+			$current = $this_HourlyScheduler_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2());
+		}
+		this_DailyScheduler_2=ruleDailyScheduler
+		{
+			$current = $this_DailyScheduler_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3());
+		}
+		this_WeeklyScheduler_3=ruleWeeklyScheduler
+		{
+			$current = $this_WeeklyScheduler_3.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4());
+		}
+		this_MonthlyScheduler_4=ruleMonthlyScheduler
+		{
+			$current = $this_MonthlyScheduler_4.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
+;
+
+// Entry rule entryRuleCronScheduler
+entryRuleCronScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getCronSchedulerRule()); }
+	iv_ruleCronScheduler=ruleCronScheduler
+	{ $current=$iv_ruleCronScheduler.current; }
+	EOF;
+
+// Rule CronScheduler
+ruleCronScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='cron'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getCronSchedulerAccess().getCronKeyword_0());
+		}
+		(
+			(
+				lv_expression_1_0=RULE_STRING
+				{
+					newLeafNode(lv_expression_1_0, grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCronSchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"expression",
+						lv_expression_1_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleHourlyScheduler
+entryRuleHourlyScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getHourlySchedulerRule()); }
+	iv_ruleHourlyScheduler=ruleHourlyScheduler
+	{ $current=$iv_ruleHourlyScheduler.current; }
+	EOF;
+
+// Rule HourlyScheduler
+ruleHourlyScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='hourlyAt'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0());
+		}
+		(
+			(
+				lv_minute_1_0=RULE_INT
+				{
+					newLeafNode(lv_minute_1_0, grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getHourlySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"minute",
+						lv_minute_1_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleDailyScheduler
+entryRuleDailyScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getDailySchedulerRule()); }
+	iv_ruleDailyScheduler=ruleDailyScheduler
+	{ $current=$iv_ruleDailyScheduler.current; }
+	EOF;
+
+// Rule DailyScheduler
+ruleDailyScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='dailyAt'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0());
+		}
+		(
+			(
+				lv_hour_1_0=RULE_INT
+				{
+					newLeafNode(lv_hour_1_0, grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getDailySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"hour",
+						lv_hour_1_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+		otherlv_2=':'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getDailySchedulerAccess().getColonKeyword_2());
+		}
+		(
+			(
+				lv_minute_3_0=RULE_INT
+				{
+					newLeafNode(lv_minute_3_0, grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getDailySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"minute",
+						lv_minute_3_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleWeeklyScheduler
+entryRuleWeeklyScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getWeeklySchedulerRule()); }
+	iv_ruleWeeklyScheduler=ruleWeeklyScheduler
+	{ $current=$iv_ruleWeeklyScheduler.current; }
+	EOF;
+
+// Rule WeeklyScheduler
+ruleWeeklyScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='weeklyOn'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0());
+				}
+				lv_dayofweek_1_0=ruleDayOfWeekEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getWeeklySchedulerRule());
+					}
+					set(
+						$current,
+						"dayofweek",
+						lv_dayofweek_1_0,
+						"org.eclipse.osbp.xtext.signal.SignalDSL.DayOfWeekEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_2='at'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2());
+		}
+		(
+			(
+				lv_hour_3_0=RULE_INT
+				{
+					newLeafNode(lv_hour_3_0, grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getWeeklySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"hour",
+						lv_hour_3_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+		otherlv_4=':'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4());
+		}
+		(
+			(
+				lv_minute_5_0=RULE_INT
+				{
+					newLeafNode(lv_minute_5_0, grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getWeeklySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"minute",
+						lv_minute_5_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleMonthlyScheduler
+entryRuleMonthlyScheduler returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getMonthlySchedulerRule()); }
+	iv_ruleMonthlyScheduler=ruleMonthlyScheduler
+	{ $current=$iv_ruleMonthlyScheduler.current; }
+	EOF;
+
+// Rule MonthlyScheduler
+ruleMonthlyScheduler returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='monthlyOn'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0());
+		}
+		(
+			(
+				lv_dayofmonth_1_0=RULE_INT
+				{
+					newLeafNode(lv_dayofmonth_1_0, grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getMonthlySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"dayofmonth",
+						lv_dayofmonth_1_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+		otherlv_2='at'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2());
+		}
+		(
+			(
+				lv_hour_3_0=RULE_INT
+				{
+					newLeafNode(lv_hour_3_0, grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getMonthlySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"hour",
+						lv_hour_3_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
+		)
+		otherlv_4=':'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4());
+		}
+		(
+			(
+				lv_minute_5_0=RULE_INT
+				{
+					newLeafNode(lv_minute_5_0, grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getMonthlySchedulerRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"minute",
+						lv_minute_5_0,
+						"org.eclipse.xtext.xbase.Xbase.INT");
+				}
+			)
 		)
 	)
 ;
@@ -7572,60 +7896,6 @@
 	)
 ;
 
-// Rule SignalTypeEnum
-ruleSignalTypeEnum returns [Enumerator current=null]
-@init {
-	enterRule();
-}
-@after {
-	leaveRule();
-}:
-	(
-		(
-			enumLiteral_0='createSignals'
-			{
-				$current = grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-				newLeafNode(enumLiteral_0, grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0());
-			}
-		)
-		    |
-		(
-			enumLiteral_1='modifySignals'
-			{
-				$current = grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-				newLeafNode(enumLiteral_1, grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1());
-			}
-		)
-	)
-;
-
-// Rule SignalHandlerTypeEnum
-ruleSignalHandlerTypeEnum returns [Enumerator current=null]
-@init {
-	enterRule();
-}
-@after {
-	leaveRule();
-}:
-	(
-		(
-			enumLiteral_0='doAfterModify'
-			{
-				$current = grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-				newLeafNode(enumLiteral_0, grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0());
-			}
-		)
-		    |
-		(
-			enumLiteral_1='doAfterCreate'
-			{
-				$current = grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-				newLeafNode(enumLiteral_1, grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1());
-			}
-		)
-	)
-;
-
 // Rule SignalExecutionTypeEnum
 ruleSignalExecutionTypeEnum returns [Enumerator current=null]
 @init {
@@ -7636,18 +7906,85 @@
 }:
 	(
 		(
-			enumLiteral_0='synch'
+			enumLiteral_0='sequential'
 			{
-				$current = grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-				newLeafNode(enumLiteral_0, grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0());
+				$current = grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0());
 			}
 		)
 		    |
 		(
-			enumLiteral_1='asynch'
+			enumLiteral_1='parallel'
 			{
-				$current = grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-				newLeafNode(enumLiteral_1, grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1());
+				$current = grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1());
+			}
+		)
+	)
+;
+
+// Rule DayOfWeekEnum
+ruleDayOfWeekEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='sunday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='monday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='tuesday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='wednesday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='thursday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4());
+			}
+		)
+		    |
+		(
+			enumLiteral_5='friday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_5, grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5());
+			}
+		)
+		    |
+		(
+			enumLiteral_6='saturday'
+			{
+				$current = grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_6, grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6());
 			}
 		)
 	)
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens
index e8ef6af..d0c6d23 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSL.tokens
@@ -1,99 +1,108 @@
-'!'=63
-'!='=48
-'!=='=50
-'#'=34
-'%'=62
-'%='=41
-'&&'=46
-'&'=95
-'('=30
-')'=32
-'*'=26
-'**'=60
-'*='=39
-'+'=58
-'++'=65
-'+='=37
-','=31
-'-'=59
-'--'=66
-'-='=38
-'->'=52
-'.'=67
-'..'=54
-'..<'=53
-'/'=61
-'/='=40
-':'=74
-'::'=68
-';'=28
-'<'=42
-'<>'=56
-'='=33
-'=='=47
-'==='=49
-'=>'=55
-'>'=43
-'>='=44
-'?'=94
-'?.'=69
-'?:'=57
-'@'=29
-'DataTransfer'=21
-'Export'=97
-'Import'=96
-'['=35
-']'=36
-'as'=64
-'asynch'=103
-'case'=76
-'catch'=93
-'createSignals'=98
-'default'=75
+'!'=69
+'!='=54
+'!=='=56
+'#'=40
+'%'=68
+'%='=47
+'&&'=52
+'&'=101
+'('=36
+')'=38
+'*'=32
+'**'=66
+'*='=45
+'+'=64
+'++'=71
+'+='=43
+','=37
+'-'=65
+'--'=72
+'-='=44
+'->'=58
+'.'=73
+'..'=60
+'..<'=59
+'/'=67
+'/='=46
+':'=24
+'::'=74
+';'=34
+'<'=48
+'<>'=62
+'='=39
+'=='=53
+'==='=55
+'=>'=61
+'>'=49
+'>='=50
+'?'=100
+'?.'=75
+'?:'=63
+'@'=35
+'Export'=103
+'Import'=102
+'['=41
+']'=42
+'as'=70
+'at'=26
+'case'=81
+'catch'=99
+'cron'=21
+'dailyAt'=23
+'default'=80
 'directory'=17
-'do'=78
-'doAfterCreate'=101
-'doAfterModify'=100
-'else'=72
-'extends'=81
-'extension'=25
-'false'=84
-'fileName'=22
-'finally'=91
-'for'=18
-'forFileMask'=20
-'handler'=19
-'if'=71
-'import'=23
-'instanceof'=51
-'modifySignals'=99
-'new'=83
-'ns'=27
-'null'=86
+'do'=84
+'else'=78
+'extends'=87
+'extension'=31
+'false'=90
+'fileName'=28
+'finally'=97
+'for'=82
+'forFileMask'=19
+'friday'=111
+'handler'=18
+'hourlyAt'=22
+'if'=77
+'import'=29
+'instanceof'=57
+'monday'=107
+'monthlyOn'=27
+'new'=89
+'ns'=33
+'null'=92
 'package'=13
-'return'=89
-'static'=24
-'super'=82
-'switch'=73
-'synch'=102
-'synchronized'=92
-'throw'=88
-'true'=85
-'try'=90
-'typeof'=87
-'val'=80
-'var'=79
+'parallel'=105
+'return'=95
+'saturday'=112
+'scheduleFor'=20
+'sequential'=104
+'static'=30
+'sunday'=106
+'super'=88
+'switch'=79
+'synchronized'=98
+'throw'=94
+'thursday'=110
+'true'=91
+'try'=96
+'tuesday'=108
+'typeof'=93
+'val'=86
+'var'=85
 'watcher'=16
-'while'=77
+'wednesday'=109
+'weeklyOn'=25
+'while'=83
 '{'=14
-'|'=70
-'||'=45
+'|'=76
+'||'=51
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
-RULE_HEX=6
-RULE_ID=5
-RULE_INT=7
+RULE_HEX=7
+RULE_ID=6
+RULE_INT=5
 RULE_ML_COMMENT=9
 RULE_SL_COMMENT=10
 RULE_STRING=4
@@ -102,6 +111,15 @@
 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__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java
index 74f50fc..02770d8 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLLexer.java
@@ -1,3 +1,18 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
 package org.eclipse.osbp.xtext.signal.parser.antlr.internal;
 
 // Hack: Use our own Lexer superclass by means of import. 
@@ -12,7 +27,7 @@
 
 @SuppressWarnings("all")
 public class InternalSignalDSLLexer extends Lexer {
-    public static final int RULE_HEX=6;
+    public static final int RULE_HEX=7;
     public static final int T__50=50;
     public static final int T__59=59;
     public static final int T__55=55;
@@ -25,8 +40,8 @@
     public static final int T__54=54;
     public static final int T__60=60;
     public static final int T__61=61;
-    public static final int RULE_ID=5;
-    public static final int RULE_INT=7;
+    public static final int RULE_ID=6;
+    public static final int RULE_INT=5;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
@@ -101,18 +116,27 @@
     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__111=111;
     public static final int T__81=81;
+    public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
+    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
+    public static final int T__108=108;
     public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
     public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -235,10 +259,10 @@
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:16:7: ( 'for' )
-            // InternalSignalDSL.g:16:9: 'for'
+            // InternalSignalDSL.g:16:7: ( 'handler' )
+            // InternalSignalDSL.g:16:9: 'handler'
             {
-            match("for"); 
+            match("handler"); 
 
 
             }
@@ -256,10 +280,10 @@
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:17:7: ( 'handler' )
-            // InternalSignalDSL.g:17:9: 'handler'
+            // InternalSignalDSL.g:17:7: ( 'forFileMask' )
+            // InternalSignalDSL.g:17:9: 'forFileMask'
             {
-            match("handler"); 
+            match("forFileMask"); 
 
 
             }
@@ -277,10 +301,10 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:18:7: ( 'forFileMask' )
-            // InternalSignalDSL.g:18:9: 'forFileMask'
+            // InternalSignalDSL.g:18:7: ( 'scheduleFor' )
+            // InternalSignalDSL.g:18:9: 'scheduleFor'
             {
-            match("forFileMask"); 
+            match("scheduleFor"); 
 
 
             }
@@ -298,10 +322,10 @@
         try {
             int _type = T__21;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:19:7: ( 'DataTransfer' )
-            // InternalSignalDSL.g:19:9: 'DataTransfer'
+            // InternalSignalDSL.g:19:7: ( 'cron' )
+            // InternalSignalDSL.g:19:9: 'cron'
             {
-            match("DataTransfer"); 
+            match("cron"); 
 
 
             }
@@ -319,10 +343,10 @@
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:20:7: ( 'fileName' )
-            // InternalSignalDSL.g:20:9: 'fileName'
+            // InternalSignalDSL.g:20:7: ( 'hourlyAt' )
+            // InternalSignalDSL.g:20:9: 'hourlyAt'
             {
-            match("fileName"); 
+            match("hourlyAt"); 
 
 
             }
@@ -340,10 +364,10 @@
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:21:7: ( 'import' )
-            // InternalSignalDSL.g:21:9: 'import'
+            // InternalSignalDSL.g:21:7: ( 'dailyAt' )
+            // InternalSignalDSL.g:21:9: 'dailyAt'
             {
-            match("import"); 
+            match("dailyAt"); 
 
 
             }
@@ -361,11 +385,10 @@
         try {
             int _type = T__24;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:22:7: ( 'static' )
-            // InternalSignalDSL.g:22:9: 'static'
+            // InternalSignalDSL.g:22:7: ( ':' )
+            // InternalSignalDSL.g:22:9: ':'
             {
-            match("static"); 
-
+            match(':'); 
 
             }
 
@@ -382,10 +405,10 @@
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:23:7: ( 'extension' )
-            // InternalSignalDSL.g:23:9: 'extension'
+            // InternalSignalDSL.g:23:7: ( 'weeklyOn' )
+            // InternalSignalDSL.g:23:9: 'weeklyOn'
             {
-            match("extension"); 
+            match("weeklyOn"); 
 
 
             }
@@ -403,10 +426,11 @@
         try {
             int _type = T__26;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:24:7: ( '*' )
-            // InternalSignalDSL.g:24:9: '*'
+            // InternalSignalDSL.g:24:7: ( 'at' )
+            // InternalSignalDSL.g:24:9: 'at'
             {
-            match('*'); 
+            match("at"); 
+
 
             }
 
@@ -423,10 +447,10 @@
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:25:7: ( 'ns' )
-            // InternalSignalDSL.g:25:9: 'ns'
+            // InternalSignalDSL.g:25:7: ( 'monthlyOn' )
+            // InternalSignalDSL.g:25:9: 'monthlyOn'
             {
-            match("ns"); 
+            match("monthlyOn"); 
 
 
             }
@@ -444,10 +468,11 @@
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:26:7: ( ';' )
-            // InternalSignalDSL.g:26:9: ';'
+            // InternalSignalDSL.g:26:7: ( 'fileName' )
+            // InternalSignalDSL.g:26:9: 'fileName'
             {
-            match(';'); 
+            match("fileName"); 
+
 
             }
 
@@ -464,10 +489,11 @@
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:27:7: ( '@' )
-            // InternalSignalDSL.g:27:9: '@'
+            // InternalSignalDSL.g:27:7: ( 'import' )
+            // InternalSignalDSL.g:27:9: 'import'
             {
-            match('@'); 
+            match("import"); 
+
 
             }
 
@@ -484,10 +510,11 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:28:7: ( '(' )
-            // InternalSignalDSL.g:28:9: '('
+            // InternalSignalDSL.g:28:7: ( 'static' )
+            // InternalSignalDSL.g:28:9: 'static'
             {
-            match('('); 
+            match("static"); 
+
 
             }
 
@@ -504,10 +531,11 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:29:7: ( ',' )
-            // InternalSignalDSL.g:29:9: ','
+            // InternalSignalDSL.g:29:7: ( 'extension' )
+            // InternalSignalDSL.g:29:9: 'extension'
             {
-            match(','); 
+            match("extension"); 
+
 
             }
 
@@ -524,10 +552,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:30:7: ( ')' )
-            // InternalSignalDSL.g:30:9: ')'
+            // InternalSignalDSL.g:30:7: ( '*' )
+            // InternalSignalDSL.g:30:9: '*'
             {
-            match(')'); 
+            match('*'); 
 
             }
 
@@ -544,10 +572,11 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:31:7: ( '=' )
-            // InternalSignalDSL.g:31:9: '='
+            // InternalSignalDSL.g:31:7: ( 'ns' )
+            // InternalSignalDSL.g:31:9: 'ns'
             {
-            match('='); 
+            match("ns"); 
+
 
             }
 
@@ -564,10 +593,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:32:7: ( '#' )
-            // InternalSignalDSL.g:32:9: '#'
+            // InternalSignalDSL.g:32:7: ( ';' )
+            // InternalSignalDSL.g:32:9: ';'
             {
-            match('#'); 
+            match(';'); 
 
             }
 
@@ -584,10 +613,10 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:33:7: ( '[' )
-            // InternalSignalDSL.g:33:9: '['
+            // InternalSignalDSL.g:33:7: ( '@' )
+            // InternalSignalDSL.g:33:9: '@'
             {
-            match('['); 
+            match('@'); 
 
             }
 
@@ -604,10 +633,10 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:34:7: ( ']' )
-            // InternalSignalDSL.g:34:9: ']'
+            // InternalSignalDSL.g:34:7: ( '(' )
+            // InternalSignalDSL.g:34:9: '('
             {
-            match(']'); 
+            match('('); 
 
             }
 
@@ -624,11 +653,10 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:35:7: ( '+=' )
-            // InternalSignalDSL.g:35:9: '+='
+            // InternalSignalDSL.g:35:7: ( ',' )
+            // InternalSignalDSL.g:35:9: ','
             {
-            match("+="); 
-
+            match(','); 
 
             }
 
@@ -645,11 +673,10 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:36:7: ( '-=' )
-            // InternalSignalDSL.g:36:9: '-='
+            // InternalSignalDSL.g:36:7: ( ')' )
+            // InternalSignalDSL.g:36:9: ')'
             {
-            match("-="); 
-
+            match(')'); 
 
             }
 
@@ -666,11 +693,10 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:37:7: ( '*=' )
-            // InternalSignalDSL.g:37:9: '*='
+            // InternalSignalDSL.g:37:7: ( '=' )
+            // InternalSignalDSL.g:37:9: '='
             {
-            match("*="); 
-
+            match('='); 
 
             }
 
@@ -687,11 +713,10 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:38:7: ( '/=' )
-            // InternalSignalDSL.g:38:9: '/='
+            // InternalSignalDSL.g:38:7: ( '#' )
+            // InternalSignalDSL.g:38:9: '#'
             {
-            match("/="); 
-
+            match('#'); 
 
             }
 
@@ -708,11 +733,10 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:39:7: ( '%=' )
-            // InternalSignalDSL.g:39:9: '%='
+            // InternalSignalDSL.g:39:7: ( '[' )
+            // InternalSignalDSL.g:39:9: '['
             {
-            match("%="); 
-
+            match('['); 
 
             }
 
@@ -729,10 +753,10 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:40:7: ( '<' )
-            // InternalSignalDSL.g:40:9: '<'
+            // InternalSignalDSL.g:40:7: ( ']' )
+            // InternalSignalDSL.g:40:9: ']'
             {
-            match('<'); 
+            match(']'); 
 
             }
 
@@ -749,10 +773,11 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:41:7: ( '>' )
-            // InternalSignalDSL.g:41:9: '>'
+            // InternalSignalDSL.g:41:7: ( '+=' )
+            // InternalSignalDSL.g:41:9: '+='
             {
-            match('>'); 
+            match("+="); 
+
 
             }
 
@@ -769,10 +794,10 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:42:7: ( '>=' )
-            // InternalSignalDSL.g:42:9: '>='
+            // InternalSignalDSL.g:42:7: ( '-=' )
+            // InternalSignalDSL.g:42:9: '-='
             {
-            match(">="); 
+            match("-="); 
 
 
             }
@@ -790,10 +815,10 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:43:7: ( '||' )
-            // InternalSignalDSL.g:43:9: '||'
+            // InternalSignalDSL.g:43:7: ( '*=' )
+            // InternalSignalDSL.g:43:9: '*='
             {
-            match("||"); 
+            match("*="); 
 
 
             }
@@ -811,10 +836,10 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:44:7: ( '&&' )
-            // InternalSignalDSL.g:44:9: '&&'
+            // InternalSignalDSL.g:44:7: ( '/=' )
+            // InternalSignalDSL.g:44:9: '/='
             {
-            match("&&"); 
+            match("/="); 
 
 
             }
@@ -832,10 +857,10 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:45:7: ( '==' )
-            // InternalSignalDSL.g:45:9: '=='
+            // InternalSignalDSL.g:45:7: ( '%=' )
+            // InternalSignalDSL.g:45:9: '%='
             {
-            match("=="); 
+            match("%="); 
 
 
             }
@@ -853,11 +878,10 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:46:7: ( '!=' )
-            // InternalSignalDSL.g:46:9: '!='
+            // InternalSignalDSL.g:46:7: ( '<' )
+            // InternalSignalDSL.g:46:9: '<'
             {
-            match("!="); 
-
+            match('<'); 
 
             }
 
@@ -874,11 +898,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:47:7: ( '===' )
-            // InternalSignalDSL.g:47:9: '==='
+            // InternalSignalDSL.g:47:7: ( '>' )
+            // InternalSignalDSL.g:47:9: '>'
             {
-            match("==="); 
-
+            match('>'); 
 
             }
 
@@ -895,10 +918,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:48:7: ( '!==' )
-            // InternalSignalDSL.g:48:9: '!=='
+            // InternalSignalDSL.g:48:7: ( '>=' )
+            // InternalSignalDSL.g:48:9: '>='
             {
-            match("!=="); 
+            match(">="); 
 
 
             }
@@ -916,10 +939,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:49:7: ( 'instanceof' )
-            // InternalSignalDSL.g:49:9: 'instanceof'
+            // InternalSignalDSL.g:49:7: ( '||' )
+            // InternalSignalDSL.g:49:9: '||'
             {
-            match("instanceof"); 
+            match("||"); 
 
 
             }
@@ -937,10 +960,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:50:7: ( '->' )
-            // InternalSignalDSL.g:50:9: '->'
+            // InternalSignalDSL.g:50:7: ( '&&' )
+            // InternalSignalDSL.g:50:9: '&&'
             {
-            match("->"); 
+            match("&&"); 
 
 
             }
@@ -958,10 +981,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:51:7: ( '..<' )
-            // InternalSignalDSL.g:51:9: '..<'
+            // InternalSignalDSL.g:51:7: ( '==' )
+            // InternalSignalDSL.g:51:9: '=='
             {
-            match("..<"); 
+            match("=="); 
 
 
             }
@@ -979,10 +1002,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:52:7: ( '..' )
-            // InternalSignalDSL.g:52:9: '..'
+            // InternalSignalDSL.g:52:7: ( '!=' )
+            // InternalSignalDSL.g:52:9: '!='
             {
-            match(".."); 
+            match("!="); 
 
 
             }
@@ -1000,10 +1023,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:53:7: ( '=>' )
-            // InternalSignalDSL.g:53:9: '=>'
+            // InternalSignalDSL.g:53:7: ( '===' )
+            // InternalSignalDSL.g:53:9: '==='
             {
-            match("=>"); 
+            match("==="); 
 
 
             }
@@ -1021,10 +1044,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:54:7: ( '<>' )
-            // InternalSignalDSL.g:54:9: '<>'
+            // InternalSignalDSL.g:54:7: ( '!==' )
+            // InternalSignalDSL.g:54:9: '!=='
             {
-            match("<>"); 
+            match("!=="); 
 
 
             }
@@ -1042,10 +1065,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:55:7: ( '?:' )
-            // InternalSignalDSL.g:55:9: '?:'
+            // InternalSignalDSL.g:55:7: ( 'instanceof' )
+            // InternalSignalDSL.g:55:9: 'instanceof'
             {
-            match("?:"); 
+            match("instanceof"); 
 
 
             }
@@ -1063,10 +1086,11 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:56:7: ( '+' )
-            // InternalSignalDSL.g:56:9: '+'
+            // InternalSignalDSL.g:56:7: ( '->' )
+            // InternalSignalDSL.g:56:9: '->'
             {
-            match('+'); 
+            match("->"); 
+
 
             }
 
@@ -1083,10 +1107,11 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:57:7: ( '-' )
-            // InternalSignalDSL.g:57:9: '-'
+            // InternalSignalDSL.g:57:7: ( '..<' )
+            // InternalSignalDSL.g:57:9: '..<'
             {
-            match('-'); 
+            match("..<"); 
+
 
             }
 
@@ -1103,10 +1128,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:58:7: ( '**' )
-            // InternalSignalDSL.g:58:9: '**'
+            // InternalSignalDSL.g:58:7: ( '..' )
+            // InternalSignalDSL.g:58:9: '..'
             {
-            match("**"); 
+            match(".."); 
 
 
             }
@@ -1124,10 +1149,11 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:59:7: ( '/' )
-            // InternalSignalDSL.g:59:9: '/'
+            // InternalSignalDSL.g:59:7: ( '=>' )
+            // InternalSignalDSL.g:59:9: '=>'
             {
-            match('/'); 
+            match("=>"); 
+
 
             }
 
@@ -1144,10 +1170,11 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:60:7: ( '%' )
-            // InternalSignalDSL.g:60:9: '%'
+            // InternalSignalDSL.g:60:7: ( '<>' )
+            // InternalSignalDSL.g:60:9: '<>'
             {
-            match('%'); 
+            match("<>"); 
+
 
             }
 
@@ -1164,10 +1191,11 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:61:7: ( '!' )
-            // InternalSignalDSL.g:61:9: '!'
+            // InternalSignalDSL.g:61:7: ( '?:' )
+            // InternalSignalDSL.g:61:9: '?:'
             {
-            match('!'); 
+            match("?:"); 
+
 
             }
 
@@ -1184,11 +1212,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:62:7: ( 'as' )
-            // InternalSignalDSL.g:62:9: 'as'
+            // InternalSignalDSL.g:62:7: ( '+' )
+            // InternalSignalDSL.g:62:9: '+'
             {
-            match("as"); 
-
+            match('+'); 
 
             }
 
@@ -1205,11 +1232,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:63:7: ( '++' )
-            // InternalSignalDSL.g:63:9: '++'
+            // InternalSignalDSL.g:63:7: ( '-' )
+            // InternalSignalDSL.g:63:9: '-'
             {
-            match("++"); 
-
+            match('-'); 
 
             }
 
@@ -1226,10 +1252,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:64:7: ( '--' )
-            // InternalSignalDSL.g:64:9: '--'
+            // InternalSignalDSL.g:64:7: ( '**' )
+            // InternalSignalDSL.g:64:9: '**'
             {
-            match("--"); 
+            match("**"); 
 
 
             }
@@ -1247,10 +1273,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:65:7: ( '.' )
-            // InternalSignalDSL.g:65:9: '.'
+            // InternalSignalDSL.g:65:7: ( '/' )
+            // InternalSignalDSL.g:65:9: '/'
             {
-            match('.'); 
+            match('/'); 
 
             }
 
@@ -1267,11 +1293,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:66:7: ( '::' )
-            // InternalSignalDSL.g:66:9: '::'
+            // InternalSignalDSL.g:66:7: ( '%' )
+            // InternalSignalDSL.g:66:9: '%'
             {
-            match("::"); 
-
+            match('%'); 
 
             }
 
@@ -1288,11 +1313,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:67:7: ( '?.' )
-            // InternalSignalDSL.g:67:9: '?.'
+            // InternalSignalDSL.g:67:7: ( '!' )
+            // InternalSignalDSL.g:67:9: '!'
             {
-            match("?."); 
-
+            match('!'); 
 
             }
 
@@ -1309,10 +1333,11 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:68:7: ( '|' )
-            // InternalSignalDSL.g:68:9: '|'
+            // InternalSignalDSL.g:68:7: ( 'as' )
+            // InternalSignalDSL.g:68:9: 'as'
             {
-            match('|'); 
+            match("as"); 
+
 
             }
 
@@ -1329,10 +1354,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:69:7: ( 'if' )
-            // InternalSignalDSL.g:69:9: 'if'
+            // InternalSignalDSL.g:69:7: ( '++' )
+            // InternalSignalDSL.g:69:9: '++'
             {
-            match("if"); 
+            match("++"); 
 
 
             }
@@ -1350,10 +1375,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:70:7: ( 'else' )
-            // InternalSignalDSL.g:70:9: 'else'
+            // InternalSignalDSL.g:70:7: ( '--' )
+            // InternalSignalDSL.g:70:9: '--'
             {
-            match("else"); 
+            match("--"); 
 
 
             }
@@ -1371,11 +1396,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:71:7: ( 'switch' )
-            // InternalSignalDSL.g:71:9: 'switch'
+            // InternalSignalDSL.g:71:7: ( '.' )
+            // InternalSignalDSL.g:71:9: '.'
             {
-            match("switch"); 
-
+            match('.'); 
 
             }
 
@@ -1392,10 +1416,11 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:72:7: ( ':' )
-            // InternalSignalDSL.g:72:9: ':'
+            // InternalSignalDSL.g:72:7: ( '::' )
+            // InternalSignalDSL.g:72:9: '::'
             {
-            match(':'); 
+            match("::"); 
+
 
             }
 
@@ -1412,10 +1437,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:73:7: ( 'default' )
-            // InternalSignalDSL.g:73:9: 'default'
+            // InternalSignalDSL.g:73:7: ( '?.' )
+            // InternalSignalDSL.g:73:9: '?.'
             {
-            match("default"); 
+            match("?."); 
 
 
             }
@@ -1433,11 +1458,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:74:7: ( 'case' )
-            // InternalSignalDSL.g:74:9: 'case'
+            // InternalSignalDSL.g:74:7: ( '|' )
+            // InternalSignalDSL.g:74:9: '|'
             {
-            match("case"); 
-
+            match('|'); 
 
             }
 
@@ -1454,10 +1478,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:75:7: ( 'while' )
-            // InternalSignalDSL.g:75:9: 'while'
+            // InternalSignalDSL.g:75:7: ( 'if' )
+            // InternalSignalDSL.g:75:9: 'if'
             {
-            match("while"); 
+            match("if"); 
 
 
             }
@@ -1475,10 +1499,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:76:7: ( 'do' )
-            // InternalSignalDSL.g:76:9: 'do'
+            // InternalSignalDSL.g:76:7: ( 'else' )
+            // InternalSignalDSL.g:76:9: 'else'
             {
-            match("do"); 
+            match("else"); 
 
 
             }
@@ -1496,10 +1520,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:77:7: ( 'var' )
-            // InternalSignalDSL.g:77:9: 'var'
+            // InternalSignalDSL.g:77:7: ( 'switch' )
+            // InternalSignalDSL.g:77:9: 'switch'
             {
-            match("var"); 
+            match("switch"); 
 
 
             }
@@ -1517,10 +1541,10 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:78:7: ( 'val' )
-            // InternalSignalDSL.g:78:9: 'val'
+            // InternalSignalDSL.g:78:7: ( 'default' )
+            // InternalSignalDSL.g:78:9: 'default'
             {
-            match("val"); 
+            match("default"); 
 
 
             }
@@ -1538,10 +1562,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:79:7: ( 'extends' )
-            // InternalSignalDSL.g:79:9: 'extends'
+            // InternalSignalDSL.g:79:7: ( 'case' )
+            // InternalSignalDSL.g:79:9: 'case'
             {
-            match("extends"); 
+            match("case"); 
 
 
             }
@@ -1559,10 +1583,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:80:7: ( 'super' )
-            // InternalSignalDSL.g:80:9: 'super'
+            // InternalSignalDSL.g:80:7: ( 'for' )
+            // InternalSignalDSL.g:80:9: 'for'
             {
-            match("super"); 
+            match("for"); 
 
 
             }
@@ -1580,10 +1604,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:81:7: ( 'new' )
-            // InternalSignalDSL.g:81:9: 'new'
+            // InternalSignalDSL.g:81:7: ( 'while' )
+            // InternalSignalDSL.g:81:9: 'while'
             {
-            match("new"); 
+            match("while"); 
 
 
             }
@@ -1601,10 +1625,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:82:7: ( 'false' )
-            // InternalSignalDSL.g:82:9: 'false'
+            // InternalSignalDSL.g:82:7: ( 'do' )
+            // InternalSignalDSL.g:82:9: 'do'
             {
-            match("false"); 
+            match("do"); 
 
 
             }
@@ -1622,10 +1646,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:83:7: ( 'true' )
-            // InternalSignalDSL.g:83:9: 'true'
+            // InternalSignalDSL.g:83:7: ( 'var' )
+            // InternalSignalDSL.g:83:9: 'var'
             {
-            match("true"); 
+            match("var"); 
 
 
             }
@@ -1643,10 +1667,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:84:7: ( 'null' )
-            // InternalSignalDSL.g:84:9: 'null'
+            // InternalSignalDSL.g:84:7: ( 'val' )
+            // InternalSignalDSL.g:84:9: 'val'
             {
-            match("null"); 
+            match("val"); 
 
 
             }
@@ -1664,10 +1688,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:85:7: ( 'typeof' )
-            // InternalSignalDSL.g:85:9: 'typeof'
+            // InternalSignalDSL.g:85:7: ( 'extends' )
+            // InternalSignalDSL.g:85:9: 'extends'
             {
-            match("typeof"); 
+            match("extends"); 
 
 
             }
@@ -1685,10 +1709,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:86:7: ( 'throw' )
-            // InternalSignalDSL.g:86:9: 'throw'
+            // InternalSignalDSL.g:86:7: ( 'super' )
+            // InternalSignalDSL.g:86:9: 'super'
             {
-            match("throw"); 
+            match("super"); 
 
 
             }
@@ -1706,10 +1730,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:87:7: ( 'return' )
-            // InternalSignalDSL.g:87:9: 'return'
+            // InternalSignalDSL.g:87:7: ( 'new' )
+            // InternalSignalDSL.g:87:9: 'new'
             {
-            match("return"); 
+            match("new"); 
 
 
             }
@@ -1727,10 +1751,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:88:7: ( 'try' )
-            // InternalSignalDSL.g:88:9: 'try'
+            // InternalSignalDSL.g:88:7: ( 'false' )
+            // InternalSignalDSL.g:88:9: 'false'
             {
-            match("try"); 
+            match("false"); 
 
 
             }
@@ -1748,10 +1772,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:89:7: ( 'finally' )
-            // InternalSignalDSL.g:89:9: 'finally'
+            // InternalSignalDSL.g:89:7: ( 'true' )
+            // InternalSignalDSL.g:89:9: 'true'
             {
-            match("finally"); 
+            match("true"); 
 
 
             }
@@ -1769,10 +1793,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:90:7: ( 'synchronized' )
-            // InternalSignalDSL.g:90:9: 'synchronized'
+            // InternalSignalDSL.g:90:7: ( 'null' )
+            // InternalSignalDSL.g:90:9: 'null'
             {
-            match("synchronized"); 
+            match("null"); 
 
 
             }
@@ -1790,10 +1814,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:91:7: ( 'catch' )
-            // InternalSignalDSL.g:91:9: 'catch'
+            // InternalSignalDSL.g:91:7: ( 'typeof' )
+            // InternalSignalDSL.g:91:9: 'typeof'
             {
-            match("catch"); 
+            match("typeof"); 
 
 
             }
@@ -1811,10 +1835,11 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:92:7: ( '?' )
-            // InternalSignalDSL.g:92:9: '?'
+            // InternalSignalDSL.g:92:7: ( 'throw' )
+            // InternalSignalDSL.g:92:9: 'throw'
             {
-            match('?'); 
+            match("throw"); 
+
 
             }
 
@@ -1831,10 +1856,11 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:93:7: ( '&' )
-            // InternalSignalDSL.g:93:9: '&'
+            // InternalSignalDSL.g:93:7: ( 'return' )
+            // InternalSignalDSL.g:93:9: 'return'
             {
-            match('&'); 
+            match("return"); 
+
 
             }
 
@@ -1851,10 +1877,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:94:7: ( 'Import' )
-            // InternalSignalDSL.g:94:9: 'Import'
+            // InternalSignalDSL.g:94:7: ( 'try' )
+            // InternalSignalDSL.g:94:9: 'try'
             {
-            match("Import"); 
+            match("try"); 
 
 
             }
@@ -1872,10 +1898,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:95:7: ( 'Export' )
-            // InternalSignalDSL.g:95:9: 'Export'
+            // InternalSignalDSL.g:95:7: ( 'finally' )
+            // InternalSignalDSL.g:95:9: 'finally'
             {
-            match("Export"); 
+            match("finally"); 
 
 
             }
@@ -1893,10 +1919,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:96:7: ( 'createSignals' )
-            // InternalSignalDSL.g:96:9: 'createSignals'
+            // InternalSignalDSL.g:96:7: ( 'synchronized' )
+            // InternalSignalDSL.g:96:9: 'synchronized'
             {
-            match("createSignals"); 
+            match("synchronized"); 
 
 
             }
@@ -1914,10 +1940,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:97:7: ( 'modifySignals' )
-            // InternalSignalDSL.g:97:9: 'modifySignals'
+            // InternalSignalDSL.g:97:7: ( 'catch' )
+            // InternalSignalDSL.g:97:9: 'catch'
             {
-            match("modifySignals"); 
+            match("catch"); 
 
 
             }
@@ -1935,11 +1961,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:98:8: ( 'doAfterModify' )
-            // InternalSignalDSL.g:98:10: 'doAfterModify'
+            // InternalSignalDSL.g:98:8: ( '?' )
+            // InternalSignalDSL.g:98:10: '?'
             {
-            match("doAfterModify"); 
-
+            match('?'); 
 
             }
 
@@ -1956,11 +1981,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:99:8: ( 'doAfterCreate' )
-            // InternalSignalDSL.g:99:10: 'doAfterCreate'
+            // InternalSignalDSL.g:99:8: ( '&' )
+            // InternalSignalDSL.g:99:10: '&'
             {
-            match("doAfterCreate"); 
-
+            match('&'); 
 
             }
 
@@ -1977,10 +2001,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:100:8: ( 'synch' )
-            // InternalSignalDSL.g:100:10: 'synch'
+            // InternalSignalDSL.g:100:8: ( 'Import' )
+            // InternalSignalDSL.g:100:10: 'Import'
             {
-            match("synch"); 
+            match("Import"); 
 
 
             }
@@ -1998,10 +2022,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:101:8: ( 'asynch' )
-            // InternalSignalDSL.g:101:10: 'asynch'
+            // InternalSignalDSL.g:101:8: ( 'Export' )
+            // InternalSignalDSL.g:101:10: 'Export'
             {
-            match("asynch"); 
+            match("Export"); 
 
 
             }
@@ -2014,15 +2038,204 @@
     }
     // $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;
+            // InternalSignalDSL.g:102:8: ( 'sequential' )
+            // InternalSignalDSL.g:102:10: 'sequential'
+            {
+            match("sequential"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:103:8: ( 'parallel' )
+            // InternalSignalDSL.g:103:10: 'parallel'
+            {
+            match("parallel"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:104:8: ( 'sunday' )
+            // InternalSignalDSL.g:104:10: 'sunday'
+            {
+            match("sunday"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:105:8: ( 'monday' )
+            // InternalSignalDSL.g:105:10: 'monday'
+            {
+            match("monday"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:106:8: ( 'tuesday' )
+            // InternalSignalDSL.g:106:10: 'tuesday'
+            {
+            match("tuesday"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:107:8: ( 'wednesday' )
+            // InternalSignalDSL.g:107:10: 'wednesday'
+            {
+            match("wednesday"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:108:8: ( 'thursday' )
+            // InternalSignalDSL.g:108:10: 'thursday'
+            {
+            match("thursday"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:109:8: ( 'friday' )
+            // InternalSignalDSL.g:109:10: 'friday'
+            {
+            match("friday"); 
+
+
+            }
+
+            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;
+            // InternalSignalDSL.g:110:8: ( 'saturday' )
+            // InternalSignalDSL.g:110:10: 'saturday'
+            {
+            match("saturday"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__112"
+
     // $ANTLR start "RULE_HEX"
     public final void mRULE_HEX() throws RecognitionException {
         try {
             int _type = RULE_HEX;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7656:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // InternalSignalDSL.g:7656:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:7993:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalSignalDSL.g:7993:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // InternalSignalDSL.g:7656:12: ( '0x' | '0X' )
+            // InternalSignalDSL.g:7993:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2050,7 +2263,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // InternalSignalDSL.g:7656:13: '0x'
+                    // InternalSignalDSL.g:7993:13: '0x'
                     {
                     match("0x"); 
 
@@ -2058,7 +2271,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7656:18: '0X'
+                    // InternalSignalDSL.g:7993:18: '0X'
                     {
                     match("0X"); 
 
@@ -2068,7 +2281,7 @@
 
             }
 
-            // InternalSignalDSL.g:7656:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalSignalDSL.g:7993:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2106,7 +2319,7 @@
                 cnt2++;
             } while (true);
 
-            // InternalSignalDSL.g:7656:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalSignalDSL.g:7993:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2115,10 +2328,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // InternalSignalDSL.g:7656:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:7993:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // InternalSignalDSL.g:7656:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalSignalDSL.g:7993:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2136,7 +2349,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // InternalSignalDSL.g:7656:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalSignalDSL.g:7993:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2160,7 +2373,7 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:7656:84: ( 'l' | 'L' )
+                            // InternalSignalDSL.g:7993:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2199,11 +2412,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7658:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // InternalSignalDSL.g:7658:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:7995:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalSignalDSL.g:7995:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // InternalSignalDSL.g:7658:21: ( '0' .. '9' | '_' )*
+            // InternalSignalDSL.g:7995:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2252,11 +2465,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7660:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // InternalSignalDSL.g:7660:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:7997:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalSignalDSL.g:7997:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             {
             mRULE_INT(); 
-            // InternalSignalDSL.g:7660:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalSignalDSL.g:7997:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2265,7 +2478,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // InternalSignalDSL.g:7660:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalSignalDSL.g:7997:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2276,7 +2489,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // InternalSignalDSL.g:7660:36: ( '+' | '-' )?
+                    // InternalSignalDSL.g:7997:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2309,7 +2522,7 @@
 
             }
 
-            // InternalSignalDSL.g:7660:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalSignalDSL.g:7997:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2321,7 +2534,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // InternalSignalDSL.g:7660:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalSignalDSL.g:7997:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2345,7 +2558,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7660:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalSignalDSL.g:7997: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();
@@ -2378,10 +2591,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7662:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // InternalSignalDSL.g:7662:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:7999:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalSignalDSL.g:7999:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // InternalSignalDSL.g:7662:11: ( '^' )?
+            // InternalSignalDSL.g:7999:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2390,7 +2603,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // InternalSignalDSL.g:7662:11: '^'
+                    // InternalSignalDSL.g:7999:11: '^'
                     {
                     match('^'); 
 
@@ -2408,7 +2621,7 @@
                 recover(mse);
                 throw mse;}
 
-            // InternalSignalDSL.g:7662:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalSignalDSL.g:7999:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -2457,10 +2670,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7664:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // InternalSignalDSL.g:7664:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:8001:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalSignalDSL.g:8001:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // InternalSignalDSL.g:7664:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalSignalDSL.g:8001:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -2478,10 +2691,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // InternalSignalDSL.g:7664:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalSignalDSL.g:8001:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // InternalSignalDSL.g:7664:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalSignalDSL.g:8001:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -2497,7 +2710,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7664:21: '\\\\' .
+                    	    // InternalSignalDSL.g:8001:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2505,7 +2718,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:7664:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalSignalDSL.g:8001:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2525,7 +2738,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:7664:44: ( '\"' )?
+                    // InternalSignalDSL.g:8001:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -2534,7 +2747,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // InternalSignalDSL.g:7664:44: '\"'
+                            // InternalSignalDSL.g:8001:44: '\"'
                             {
                             match('\"'); 
 
@@ -2547,10 +2760,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7664:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalSignalDSL.g:8001:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // InternalSignalDSL.g:7664:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalSignalDSL.g:8001:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -2566,7 +2779,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7664:55: '\\\\' .
+                    	    // InternalSignalDSL.g:8001:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -2574,7 +2787,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // InternalSignalDSL.g:7664:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalSignalDSL.g:8001:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -2594,7 +2807,7 @@
                         }
                     } while (true);
 
-                    // InternalSignalDSL.g:7664:79: ( '\\'' )?
+                    // InternalSignalDSL.g:8001:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -2603,7 +2816,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // InternalSignalDSL.g:7664:79: '\\''
+                            // InternalSignalDSL.g:8001:79: '\\''
                             {
                             match('\''); 
 
@@ -2634,12 +2847,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7666:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // InternalSignalDSL.g:7666:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalSignalDSL.g:8003:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalSignalDSL.g:8003:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // InternalSignalDSL.g:7666:24: ( options {greedy=false; } : . )*
+            // InternalSignalDSL.g:8003:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -2664,7 +2877,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // InternalSignalDSL.g:7666:52: .
+            	    // InternalSignalDSL.g:8003:52: .
             	    {
             	    matchAny(); 
 
@@ -2694,12 +2907,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7668:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // InternalSignalDSL.g:7668:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:8005:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalSignalDSL.g:8005:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // InternalSignalDSL.g:7668:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalSignalDSL.g:8005:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -2712,7 +2925,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // InternalSignalDSL.g:7668:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalSignalDSL.g:8005: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();
@@ -2732,7 +2945,7 @@
                 }
             } while (true);
 
-            // InternalSignalDSL.g:7668:40: ( ( '\\r' )? '\\n' )?
+            // InternalSignalDSL.g:8005:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -2741,9 +2954,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:7668:41: ( '\\r' )? '\\n'
+                    // InternalSignalDSL.g:8005:41: ( '\\r' )? '\\n'
                     {
-                    // InternalSignalDSL.g:7668:41: ( '\\r' )?
+                    // InternalSignalDSL.g:8005:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -2752,7 +2965,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // InternalSignalDSL.g:7668:41: '\\r'
+                            // InternalSignalDSL.g:8005:41: '\\r'
                             {
                             match('\r'); 
 
@@ -2784,10 +2997,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7670:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // InternalSignalDSL.g:7670:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:8007:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalSignalDSL.g:8007:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // InternalSignalDSL.g:7670:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalSignalDSL.g:8007:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -2841,8 +3054,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // InternalSignalDSL.g:7672:16: ( . )
-            // InternalSignalDSL.g:7672:18: .
+            // InternalSignalDSL.g:8009:16: ( . )
+            // InternalSignalDSL.g:8009:18: .
             {
             matchAny(); 
 
@@ -2857,8 +3070,8 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // InternalSignalDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=100;
+        // InternalSignalDSL.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=109;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
@@ -3499,63 +3712,126 @@
                 }
                 break;
             case 92 :
-                // InternalSignalDSL.g:1:560: RULE_HEX
+                // InternalSignalDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalSignalDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalSignalDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalSignalDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalSignalDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // InternalSignalDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // InternalSignalDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // InternalSignalDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // InternalSignalDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // InternalSignalDSL.g:1:623: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 93 :
-                // InternalSignalDSL.g:1:569: RULE_INT
+            case 102 :
+                // InternalSignalDSL.g:1:632: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 94 :
-                // InternalSignalDSL.g:1:578: RULE_DECIMAL
+            case 103 :
+                // InternalSignalDSL.g:1:641: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 95 :
-                // InternalSignalDSL.g:1:591: RULE_ID
+            case 104 :
+                // InternalSignalDSL.g:1:654: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 96 :
-                // InternalSignalDSL.g:1:599: RULE_STRING
+            case 105 :
+                // InternalSignalDSL.g:1:662: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 97 :
-                // InternalSignalDSL.g:1:611: RULE_ML_COMMENT
+            case 106 :
+                // InternalSignalDSL.g:1:674: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 98 :
-                // InternalSignalDSL.g:1:627: RULE_SL_COMMENT
+            case 107 :
+                // InternalSignalDSL.g:1:690: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 99 :
-                // InternalSignalDSL.g:1:643: RULE_WS
+            case 108 :
+                // InternalSignalDSL.g:1:706: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 100 :
-                // InternalSignalDSL.g:1:651: RULE_ANY_OTHER
+            case 109 :
+                // InternalSignalDSL.g:1:714: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -3569,196 +3845,177 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\64\2\uffff\10\64\1\114\1\64\5\uffff\1\127\3\uffff\1\135\1\141\1\145\1\147\1\151\1\153\1\155\1\157\1\161\1\163\1\166\1\64\1\171\7\64\2\u0086\1\62\5\uffff\1\64\3\uffff\4\64\1\u0090\7\64\1\u0099\6\64\3\uffff\1\u00a0\2\64\5\uffff\1\u00a4\32\uffff\1\u00a6\1\uffff\1\u00a8\4\uffff\1\u00aa\2\uffff\12\64\1\uffff\1\u0086\4\uffff\6\64\1\uffff\1\u00bf\7\64\1\uffff\6\64\1\uffff\1\u00cd\1\64\6\uffff\1\64\1\uffff\3\64\1\u00d3\1\u00d4\1\64\1\u00d6\15\64\1\uffff\14\64\1\u00f0\1\uffff\1\u00f1\1\64\1\u00f3\2\64\2\uffff\1\u00f6\1\uffff\10\64\1\u00ff\6\64\1\u0106\6\64\1\u010d\1\u010f\1\64\2\uffff\1\64\1\uffff\1\u0113\1\64\1\uffff\1\64\1\u0116\6\64\1\uffff\6\64\1\uffff\2\64\1\u0125\1\64\1\u0127\1\u0128\1\uffff\1\64\1\uffff\2\64\1\u012c\1\uffff\1\64\1\u012e\1\uffff\1\u012f\1\u0130\1\u0131\1\64\1\u0133\1\u0134\1\64\1\u0136\3\64\1\u013b\1\u013c\1\64\1\uffff\1\64\2\uffff\2\64\1\u0141\1\uffff\1\64\4\uffff\1\64\2\uffff\1\64\1\uffff\3\64\1\u0148\2\uffff\4\64\1\uffff\2\64\1\u014f\3\64\1\uffff\3\64\1\u0156\2\64\1\uffff\4\64\1\u015d\1\64\1\uffff\4\64\1\u0163\1\64\1\uffff\5\64\1\uffff\1\u016a\1\u016b\2\64\1\u016e\1\u016f\2\uffff\1\u0170\1\u0171\4\uffff";
+        "\1\uffff\1\63\2\uffff\6\63\1\115\4\63\1\130\1\63\5\uffff\1\143\3\uffff\1\151\1\155\1\161\1\163\1\165\1\167\1\171\1\173\1\175\1\177\1\u0082\5\63\2\u008d\1\61\5\uffff\1\63\3\uffff\6\63\1\u009a\17\63\2\uffff\1\u00ad\1\u00ae\3\63\1\u00b2\2\63\3\uffff\1\u00b5\2\63\5\uffff\1\u00b9\32\uffff\1\u00bb\1\uffff\1\u00bd\4\uffff\10\63\1\uffff\1\u008d\4\uffff\11\63\1\uffff\2\63\1\u00d5\17\63\2\uffff\3\63\1\uffff\2\63\1\uffff\1\u00eb\1\63\6\uffff\1\u00ed\1\u00ee\1\63\1\u00f0\23\63\1\uffff\14\63\1\u0110\1\u0111\6\63\1\u0118\1\uffff\1\u0119\2\uffff\1\u011a\1\uffff\14\63\1\u0127\10\63\1\u0130\4\63\1\u0135\4\63\2\uffff\1\u013a\5\63\3\uffff\1\63\1\u0142\12\63\1\uffff\10\63\1\uffff\1\u0155\1\63\1\u0157\1\u0158\1\uffff\1\u0159\3\63\1\uffff\1\63\1\u015e\1\u015f\3\63\1\u0163\1\uffff\2\63\1\u0166\1\u0167\1\u0168\1\u0169\1\63\1\u016b\3\63\1\u016f\1\u0170\1\u0171\3\63\1\u0175\1\uffff\1\63\3\uffff\4\63\2\uffff\2\63\1\u017d\1\uffff\1\63\1\u017f\4\uffff\1\u0180\1\uffff\1\u0181\2\63\3\uffff\1\u0184\1\63\1\u0186\1\uffff\3\63\1\u018a\3\63\1\uffff\1\u018e\3\uffff\1\u018f\1\u0190\1\uffff\1\63\1\uffff\3\63\1\uffff\1\u0195\1\63\1\u0197\3\uffff\3\63\1\u019b\1\uffff\1\u019c\1\uffff\1\u019d\1\u019e\1\63\4\uffff\1\u01a0\1\uffff";
     static final String DFA21_eofS =
-        "\u0172\uffff";
+        "\u01a1\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\1\141\1\145\3\141\1\146\1\164\1\154\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\163\1\72\2\141\1\150\1\145\1\155\1\170\1\157\2\60\1\44\5\uffff\1\143\3\uffff\1\164\1\151\1\162\1\146\1\44\1\162\2\154\1\156\1\164\1\160\1\163\1\44\1\141\1\151\1\160\1\156\1\164\1\163\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\44\2\uffff\1\163\1\145\1\154\1\165\1\160\1\162\1\164\2\160\1\144\1\uffff\1\60\4\uffff\1\153\1\143\1\154\1\145\1\141\1\146\1\uffff\1\44\1\145\1\141\1\163\1\144\1\141\1\157\1\164\1\uffff\2\164\1\145\1\143\2\145\1\uffff\1\44\1\154\6\uffff\1\156\1\uffff\1\145\1\143\1\141\2\44\1\145\1\44\1\145\1\157\1\165\2\157\1\151\1\141\1\150\1\145\1\143\1\165\1\164\1\151\1\uffff\1\116\1\154\1\145\1\154\1\124\1\162\1\141\1\151\1\143\1\162\1\150\1\156\1\44\1\uffff\1\44\1\143\1\44\1\150\1\164\2\uffff\1\44\1\uffff\1\157\1\167\3\162\1\146\1\147\1\145\1\44\1\164\1\154\1\145\1\154\1\141\1\154\1\44\1\145\1\162\1\164\1\156\1\143\1\150\2\44\1\144\2\uffff\1\150\1\uffff\1\44\1\145\1\uffff\1\146\1\44\1\156\2\164\1\171\1\145\1\162\1\uffff\1\157\1\164\1\162\1\145\1\155\1\171\1\uffff\1\162\1\141\1\44\1\143\2\44\1\uffff\1\157\1\uffff\1\151\1\163\1\44\1\uffff\1\123\1\44\1\uffff\3\44\1\123\2\44\1\162\1\44\1\103\1\115\1\145\2\44\1\156\1\uffff\1\145\2\uffff\1\156\1\157\1\44\1\uffff\1\151\4\uffff\1\151\2\uffff\1\171\1\uffff\1\157\1\162\1\141\1\44\2\uffff\1\163\1\157\1\151\1\156\1\uffff\2\147\1\44\1\144\1\145\1\163\1\uffff\2\146\1\172\1\44\2\156\1\uffff\1\151\1\141\1\153\1\145\1\44\1\145\1\uffff\2\141\1\146\1\164\1\44\1\162\1\uffff\1\144\2\154\1\171\1\145\1\uffff\2\44\2\163\2\44\2\uffff\2\44\4\uffff";
+        "\1\0\1\141\2\uffff\6\141\1\72\1\163\1\157\1\146\1\154\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\55\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\141\1\150\1\145\1\155\1\170\2\60\1\44\5\uffff\1\143\3\uffff\1\164\1\144\1\151\1\162\1\151\1\146\1\44\1\156\1\165\1\162\2\154\1\151\1\150\1\141\1\151\2\156\1\161\1\164\1\157\1\163\2\uffff\2\44\1\156\1\160\1\163\1\44\1\164\1\163\3\uffff\1\44\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\154\1\165\1\160\1\162\1\145\1\164\2\160\1\uffff\1\60\4\uffff\1\153\1\141\1\143\1\153\1\156\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\44\1\145\1\141\1\163\1\144\1\145\2\164\1\145\1\144\1\143\2\165\1\156\1\145\1\143\2\uffff\1\144\1\157\1\164\1\uffff\2\145\1\uffff\1\44\1\154\6\uffff\2\44\1\145\1\44\1\145\1\157\1\162\1\163\1\165\2\157\1\141\1\154\1\150\1\154\2\145\1\143\1\171\1\165\2\154\1\151\1\uffff\1\116\1\154\1\145\1\141\1\144\1\151\1\143\1\162\1\141\1\150\1\145\1\162\2\44\2\150\1\141\1\162\1\141\1\156\1\44\1\uffff\1\44\2\uffff\1\44\1\uffff\1\157\1\167\1\163\1\144\3\162\1\147\1\154\1\145\1\171\1\163\1\44\1\164\1\101\1\154\1\145\1\171\1\154\1\141\1\154\1\44\1\171\1\165\1\143\1\150\1\44\1\171\1\162\1\156\1\144\2\uffff\1\44\1\154\1\171\1\164\1\156\1\144\3\uffff\1\146\1\44\1\144\1\141\1\156\2\164\2\145\1\162\1\117\1\144\1\uffff\1\157\2\164\1\162\1\101\1\145\1\155\1\171\1\uffff\1\44\1\154\2\44\1\uffff\1\44\1\157\1\164\1\141\1\uffff\1\171\2\44\1\143\1\151\1\163\1\44\1\uffff\1\141\1\171\4\44\1\154\1\44\1\156\1\141\1\162\3\44\1\164\1\115\1\145\1\44\1\uffff\1\145\3\uffff\1\156\1\151\1\171\1\117\2\uffff\1\145\1\157\1\44\1\uffff\1\171\1\44\4\uffff\1\44\1\uffff\1\44\2\171\3\uffff\1\44\1\141\1\44\1\uffff\1\106\1\151\1\141\1\44\1\156\1\157\1\156\1\uffff\1\44\3\uffff\2\44\1\uffff\1\163\1\uffff\1\157\1\172\1\154\1\uffff\1\44\1\146\1\44\3\uffff\1\153\1\162\1\145\1\44\1\uffff\1\44\1\uffff\2\44\1\144\4\uffff\1\44\1\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\141\2\uffff\1\150\2\157\2\141\1\156\1\171\1\170\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\163\1\72\1\162\1\141\1\171\1\145\1\155\1\170\1\157\1\170\1\154\1\172\5\uffff\1\143\3\uffff\1\164\1\151\1\162\1\146\1\172\1\162\1\156\1\154\1\156\1\164\1\160\1\163\1\172\1\141\1\151\1\160\1\156\1\164\1\163\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\172\2\uffff\1\164\1\145\1\162\1\171\1\160\1\162\1\164\2\160\1\144\1\uffff\1\154\4\uffff\1\153\1\143\1\154\1\145\1\141\1\146\1\uffff\1\172\1\145\1\141\1\163\1\144\1\141\1\157\1\164\1\uffff\2\164\1\145\1\143\2\145\1\uffff\1\172\1\154\6\uffff\1\156\1\uffff\1\145\1\143\1\141\2\172\1\145\1\172\1\145\1\157\1\165\2\157\1\151\1\141\1\150\1\145\1\143\1\165\1\164\1\151\1\uffff\1\116\1\154\1\145\1\154\1\124\1\162\1\141\1\151\1\143\1\162\1\150\1\156\1\172\1\uffff\1\172\1\143\1\172\1\150\1\164\2\uffff\1\172\1\uffff\1\157\1\167\3\162\1\146\1\147\1\145\1\172\1\164\1\154\1\145\1\154\1\141\1\154\1\172\1\145\1\162\1\164\1\156\1\143\1\150\2\172\1\163\2\uffff\1\150\1\uffff\1\172\1\145\1\uffff\1\146\1\172\1\156\2\164\1\171\1\145\1\162\1\uffff\1\157\1\164\1\162\1\145\1\155\1\171\1\uffff\1\162\1\141\1\172\1\143\2\172\1\uffff\1\157\1\uffff\1\151\1\163\1\172\1\uffff\1\123\1\172\1\uffff\3\172\1\123\2\172\1\162\1\172\2\115\1\145\2\172\1\156\1\uffff\1\145\2\uffff\1\156\1\157\1\172\1\uffff\1\151\4\uffff\1\151\2\uffff\1\171\1\uffff\1\157\1\162\1\141\1\172\2\uffff\1\163\1\157\1\151\1\156\1\uffff\2\147\1\172\1\144\1\145\1\163\1\uffff\2\146\2\172\2\156\1\uffff\1\151\1\141\1\153\1\145\1\172\1\145\1\uffff\2\141\1\146\1\164\1\172\1\162\1\uffff\1\144\2\154\1\171\1\145\1\uffff\2\172\2\163\2\172\2\uffff\2\172\4\uffff";
+        "\1\uffff\1\141\2\uffff\1\150\2\157\1\162\1\171\1\162\1\72\1\164\1\157\1\156\1\170\1\75\1\165\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\141\1\171\1\145\1\155\2\170\1\154\1\172\5\uffff\1\162\3\uffff\1\164\1\145\1\151\1\162\1\151\1\146\1\172\1\156\1\165\1\162\1\156\1\154\1\151\1\150\1\141\1\151\1\160\1\156\1\161\1\164\1\157\1\164\2\uffff\2\172\1\156\1\160\1\163\1\172\1\164\1\163\3\uffff\1\172\1\167\1\154\5\uffff\1\75\32\uffff\1\75\1\uffff\1\74\4\uffff\1\162\1\171\1\160\1\165\1\145\1\164\2\160\1\uffff\1\154\4\uffff\1\153\1\141\1\143\1\153\1\156\1\154\1\145\1\154\1\141\1\uffff\1\144\1\162\1\172\1\145\1\141\1\163\1\144\1\145\2\164\1\145\1\144\1\143\2\165\1\156\1\145\1\143\2\uffff\1\164\1\157\1\164\1\uffff\2\145\1\uffff\1\172\1\154\6\uffff\2\172\1\145\1\172\1\145\1\157\1\162\1\163\1\165\2\157\1\141\1\154\1\150\1\154\2\145\1\143\1\171\1\165\2\154\1\151\1\uffff\1\116\1\154\1\145\1\141\1\144\1\151\1\143\1\162\1\141\1\150\1\145\1\162\2\172\2\150\1\141\1\162\1\141\1\156\1\172\1\uffff\1\172\2\uffff\1\172\1\uffff\1\157\1\167\1\163\1\144\3\162\1\147\1\154\1\145\1\171\1\163\1\172\1\164\1\101\1\154\1\145\1\171\1\154\1\141\1\154\1\172\1\171\1\165\1\143\1\150\1\172\1\171\1\162\1\156\1\144\2\uffff\1\172\1\154\1\171\1\164\1\156\1\163\3\uffff\1\146\1\172\1\144\1\141\1\156\2\164\2\145\1\162\1\117\1\144\1\uffff\1\157\2\164\1\162\1\101\1\145\1\155\1\171\1\uffff\1\172\1\154\2\172\1\uffff\1\172\1\157\1\164\1\141\1\uffff\1\171\2\172\1\143\1\151\1\163\1\172\1\uffff\1\141\1\171\4\172\1\154\1\172\1\156\1\141\1\162\3\172\1\164\1\115\1\145\1\172\1\uffff\1\145\3\uffff\1\156\1\151\1\171\1\117\2\uffff\1\145\1\157\1\172\1\uffff\1\171\1\172\4\uffff\1\172\1\uffff\1\172\2\171\3\uffff\1\172\1\141\1\172\1\uffff\1\106\1\151\1\141\1\172\1\156\1\157\1\156\1\uffff\1\172\3\uffff\2\172\1\uffff\1\163\1\uffff\1\157\1\172\1\154\1\uffff\1\172\1\146\1\172\3\uffff\1\153\1\162\1\145\1\172\1\uffff\1\172\1\uffff\2\172\1\144\4\uffff\1\172\1\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\12\uffff\1\20\1\21\1\22\1\23\1\24\1\uffff\1\26\1\27\1\30\27\uffff\1\137\2\140\1\143\1\144\1\uffff\1\137\1\2\1\3\23\uffff\1\33\1\60\1\16\3\uffff\1\20\1\21\1\22\1\23\1\24\1\uffff\1\53\1\25\1\26\1\27\1\30\1\31\1\65\1\56\1\32\1\50\1\66\1\57\1\34\1\141\1\142\1\61\1\35\1\62\1\54\1\36\1\40\1\37\1\41\1\72\1\42\1\123\1\uffff\1\63\1\uffff\1\67\1\55\1\71\1\122\1\uffff\1\70\1\76\12\uffff\1\134\1\uffff\1\135\1\136\1\140\1\143\6\uffff\1\102\10\uffff\1\73\6\uffff\1\17\2\uffff\1\45\1\43\1\46\1\44\1\51\1\52\1\uffff\1\64\24\uffff\1\6\15\uffff\1\107\5\uffff\1\103\1\104\1\uffff\1\116\31\uffff\1\74\1\112\1\uffff\1\100\2\uffff\1\111\10\uffff\1\101\6\uffff\1\110\6\uffff\1\106\1\uffff\1\132\3\uffff\1\121\2\uffff\1\114\16\uffff\1\13\1\uffff\1\14\1\75\3\uffff\1\133\1\uffff\1\113\1\115\1\124\1\125\1\uffff\1\1\1\4\1\uffff\1\77\4\uffff\1\117\1\7\4\uffff\1\105\6\uffff\1\12\6\uffff\1\5\6\uffff\1\15\6\uffff\1\47\5\uffff\1\10\6\uffff\1\11\1\120\2\uffff\1\130\1\131\1\126\1\127";
+        "\2\uffff\1\2\1\3\15\uffff\1\26\1\27\1\30\1\31\1\32\1\uffff\1\34\1\35\1\36\23\uffff\1\150\2\151\1\154\1\155\1\uffff\1\150\1\2\1\3\26\uffff\1\76\1\14\10\uffff\1\41\1\66\1\24\3\uffff\1\26\1\27\1\30\1\31\1\32\1\uffff\1\61\1\33\1\34\1\35\1\36\1\37\1\73\1\64\1\40\1\56\1\74\1\65\1\42\1\152\1\153\1\67\1\43\1\70\1\62\1\44\1\46\1\45\1\47\1\100\1\50\1\131\1\uffff\1\71\1\uffff\1\75\1\63\1\77\1\130\10\uffff\1\145\1\uffff\1\146\1\147\1\151\1\154\11\uffff\1\110\22\uffff\1\16\1\72\3\uffff\1\101\2\uffff\1\25\2\uffff\1\53\1\51\1\54\1\52\1\57\1\60\27\uffff\1\106\25\uffff\1\115\1\uffff\1\111\1\112\1\uffff\1\124\37\uffff\1\11\1\105\6\uffff\1\102\1\120\1\117\14\uffff\1\107\10\uffff\1\116\4\uffff\1\114\4\uffff\1\127\7\uffff\1\122\22\uffff\1\143\1\uffff\1\22\1\103\1\136\4\uffff\1\137\1\21\3\uffff\1\121\2\uffff\1\123\1\132\1\133\1\1\1\uffff\1\4\3\uffff\1\13\1\104\1\6\3\uffff\1\125\7\uffff\1\113\1\uffff\1\140\1\135\1\15\2\uffff\1\12\1\uffff\1\20\3\uffff\1\144\3\uffff\1\142\1\141\1\5\4\uffff\1\17\1\uffff\1\23\3\uffff\1\134\1\55\1\7\1\10\1\uffff\1\126";
     static final String DFA21_specialS =
-        "\1\0\u0171\uffff}>";
+        "\1\0\u01a0\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\62\2\61\2\62\1\61\22\62\1\61\1\37\1\57\1\24\1\56\1\32\1\36\1\60\1\20\1\22\1\14\1\27\1\21\1\30\1\40\1\31\1\53\11\54\1\43\1\16\1\33\1\23\1\34\1\41\1\17\3\56\1\10\1\51\3\56\1\50\21\56\1\25\1\62\1\26\1\55\1\56\1\62\1\42\1\56\1\44\1\5\1\13\1\6\1\56\1\7\1\11\3\56\1\52\1\15\1\56\1\1\1\56\1\47\1\12\1\46\1\56\1\45\1\4\3\56\1\2\1\35\1\3\uff82\62",
-            "\1\63",
+            "\11\61\2\60\2\61\1\60\22\61\1\60\1\42\1\56\1\27\1\55\1\35\1\41\1\57\1\23\1\25\1\17\1\32\1\24\1\33\1\43\1\34\1\52\11\53\1\12\1\21\1\36\1\26\1\37\1\44\1\22\4\55\1\51\3\55\1\50\21\55\1\30\1\61\1\31\1\54\1\55\1\61\1\13\1\55\1\11\1\5\1\16\1\7\1\55\1\6\1\15\3\55\1\14\1\20\1\55\1\1\1\55\1\47\1\10\1\46\1\55\1\45\1\4\3\55\1\2\1\40\1\3\uff82\61",
+            "\1\62",
             "",
             "",
-            "\1\67\6\uffff\1\70",
-            "\1\72\3\uffff\1\71\5\uffff\1\73",
-            "\1\76\7\uffff\1\75\5\uffff\1\74",
-            "\1\77",
-            "\1\100",
-            "\1\103\6\uffff\1\101\1\102",
-            "\1\104\1\106\1\uffff\1\105\1\uffff\1\107",
-            "\1\111\13\uffff\1\110",
-            "\1\113\22\uffff\1\112",
-            "\1\116\15\uffff\1\115\1\uffff\1\117",
+            "\1\66\3\uffff\1\67\2\uffff\1\70",
+            "\1\72\3\uffff\1\73\3\uffff\1\71\5\uffff\1\74",
+            "\1\75\15\uffff\1\76",
+            "\1\101\7\uffff\1\100\5\uffff\1\77\2\uffff\1\102",
+            "\1\111\1\uffff\1\103\1\uffff\1\110\16\uffff\1\104\1\106\1\uffff\1\105\1\uffff\1\107",
+            "\1\113\20\uffff\1\112",
+            "\1\114",
+            "\1\117\1\116",
+            "\1\120",
+            "\1\123\6\uffff\1\121\1\122",
+            "\1\125\13\uffff\1\124",
+            "\1\127\22\uffff\1\126",
+            "\1\132\15\uffff\1\131\1\uffff\1\133",
             "",
             "",
             "",
             "",
             "",
-            "\1\125\1\126",
+            "\1\141\1\142",
             "",
             "",
             "",
-            "\1\134\21\uffff\1\133",
-            "\1\140\17\uffff\1\136\1\137",
-            "\1\143\4\uffff\1\144\15\uffff\1\142",
-            "\1\146",
-            "\1\150",
-            "\1\152",
-            "\1\154",
-            "\1\156",
-            "\1\160",
+            "\1\150\21\uffff\1\147",
+            "\1\154\17\uffff\1\152\1\153",
+            "\1\157\4\uffff\1\160\15\uffff\1\156",
             "\1\162",
-            "\1\165\13\uffff\1\164",
-            "\1\167",
+            "\1\164",
+            "\1\166",
             "\1\170",
-            "\1\172\20\uffff\1\173",
+            "\1\172",
             "\1\174",
-            "\1\177\11\uffff\1\175\6\uffff\1\176",
-            "\1\u0080",
-            "\1\u0081",
-            "\1\u0082",
+            "\1\176",
+            "\1\u0081\13\uffff\1\u0080",
             "\1\u0083",
-            "\12\u0085\10\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\13\uffff\1\u0084\6\uffff\1\u0085\2\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\13\uffff\1\u0084",
-            "\12\u0085\10\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\22\uffff\1\u0085\2\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087",
-            "\1\64\34\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u0086\11\uffff\1\u0084\2\uffff\1\u0087\3\uffff\1\u0085",
+            "\1\u0088",
+            "\1\u0089",
             "\1\u008a",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b\6\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "\1\63\34\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "",
             "",
             "",
-            "\1\u008b",
-            "\1\u008c",
-            "\1\u008d",
-            "\1\u008e",
-            "\1\64\13\uffff\12\64\7\uffff\1\u008f\31\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u0091",
-            "\1\u0092\1\uffff\1\u0093",
-            "\1\u0094",
-            "\1\u0095",
+            "",
+            "",
+            "\1\u0091\16\uffff\1\u0092",
+            "",
+            "",
+            "",
+            "\1\u0093",
+            "\1\u0095\1\u0094",
             "\1\u0096",
             "\1\u0097",
             "\1\u0098",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u009a",
+            "\1\u0099",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u009b",
             "\1\u009c",
             "\1\u009d",
-            "\1\u009e",
-            "\1\u009f",
-            "",
-            "",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u009e\1\uffff\1\u009f",
+            "\1\u00a0",
             "\1\u00a1",
             "\1\u00a2",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00a3",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00a5",
-            "",
+            "\1\u00a4",
+            "\1\u00a6\1\uffff\1\u00a5",
             "\1\u00a7",
-            "",
-            "",
-            "",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\30\64\1\u00a9\1\64",
-            "",
-            "",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00aa",
             "\1\u00ab\1\u00ac",
-            "\1\u00ad",
-            "\1\u00af\5\uffff\1\u00ae",
-            "\1\u00b0\3\uffff\1\u00b1",
-            "\1\u00b2",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u00b3",
             "\1\u00b4",
-            "\1\u00b5",
+            "",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u00b6",
             "\1\u00b7",
             "",
-            "\12\u0085\10\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087\22\uffff\1\u0085\2\uffff\1\u0087\1\uffff\3\u0087\5\uffff\1\u0087",
             "",
             "",
             "",
             "",
             "\1\u00b8",
-            "\1\u00b9",
-            "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bc",
-            "\1\u00bd",
             "",
-            "\1\64\13\uffff\12\64\7\uffff\5\64\1\u00be\24\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u00c0",
-            "\1\u00c1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ba",
+            "",
+            "\1\u00bc",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00bf\5\uffff\1\u00be",
+            "\1\u00c0\3\uffff\1\u00c1",
             "\1\u00c2",
-            "\1\u00c3",
-            "\1\u00c4",
+            "\1\u00c3\2\uffff\1\u00c4",
             "\1\u00c5",
             "\1\u00c6",
-            "",
             "\1\u00c7",
             "\1\u00c8",
+            "",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "",
+            "",
+            "",
+            "",
             "\1\u00c9",
             "\1\u00ca",
             "\1\u00cb",
             "\1\u00cc",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u00cd",
             "\1\u00ce",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00cf",
-            "",
             "\1\u00d0",
             "\1\u00d1",
+            "",
             "\1\u00d2",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u00d5",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u00d3",
+            "\1\63\13\uffff\12\63\7\uffff\5\63\1\u00d4\24\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00d6",
             "\1\u00d7",
             "\1\u00d8",
             "\1\u00d9",
@@ -3772,30 +4029,34 @@
             "\1\u00e1",
             "\1\u00e2",
             "\1\u00e3",
-            "",
             "\1\u00e4",
-            "\1\u00e5",
-            "\1\u00e6",
+            "",
+            "",
+            "\1\u00e6\17\uffff\1\u00e5",
             "\1\u00e7",
             "\1\u00e8",
+            "",
             "\1\u00e9",
             "\1\u00ea",
-            "\1\u00eb",
-            "\1\u00ec",
-            "\1\u00ed",
-            "\1\u00ee",
-            "\1\u00ef",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
             "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00ec",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00ef",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u00f1",
             "\1\u00f2",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u00f3",
             "\1\u00f4",
             "\1\u00f5",
-            "",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
+            "\1\u00f6",
             "\1\u00f7",
             "\1\u00f8",
             "\1\u00f9",
@@ -3804,100 +4065,89 @@
             "\1\u00fc",
             "\1\u00fd",
             "\1\u00fe",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u00ff",
             "\1\u0100",
             "\1\u0101",
             "\1\u0102",
             "\1\u0103",
+            "",
             "\1\u0104",
             "\1\u0105",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u0106",
             "\1\u0107",
             "\1\u0108",
             "\1\u0109",
             "\1\u010a",
             "\1\u010b",
             "\1\u010c",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\21\64\1\u010e\10\64",
-            "\1\u0111\16\uffff\1\u0110",
-            "",
-            "",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u0112",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u0113",
             "\1\u0114",
-            "",
             "\1\u0115",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u0116",
             "\1\u0117",
-            "\1\u0118",
-            "\1\u0119",
-            "\1\u011a",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
             "\1\u011b",
             "\1\u011c",
-            "",
             "\1\u011d",
             "\1\u011e",
             "\1\u011f",
             "\1\u0120",
             "\1\u0121",
             "\1\u0122",
-            "",
             "\1\u0123",
             "\1\u0124",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u0125",
             "\1\u0126",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0128",
             "\1\u0129",
-            "",
             "\1\u012a",
             "\1\u012b",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
+            "\1\u012c",
             "\1\u012d",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0131",
             "\1\u0132",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u0135",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u0138\11\uffff\1\u0137",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
             "\1\u0139",
-            "\1\u013a",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u013b",
+            "\1\u013c",
             "\1\u013d",
-            "",
             "\1\u013e",
-            "",
-            "",
-            "\1\u013f",
-            "\1\u0140",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
-            "\1\u0142",
+            "\1\u0140\16\uffff\1\u013f",
             "",
             "",
             "",
-            "",
+            "\1\u0141",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u0143",
-            "",
-            "",
             "\1\u0144",
-            "",
             "\1\u0145",
             "\1\u0146",
             "\1\u0147",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "",
-            "",
+            "\1\u0148",
             "\1\u0149",
             "\1\u014a",
             "\1\u014b",
@@ -3905,51 +4155,124 @@
             "",
             "\1\u014d",
             "\1\u014e",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u014f",
             "\1\u0150",
             "\1\u0151",
             "\1\u0152",
-            "",
             "\1\u0153",
             "\1\u0154",
-            "\1\u0155",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u0157",
-            "\1\u0158",
             "",
-            "\1\u0159",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0156",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u015a",
             "\1\u015b",
             "\1\u015c",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\u015e",
             "",
-            "\1\u015f",
+            "\1\u015d",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u0160",
             "\1\u0161",
             "\1\u0162",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
             "\1\u0164",
-            "",
             "\1\u0165",
-            "\1\u0166",
-            "\1\u0167",
-            "\1\u0168",
-            "\1\u0169",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u016a",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "\1\u016c",
             "\1\u016d",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u016e",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             "",
-            "",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
-            "\1\64\13\uffff\12\64\7\uffff\32\64\4\uffff\1\64\1\uffff\32\64",
+            "\1\u0176",
             "",
             "",
             "",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "",
+            "",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\u017e",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0182",
+            "\1\u0183",
+            "",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0185",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\u0191",
+            "",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u0196",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "",
+            "",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
+            "\1\u019f",
+            "",
+            "",
+            "",
+            "",
+            "\1\63\13\uffff\12\63\7\uffff\32\63\4\uffff\1\63\1\uffff\32\63",
             ""
     };
 
@@ -3983,7 +4306,7 @@
             this.transition = DFA21_transition;
         }
         public String getDescription() {
-            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             IntStream input = _input;
@@ -4003,67 +4326,67 @@
 
                         else if ( (LA21_0=='d') ) {s = 5;}
 
-                        else if ( (LA21_0=='f') ) {s = 6;}
+                        else if ( (LA21_0=='h') ) {s = 6;}
 
-                        else if ( (LA21_0=='h') ) {s = 7;}
+                        else if ( (LA21_0=='f') ) {s = 7;}
 
-                        else if ( (LA21_0=='D') ) {s = 8;}
+                        else if ( (LA21_0=='s') ) {s = 8;}
 
-                        else if ( (LA21_0=='i') ) {s = 9;}
+                        else if ( (LA21_0=='c') ) {s = 9;}
 
-                        else if ( (LA21_0=='s') ) {s = 10;}
+                        else if ( (LA21_0==':') ) {s = 10;}
 
-                        else if ( (LA21_0=='e') ) {s = 11;}
+                        else if ( (LA21_0=='a') ) {s = 11;}
 
-                        else if ( (LA21_0=='*') ) {s = 12;}
+                        else if ( (LA21_0=='m') ) {s = 12;}
 
-                        else if ( (LA21_0=='n') ) {s = 13;}
+                        else if ( (LA21_0=='i') ) {s = 13;}
 
-                        else if ( (LA21_0==';') ) {s = 14;}
+                        else if ( (LA21_0=='e') ) {s = 14;}
 
-                        else if ( (LA21_0=='@') ) {s = 15;}
+                        else if ( (LA21_0=='*') ) {s = 15;}
 
-                        else if ( (LA21_0=='(') ) {s = 16;}
+                        else if ( (LA21_0=='n') ) {s = 16;}
 
-                        else if ( (LA21_0==',') ) {s = 17;}
+                        else if ( (LA21_0==';') ) {s = 17;}
 
-                        else if ( (LA21_0==')') ) {s = 18;}
+                        else if ( (LA21_0=='@') ) {s = 18;}
 
-                        else if ( (LA21_0=='=') ) {s = 19;}
+                        else if ( (LA21_0=='(') ) {s = 19;}
 
-                        else if ( (LA21_0=='#') ) {s = 20;}
+                        else if ( (LA21_0==',') ) {s = 20;}
 
-                        else if ( (LA21_0=='[') ) {s = 21;}
+                        else if ( (LA21_0==')') ) {s = 21;}
 
-                        else if ( (LA21_0==']') ) {s = 22;}
+                        else if ( (LA21_0=='=') ) {s = 22;}
 
-                        else if ( (LA21_0=='+') ) {s = 23;}
+                        else if ( (LA21_0=='#') ) {s = 23;}
 
-                        else if ( (LA21_0=='-') ) {s = 24;}
+                        else if ( (LA21_0=='[') ) {s = 24;}
 
-                        else if ( (LA21_0=='/') ) {s = 25;}
+                        else if ( (LA21_0==']') ) {s = 25;}
 
-                        else if ( (LA21_0=='%') ) {s = 26;}
+                        else if ( (LA21_0=='+') ) {s = 26;}
 
-                        else if ( (LA21_0=='<') ) {s = 27;}
+                        else if ( (LA21_0=='-') ) {s = 27;}
 
-                        else if ( (LA21_0=='>') ) {s = 28;}
+                        else if ( (LA21_0=='/') ) {s = 28;}
 
-                        else if ( (LA21_0=='|') ) {s = 29;}
+                        else if ( (LA21_0=='%') ) {s = 29;}
 
-                        else if ( (LA21_0=='&') ) {s = 30;}
+                        else if ( (LA21_0=='<') ) {s = 30;}
 
-                        else if ( (LA21_0=='!') ) {s = 31;}
+                        else if ( (LA21_0=='>') ) {s = 31;}
 
-                        else if ( (LA21_0=='.') ) {s = 32;}
+                        else if ( (LA21_0=='|') ) {s = 32;}
 
-                        else if ( (LA21_0=='?') ) {s = 33;}
+                        else if ( (LA21_0=='&') ) {s = 33;}
 
-                        else if ( (LA21_0=='a') ) {s = 34;}
+                        else if ( (LA21_0=='!') ) {s = 34;}
 
-                        else if ( (LA21_0==':') ) {s = 35;}
+                        else if ( (LA21_0=='.') ) {s = 35;}
 
-                        else if ( (LA21_0=='c') ) {s = 36;}
+                        else if ( (LA21_0=='?') ) {s = 36;}
 
                         else if ( (LA21_0=='v') ) {s = 37;}
 
@@ -4075,23 +4398,21 @@
 
                         else if ( (LA21_0=='E') ) {s = 41;}
 
-                        else if ( (LA21_0=='m') ) {s = 42;}
+                        else if ( (LA21_0=='0') ) {s = 42;}
 
-                        else if ( (LA21_0=='0') ) {s = 43;}
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 43;}
 
-                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 44;}
+                        else if ( (LA21_0=='^') ) {s = 44;}
 
-                        else if ( (LA21_0=='^') ) {s = 45;}
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='D')||(LA21_0>='F' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 45;}
 
-                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='C')||(LA21_0>='F' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||(LA21_0>='j' && LA21_0<='l')||LA21_0=='o'||LA21_0=='q'||LA21_0=='u'||(LA21_0>='x' && LA21_0<='z')) ) {s = 46;}
+                        else if ( (LA21_0=='\"') ) {s = 46;}
 
-                        else if ( (LA21_0=='\"') ) {s = 47;}
+                        else if ( (LA21_0=='\'') ) {s = 47;}
 
-                        else if ( (LA21_0=='\'') ) {s = 48;}
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 48;}
 
-                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 49;}
-
-                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 50;}
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 49;}
 
                         if ( s>=0 ) return s;
                         break;
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java
index 5d60b0c..fd84c99 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/parser/antlr/internal/InternalSignalDSLParser.java
@@ -25,9 +25,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -38,9 +40,9 @@
 @SuppressWarnings("all")
 public class InternalSignalDSLParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'watcher'", "'directory'", "'for'", "'handler'", "'forFileMask'", "'DataTransfer'", "'fileName'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'Import'", "'Export'", "'createSignals'", "'modifySignals'", "'doAfterModify'", "'doAfterCreate'", "'synch'", "'asynch'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_INT", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'watcher'", "'directory'", "'handler'", "'forFileMask'", "'scheduleFor'", "'cron'", "'hourlyAt'", "'dailyAt'", "':'", "'weeklyOn'", "'at'", "'monthlyOn'", "'fileName'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'Import'", "'Export'", "'sequential'", "'parallel'", "'sunday'", "'monday'", "'tuesday'", "'wednesday'", "'thursday'", "'friday'", "'saturday'"
     };
-    public static final int RULE_HEX=6;
+    public static final int RULE_HEX=7;
     public static final int T__50=50;
     public static final int T__59=59;
     public static final int T__55=55;
@@ -53,8 +55,8 @@
     public static final int T__54=54;
     public static final int T__60=60;
     public static final int T__61=61;
-    public static final int RULE_ID=5;
-    public static final int RULE_INT=7;
+    public static final int RULE_ID=6;
+    public static final int RULE_INT=5;
     public static final int T__66=66;
     public static final int RULE_ML_COMMENT=9;
     public static final int T__67=67;
@@ -129,18 +131,27 @@
     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__111=111;
     public static final int T__81=81;
+    public static final int T__110=110;
     public static final int T__82=82;
     public static final int T__83=83;
+    public static final int T__112=112;
     public static final int RULE_WS=11;
     public static final int RULE_ANY_OTHER=12;
     public static final int T__88=88;
+    public static final int T__108=108;
     public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
     public static final int T__84=84;
+    public static final int T__104=104;
     public static final int T__85=85;
     public static final int T__103=103;
     public static final int T__86=86;
+    public static final int T__106=106;
     public static final int T__87=87;
+    public static final int T__105=105;
 
     // delegates
     // delegators
@@ -222,7 +233,7 @@
 
 
     // $ANTLR start "ruleSignalModel"
-    // InternalSignalDSL.g:85:1: ruleSignalModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )* ) ;
+    // InternalSignalDSL.g:85:1: ruleSignalModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) ) ;
     public final EObject ruleSignalModel() throws RecognitionException {
         EObject current = null;
 
@@ -235,17 +246,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:91:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )* ) )
-            // InternalSignalDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )* )
+            // InternalSignalDSL.g:91:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) ) )
+            // InternalSignalDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) )
             {
-            // InternalSignalDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )* )
-            // InternalSignalDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )*
+            // InternalSignalDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) ) )
+            // InternalSignalDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleSignalPackage ) )
             {
             // InternalSignalDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )?
             int alt1=2;
             int LA1_0 = input.LA(1);
 
-            if ( (LA1_0==23) ) {
+            if ( (LA1_0==29) ) {
                 alt1=1;
             }
             switch (alt1) {
@@ -287,58 +298,40 @@
 
             }
 
-            // InternalSignalDSL.g:112:3: ( (lv_packages_1_0= ruleSignalPackage ) )*
-            loop2:
-            do {
-                int alt2=2;
-                int LA2_0 = input.LA(1);
+            // InternalSignalDSL.g:112:3: ( (lv_packages_1_0= ruleSignalPackage ) )
+            // InternalSignalDSL.g:113:4: (lv_packages_1_0= ruleSignalPackage )
+            {
+            // InternalSignalDSL.g:113:4: (lv_packages_1_0= ruleSignalPackage )
+            // InternalSignalDSL.g:114:5: lv_packages_1_0= ruleSignalPackage
+            {
+            if ( state.backtracking==0 ) {
 
-                if ( (LA2_0==13) ) {
-                    alt2=1;
-                }
+              					newCompositeNode(grammarAccess.getSignalModelAccess().getPackagesSignalPackageParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_2);
+            lv_packages_1_0=ruleSignalPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getSignalModelRule());
+              					}
+              					set(
+              						current,
+              						"packages",
+              						lv_packages_1_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalPackage");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
 
 
-                switch (alt2) {
-            	case 1 :
-            	    // InternalSignalDSL.g:113:4: (lv_packages_1_0= ruleSignalPackage )
-            	    {
-            	    // InternalSignalDSL.g:113:4: (lv_packages_1_0= ruleSignalPackage )
-            	    // InternalSignalDSL.g:114:5: lv_packages_1_0= ruleSignalPackage
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      					newCompositeNode(grammarAccess.getSignalModelAccess().getPackagesSignalPackageParserRuleCall_1_0());
-            	      				
-            	    }
-            	    pushFollow(FOLLOW_3);
-            	    lv_packages_1_0=ruleSignalPackage();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      					if (current==null) {
-            	      						current = createModelElementForParent(grammarAccess.getSignalModelRule());
-            	      					}
-            	      					add(
-            	      						current,
-            	      						"packages",
-            	      						lv_packages_1_0,
-            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalPackage");
-            	      					afterParserOrEnumRuleCall();
-            	      				
-            	    }
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop2;
-                }
-            } while (true);
+            }
 
 
             }
@@ -482,13 +475,13 @@
             }
 
             // InternalSignalDSL.g:180:3: (otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}' )?
-            int alt4=2;
-            int LA4_0 = input.LA(1);
+            int alt3=2;
+            int LA3_0 = input.LA(1);
 
-            if ( (LA4_0==14) ) {
-                alt4=1;
+            if ( (LA3_0==14) ) {
+                alt3=1;
             }
-            switch (alt4) {
+            switch (alt3) {
                 case 1 :
                     // InternalSignalDSL.g:181:4: otherlv_3= '{' ( (lv_watchers_4_0= ruleSignalWatcher ) )* otherlv_5= '}'
                     {
@@ -499,17 +492,17 @@
                       			
                     }
                     // InternalSignalDSL.g:185:4: ( (lv_watchers_4_0= ruleSignalWatcher ) )*
-                    loop3:
+                    loop2:
                     do {
-                        int alt3=2;
-                        int LA3_0 = input.LA(1);
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
 
-                        if ( (LA3_0==16) ) {
-                            alt3=1;
+                        if ( (LA2_0==16) ) {
+                            alt2=1;
                         }
 
 
-                        switch (alt3) {
+                        switch (alt2) {
                     	case 1 :
                     	    // InternalSignalDSL.g:186:5: (lv_watchers_4_0= ruleSignalWatcher )
                     	    {
@@ -547,7 +540,7 @@
                     	    break;
 
                     	default :
-                    	    break loop3;
+                    	    break loop2;
                         }
                     } while (true);
 
@@ -628,7 +621,7 @@
 
 
     // $ANTLR start "ruleSignalWatcher"
-    // InternalSignalDSL.g:220:1: ruleSignalWatcher returns [EObject current=null] : ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= 'for' ( (lv_signal_6_0= ruleSignalTypeEnum ) ) otherlv_7= '{' ( (lv_handlers_8_0= ruleSignalHandler ) )* otherlv_9= '}' ) ;
+    // InternalSignalDSL.g:220:1: ruleSignalWatcher returns [EObject current=null] : ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' ) ;
     public final EObject ruleSignalWatcher() throws RecognitionException {
         EObject current = null;
 
@@ -637,23 +630,20 @@
         Token lv_directory_4_0=null;
         Token otherlv_5=null;
         Token otherlv_7=null;
-        Token otherlv_9=null;
         AntlrDatatypeRuleToken lv_name_2_0 = null;
 
-        Enumerator lv_signal_6_0 = null;
-
-        EObject lv_handlers_8_0 = null;
+        EObject lv_handlers_6_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:226:2: ( ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= 'for' ( (lv_signal_6_0= ruleSignalTypeEnum ) ) otherlv_7= '{' ( (lv_handlers_8_0= ruleSignalHandler ) )* otherlv_9= '}' ) )
-            // InternalSignalDSL.g:227:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= 'for' ( (lv_signal_6_0= ruleSignalTypeEnum ) ) otherlv_7= '{' ( (lv_handlers_8_0= ruleSignalHandler ) )* otherlv_9= '}' )
+            // InternalSignalDSL.g:226:2: ( ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' ) )
+            // InternalSignalDSL.g:227:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' )
             {
-            // InternalSignalDSL.g:227:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= 'for' ( (lv_signal_6_0= ruleSignalTypeEnum ) ) otherlv_7= '{' ( (lv_handlers_8_0= ruleSignalHandler ) )* otherlv_9= '}' )
-            // InternalSignalDSL.g:228:3: () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= 'for' ( (lv_signal_6_0= ruleSignalTypeEnum ) ) otherlv_7= '{' ( (lv_handlers_8_0= ruleSignalHandler ) )* otherlv_9= '}'
+            // InternalSignalDSL.g:227:2: ( () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}' )
+            // InternalSignalDSL.g:228:3: () otherlv_1= 'watcher' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) otherlv_3= 'directory' ( (lv_directory_4_0= RULE_STRING ) ) otherlv_5= '{' ( (lv_handlers_6_0= ruleSignalHandler ) )* otherlv_7= '}'
             {
             // InternalSignalDSL.g:228:3: ()
             // InternalSignalDSL.g:229:4: 
@@ -745,78 +735,37 @@
 
             }
 
-            otherlv_5=(Token)match(input,18,FOLLOW_10); if (state.failed) return current;
+            otherlv_5=(Token)match(input,14,FOLLOW_10); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_5, grammarAccess.getSignalWatcherAccess().getForKeyword_5());
+              			newLeafNode(otherlv_5, grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_5());
               		
             }
-            // InternalSignalDSL.g:284:3: ( (lv_signal_6_0= ruleSignalTypeEnum ) )
-            // InternalSignalDSL.g:285:4: (lv_signal_6_0= ruleSignalTypeEnum )
-            {
-            // InternalSignalDSL.g:285:4: (lv_signal_6_0= ruleSignalTypeEnum )
-            // InternalSignalDSL.g:286:5: lv_signal_6_0= ruleSignalTypeEnum
-            {
-            if ( state.backtracking==0 ) {
-
-              					newCompositeNode(grammarAccess.getSignalWatcherAccess().getSignalSignalTypeEnumEnumRuleCall_6_0());
-              				
-            }
-            pushFollow(FOLLOW_11);
-            lv_signal_6_0=ruleSignalTypeEnum();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElementForParent(grammarAccess.getSignalWatcherRule());
-              					}
-              					set(
-              						current,
-              						"signal",
-              						lv_signal_6_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalTypeEnum");
-              					afterParserOrEnumRuleCall();
-              				
-            }
-
-            }
-
-
-            }
-
-            otherlv_7=(Token)match(input,14,FOLLOW_12); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_7, grammarAccess.getSignalWatcherAccess().getLeftCurlyBracketKeyword_7());
-              		
-            }
-            // InternalSignalDSL.g:307:3: ( (lv_handlers_8_0= ruleSignalHandler ) )*
-            loop5:
+            // InternalSignalDSL.g:284:3: ( (lv_handlers_6_0= ruleSignalHandler ) )*
+            loop4:
             do {
-                int alt5=2;
-                int LA5_0 = input.LA(1);
+                int alt4=2;
+                int LA4_0 = input.LA(1);
 
-                if ( (LA5_0==19) ) {
-                    alt5=1;
+                if ( (LA4_0==18) ) {
+                    alt4=1;
                 }
 
 
-                switch (alt5) {
+                switch (alt4) {
             	case 1 :
-            	    // InternalSignalDSL.g:308:4: (lv_handlers_8_0= ruleSignalHandler )
+            	    // InternalSignalDSL.g:285:4: (lv_handlers_6_0= ruleSignalHandler )
             	    {
-            	    // InternalSignalDSL.g:308:4: (lv_handlers_8_0= ruleSignalHandler )
-            	    // InternalSignalDSL.g:309:5: lv_handlers_8_0= ruleSignalHandler
+            	    // InternalSignalDSL.g:285:4: (lv_handlers_6_0= ruleSignalHandler )
+            	    // InternalSignalDSL.g:286:5: lv_handlers_6_0= ruleSignalHandler
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      					newCompositeNode(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_8_0());
+            	      					newCompositeNode(grammarAccess.getSignalWatcherAccess().getHandlersSignalHandlerParserRuleCall_6_0());
             	      				
             	    }
-            	    pushFollow(FOLLOW_12);
-            	    lv_handlers_8_0=ruleSignalHandler();
+            	    pushFollow(FOLLOW_10);
+            	    lv_handlers_6_0=ruleSignalHandler();
 
             	    state._fsp--;
             	    if (state.failed) return current;
@@ -828,7 +777,7 @@
             	      					add(
             	      						current,
             	      						"handlers",
-            	      						lv_handlers_8_0,
+            	      						lv_handlers_6_0,
             	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandler");
             	      					afterParserOrEnumRuleCall();
             	      				
@@ -841,14 +790,14 @@
             	    break;
 
             	default :
-            	    break loop5;
+            	    break loop4;
                 }
             } while (true);
 
-            otherlv_9=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
+            otherlv_7=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_9, grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_9());
+              			newLeafNode(otherlv_7, grammarAccess.getSignalWatcherAccess().getRightCurlyBracketKeyword_7());
               		
             }
 
@@ -876,7 +825,7 @@
 
 
     // $ANTLR start "entryRuleSignalHandler"
-    // InternalSignalDSL.g:334:1: entryRuleSignalHandler returns [EObject current=null] : iv_ruleSignalHandler= ruleSignalHandler EOF ;
+    // InternalSignalDSL.g:311:1: entryRuleSignalHandler returns [EObject current=null] : iv_ruleSignalHandler= ruleSignalHandler EOF ;
     public final EObject entryRuleSignalHandler() throws RecognitionException {
         EObject current = null;
 
@@ -884,8 +833,8 @@
 
 
         try {
-            // InternalSignalDSL.g:334:54: (iv_ruleSignalHandler= ruleSignalHandler EOF )
-            // InternalSignalDSL.g:335:2: iv_ruleSignalHandler= ruleSignalHandler EOF
+            // InternalSignalDSL.g:311:54: (iv_ruleSignalHandler= ruleSignalHandler EOF )
+            // InternalSignalDSL.g:312:2: iv_ruleSignalHandler= ruleSignalHandler EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSignalHandlerRule()); 
@@ -916,34 +865,32 @@
 
 
     // $ANTLR start "ruleSignalHandler"
-    // InternalSignalDSL.g:341:1: ruleSignalHandler returns [EObject current=null] : ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_actionType_3_0= ruleSignalHandlerTypeEnum ) ) ( (lv_data_4_0= ruleDataTransfer ) ) ( (lv_executiontype_5_0= ruleSignalExecutionTypeEnum ) )? otherlv_6= 'forFileMask' ( (lv_filemask_7_0= RULE_STRING ) ) ) ;
+    // InternalSignalDSL.g:318:1: ruleSignalHandler returns [EObject current=null] : ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) ) ;
     public final EObject ruleSignalHandler() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
-        Token otherlv_6=null;
-        Token lv_filemask_7_0=null;
         AntlrDatatypeRuleToken lv_name_2_0 = null;
 
-        Enumerator lv_actionType_3_0 = null;
+        EObject lv_interchanges_3_0 = null;
 
-        EObject lv_data_4_0 = null;
+        Enumerator lv_executiontype_4_0 = null;
 
-        Enumerator lv_executiontype_5_0 = null;
+        EObject lv_triggerpolicy_5_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:347:2: ( ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_actionType_3_0= ruleSignalHandlerTypeEnum ) ) ( (lv_data_4_0= ruleDataTransfer ) ) ( (lv_executiontype_5_0= ruleSignalExecutionTypeEnum ) )? otherlv_6= 'forFileMask' ( (lv_filemask_7_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:348:2: ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_actionType_3_0= ruleSignalHandlerTypeEnum ) ) ( (lv_data_4_0= ruleDataTransfer ) ) ( (lv_executiontype_5_0= ruleSignalExecutionTypeEnum ) )? otherlv_6= 'forFileMask' ( (lv_filemask_7_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:324:2: ( ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) ) )
+            // InternalSignalDSL.g:325:2: ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) )
             {
-            // InternalSignalDSL.g:348:2: ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_actionType_3_0= ruleSignalHandlerTypeEnum ) ) ( (lv_data_4_0= ruleDataTransfer ) ) ( (lv_executiontype_5_0= ruleSignalExecutionTypeEnum ) )? otherlv_6= 'forFileMask' ( (lv_filemask_7_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:349:3: () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_actionType_3_0= ruleSignalHandlerTypeEnum ) ) ( (lv_data_4_0= ruleDataTransfer ) ) ( (lv_executiontype_5_0= ruleSignalExecutionTypeEnum ) )? otherlv_6= 'forFileMask' ( (lv_filemask_7_0= RULE_STRING ) )
+            // InternalSignalDSL.g:325:2: ( () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) ) )
+            // InternalSignalDSL.g:326:3: () otherlv_1= 'handler' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) ) ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) )
             {
-            // InternalSignalDSL.g:349:3: ()
-            // InternalSignalDSL.g:350:4: 
+            // InternalSignalDSL.g:326:3: ()
+            // InternalSignalDSL.g:327:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -955,24 +902,24 @@
 
             }
 
-            otherlv_1=(Token)match(input,19,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getSignalHandlerAccess().getHandlerKeyword_1());
               		
             }
-            // InternalSignalDSL.g:360:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
-            // InternalSignalDSL.g:361:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:337:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // InternalSignalDSL.g:338:4: (lv_name_2_0= ruleTRANSLATABLEID )
             {
-            // InternalSignalDSL.g:361:4: (lv_name_2_0= ruleTRANSLATABLEID )
-            // InternalSignalDSL.g:362:5: lv_name_2_0= ruleTRANSLATABLEID
+            // InternalSignalDSL.g:338:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalSignalDSL.g:339:5: lv_name_2_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getSignalHandlerAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_13);
+            pushFollow(FOLLOW_11);
             lv_name_2_0=ruleTRANSLATABLEID();
 
             state._fsp--;
@@ -996,19 +943,72 @@
 
             }
 
-            // InternalSignalDSL.g:379:3: ( (lv_actionType_3_0= ruleSignalHandlerTypeEnum ) )
-            // InternalSignalDSL.g:380:4: (lv_actionType_3_0= ruleSignalHandlerTypeEnum )
+            // InternalSignalDSL.g:356:3: ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( ((LA5_0>=102 && LA5_0<=103)) ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // InternalSignalDSL.g:357:4: (lv_interchanges_3_0= ruleSignalDatainterchange )
+            	    {
+            	    // InternalSignalDSL.g:357:4: (lv_interchanges_3_0= ruleSignalDatainterchange )
+            	    // InternalSignalDSL.g:358:5: lv_interchanges_3_0= ruleSignalDatainterchange
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getSignalHandlerAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_11);
+            	    lv_interchanges_3_0=ruleSignalDatainterchange();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"interchanges",
+            	      						lv_interchanges_3_0,
+            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
+            	      					afterParserOrEnumRuleCall();
+            	      				
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+            // InternalSignalDSL.g:375:3: ( (lv_executiontype_4_0= ruleSignalExecutionTypeEnum ) )
+            // InternalSignalDSL.g:376:4: (lv_executiontype_4_0= ruleSignalExecutionTypeEnum )
             {
-            // InternalSignalDSL.g:380:4: (lv_actionType_3_0= ruleSignalHandlerTypeEnum )
-            // InternalSignalDSL.g:381:5: lv_actionType_3_0= ruleSignalHandlerTypeEnum
+            // InternalSignalDSL.g:376:4: (lv_executiontype_4_0= ruleSignalExecutionTypeEnum )
+            // InternalSignalDSL.g:377:5: lv_executiontype_4_0= ruleSignalExecutionTypeEnum
             {
             if ( state.backtracking==0 ) {
 
-              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0());
+              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0());
               				
             }
-            pushFollow(FOLLOW_14);
-            lv_actionType_3_0=ruleSignalHandlerTypeEnum();
+            pushFollow(FOLLOW_12);
+            lv_executiontype_4_0=ruleSignalExecutionTypeEnum();
 
             state._fsp--;
             if (state.failed) return current;
@@ -1019,9 +1019,9 @@
               					}
               					set(
               						current,
-              						"actionType",
-              						lv_actionType_3_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandlerTypeEnum");
+              						"executiontype",
+              						lv_executiontype_4_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
               					afterParserOrEnumRuleCall();
               				
             }
@@ -1031,19 +1031,19 @@
 
             }
 
-            // InternalSignalDSL.g:398:3: ( (lv_data_4_0= ruleDataTransfer ) )
-            // InternalSignalDSL.g:399:4: (lv_data_4_0= ruleDataTransfer )
+            // InternalSignalDSL.g:394:3: ( (lv_triggerpolicy_5_0= ruleTriggerPolicy ) )
+            // InternalSignalDSL.g:395:4: (lv_triggerpolicy_5_0= ruleTriggerPolicy )
             {
-            // InternalSignalDSL.g:399:4: (lv_data_4_0= ruleDataTransfer )
-            // InternalSignalDSL.g:400:5: lv_data_4_0= ruleDataTransfer
+            // InternalSignalDSL.g:395:4: (lv_triggerpolicy_5_0= ruleTriggerPolicy )
+            // InternalSignalDSL.g:396:5: lv_triggerpolicy_5_0= ruleTriggerPolicy
             {
             if ( state.backtracking==0 ) {
 
-              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getDataDataTransferParserRuleCall_4_0());
+              					newCompositeNode(grammarAccess.getSignalHandlerAccess().getTriggerpolicyTriggerPolicyParserRuleCall_5_0());
               				
             }
-            pushFollow(FOLLOW_15);
-            lv_data_4_0=ruleDataTransfer();
+            pushFollow(FOLLOW_2);
+            lv_triggerpolicy_5_0=ruleTriggerPolicy();
 
             state._fsp--;
             if (state.failed) return current;
@@ -1054,9 +1054,9 @@
               					}
               					set(
               						current,
-              						"data",
-              						lv_data_4_0,
-              						"org.eclipse.osbp.xtext.signal.SignalDSL.DataTransfer");
+              						"triggerpolicy",
+              						lv_triggerpolicy_5_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.TriggerPolicy");
               					afterParserOrEnumRuleCall();
               				
             }
@@ -1066,88 +1066,6 @@
 
             }
 
-            // InternalSignalDSL.g:417:3: ( (lv_executiontype_5_0= ruleSignalExecutionTypeEnum ) )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
-
-            if ( ((LA6_0>=102 && LA6_0<=103)) ) {
-                alt6=1;
-            }
-            switch (alt6) {
-                case 1 :
-                    // InternalSignalDSL.g:418:4: (lv_executiontype_5_0= ruleSignalExecutionTypeEnum )
-                    {
-                    // InternalSignalDSL.g:418:4: (lv_executiontype_5_0= ruleSignalExecutionTypeEnum )
-                    // InternalSignalDSL.g:419:5: lv_executiontype_5_0= ruleSignalExecutionTypeEnum
-                    {
-                    if ( state.backtracking==0 ) {
-
-                      					newCompositeNode(grammarAccess.getSignalHandlerAccess().getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0());
-                      				
-                    }
-                    pushFollow(FOLLOW_16);
-                    lv_executiontype_5_0=ruleSignalExecutionTypeEnum();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      					if (current==null) {
-                      						current = createModelElementForParent(grammarAccess.getSignalHandlerRule());
-                      					}
-                      					set(
-                      						current,
-                      						"executiontype",
-                      						lv_executiontype_5_0,
-                      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
-                      					afterParserOrEnumRuleCall();
-                      				
-                    }
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-            otherlv_6=(Token)match(input,20,FOLLOW_8); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_6, grammarAccess.getSignalHandlerAccess().getForFileMaskKeyword_6());
-              		
-            }
-            // InternalSignalDSL.g:440:3: ( (lv_filemask_7_0= RULE_STRING ) )
-            // InternalSignalDSL.g:441:4: (lv_filemask_7_0= RULE_STRING )
-            {
-            // InternalSignalDSL.g:441:4: (lv_filemask_7_0= RULE_STRING )
-            // InternalSignalDSL.g:442:5: lv_filemask_7_0= RULE_STRING
-            {
-            lv_filemask_7_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              					newLeafNode(lv_filemask_7_0, grammarAccess.getSignalHandlerAccess().getFilemaskSTRINGTerminalRuleCall_7_0());
-              				
-            }
-            if ( state.backtracking==0 ) {
-
-              					if (current==null) {
-              						current = createModelElement(grammarAccess.getSignalHandlerRule());
-              					}
-              					setWithLastConsumed(
-              						current,
-              						"filemask",
-              						lv_filemask_7_0,
-              						"org.eclipse.xtext.xbase.Xtype.STRING");
-              				
-            }
-
-            }
-
-
-            }
-
 
             }
 
@@ -1172,28 +1090,28 @@
     // $ANTLR end "ruleSignalHandler"
 
 
-    // $ANTLR start "entryRuleDataTransfer"
-    // InternalSignalDSL.g:462:1: entryRuleDataTransfer returns [EObject current=null] : iv_ruleDataTransfer= ruleDataTransfer EOF ;
-    public final EObject entryRuleDataTransfer() throws RecognitionException {
+    // $ANTLR start "entryRuleTriggerPolicy"
+    // InternalSignalDSL.g:417:1: entryRuleTriggerPolicy returns [EObject current=null] : iv_ruleTriggerPolicy= ruleTriggerPolicy EOF ;
+    public final EObject entryRuleTriggerPolicy() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleDataTransfer = null;
+        EObject iv_ruleTriggerPolicy = null;
 
 
         try {
-            // InternalSignalDSL.g:462:53: (iv_ruleDataTransfer= ruleDataTransfer EOF )
-            // InternalSignalDSL.g:463:2: iv_ruleDataTransfer= ruleDataTransfer EOF
+            // InternalSignalDSL.g:417:54: (iv_ruleTriggerPolicy= ruleTriggerPolicy EOF )
+            // InternalSignalDSL.g:418:2: iv_ruleTriggerPolicy= ruleTriggerPolicy EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getDataTransferRule()); 
+               newCompositeNode(grammarAccess.getTriggerPolicyRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleDataTransfer=ruleDataTransfer();
+            iv_ruleTriggerPolicy=ruleTriggerPolicy();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleDataTransfer; 
+               current =iv_ruleTriggerPolicy; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -1209,60 +1127,60 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleDataTransfer"
+    // $ANTLR end "entryRuleTriggerPolicy"
 
 
-    // $ANTLR start "ruleDataTransfer"
-    // InternalSignalDSL.g:469:1: ruleDataTransfer returns [EObject current=null] : (this_SingleTransfer_0= ruleSingleTransfer | this_ListTransfer_1= ruleListTransfer ) ;
-    public final EObject ruleDataTransfer() throws RecognitionException {
+    // $ANTLR start "ruleTriggerPolicy"
+    // InternalSignalDSL.g:424:1: ruleTriggerPolicy returns [EObject current=null] : (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler ) ;
+    public final EObject ruleTriggerPolicy() throws RecognitionException {
         EObject current = null;
 
-        EObject this_SingleTransfer_0 = null;
+        EObject this_TriggerFile_0 = null;
 
-        EObject this_ListTransfer_1 = null;
+        EObject this_SignalScheduler_1 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:475:2: ( (this_SingleTransfer_0= ruleSingleTransfer | this_ListTransfer_1= ruleListTransfer ) )
-            // InternalSignalDSL.g:476:2: (this_SingleTransfer_0= ruleSingleTransfer | this_ListTransfer_1= ruleListTransfer )
+            // InternalSignalDSL.g:430:2: ( (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler ) )
+            // InternalSignalDSL.g:431:2: (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler )
             {
-            // InternalSignalDSL.g:476:2: (this_SingleTransfer_0= ruleSingleTransfer | this_ListTransfer_1= ruleListTransfer )
-            int alt7=2;
-            int LA7_0 = input.LA(1);
+            // InternalSignalDSL.g:431:2: (this_TriggerFile_0= ruleTriggerFile | this_SignalScheduler_1= ruleSignalScheduler )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
 
-            if ( ((LA7_0>=96 && LA7_0<=97)) ) {
-                alt7=1;
+            if ( (LA6_0==19) ) {
+                alt6=1;
             }
-            else if ( (LA7_0==21) ) {
-                alt7=2;
+            else if ( (LA6_0==20) ) {
+                alt6=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 7, 0, input);
+                    new NoViableAltException("", 6, 0, input);
 
                 throw nvae;
             }
-            switch (alt7) {
+            switch (alt6) {
                 case 1 :
-                    // InternalSignalDSL.g:477:3: this_SingleTransfer_0= ruleSingleTransfer
+                    // InternalSignalDSL.g:432:3: this_TriggerFile_0= ruleTriggerFile
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getDataTransferAccess().getSingleTransferParserRuleCall_0());
+                      			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getTriggerFileParserRuleCall_0());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_SingleTransfer_0=ruleSingleTransfer();
+                    this_TriggerFile_0=ruleTriggerFile();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_SingleTransfer_0;
+                      			current = this_TriggerFile_0;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -1270,21 +1188,21 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:486:3: this_ListTransfer_1= ruleListTransfer
+                    // InternalSignalDSL.g:441:3: this_SignalScheduler_1= ruleSignalScheduler
                     {
                     if ( state.backtracking==0 ) {
 
-                      			newCompositeNode(grammarAccess.getDataTransferAccess().getListTransferParserRuleCall_1());
+                      			newCompositeNode(grammarAccess.getTriggerPolicyAccess().getSignalSchedulerParserRuleCall_1());
                       		
                     }
                     pushFollow(FOLLOW_2);
-                    this_ListTransfer_1=ruleListTransfer();
+                    this_SignalScheduler_1=ruleSignalScheduler();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			current = this_ListTransfer_1;
+                      			current = this_SignalScheduler_1;
                       			afterParserOrEnumRuleCall();
                       		
                     }
@@ -1312,31 +1230,31 @@
         }
         return current;
     }
-    // $ANTLR end "ruleDataTransfer"
+    // $ANTLR end "ruleTriggerPolicy"
 
 
-    // $ANTLR start "entryRuleListTransfer"
-    // InternalSignalDSL.g:498:1: entryRuleListTransfer returns [EObject current=null] : iv_ruleListTransfer= ruleListTransfer EOF ;
-    public final EObject entryRuleListTransfer() throws RecognitionException {
+    // $ANTLR start "entryRuleTriggerFile"
+    // InternalSignalDSL.g:453:1: entryRuleTriggerFile returns [EObject current=null] : iv_ruleTriggerFile= ruleTriggerFile EOF ;
+    public final EObject entryRuleTriggerFile() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleListTransfer = null;
+        EObject iv_ruleTriggerFile = null;
 
 
         try {
-            // InternalSignalDSL.g:498:53: (iv_ruleListTransfer= ruleListTransfer EOF )
-            // InternalSignalDSL.g:499:2: iv_ruleListTransfer= ruleListTransfer EOF
+            // InternalSignalDSL.g:453:52: (iv_ruleTriggerFile= ruleTriggerFile EOF )
+            // InternalSignalDSL.g:454:2: iv_ruleTriggerFile= ruleTriggerFile EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getListTransferRule()); 
+               newCompositeNode(grammarAccess.getTriggerFileRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleListTransfer=ruleListTransfer();
+            iv_ruleTriggerFile=ruleTriggerFile();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleListTransfer; 
+               current =iv_ruleTriggerFile; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -1352,113 +1270,56 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleListTransfer"
+    // $ANTLR end "entryRuleTriggerFile"
 
 
-    // $ANTLR start "ruleListTransfer"
-    // InternalSignalDSL.g:505:1: ruleListTransfer returns [EObject current=null] : ( () otherlv_1= 'DataTransfer' otherlv_2= '{' ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* otherlv_4= '}' ) ;
-    public final EObject ruleListTransfer() throws RecognitionException {
+    // $ANTLR start "ruleTriggerFile"
+    // InternalSignalDSL.g:460:1: ruleTriggerFile returns [EObject current=null] : (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleTriggerFile() throws RecognitionException {
         EObject current = null;
 
-        Token otherlv_1=null;
-        Token otherlv_2=null;
-        Token otherlv_4=null;
-        EObject lv_interchanges_3_0 = null;
-
+        Token otherlv_0=null;
+        Token lv_filemask_1_0=null;
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:511:2: ( ( () otherlv_1= 'DataTransfer' otherlv_2= '{' ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* otherlv_4= '}' ) )
-            // InternalSignalDSL.g:512:2: ( () otherlv_1= 'DataTransfer' otherlv_2= '{' ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* otherlv_4= '}' )
+            // InternalSignalDSL.g:466:2: ( (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) ) )
+            // InternalSignalDSL.g:467:2: (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) )
             {
-            // InternalSignalDSL.g:512:2: ( () otherlv_1= 'DataTransfer' otherlv_2= '{' ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* otherlv_4= '}' )
-            // InternalSignalDSL.g:513:3: () otherlv_1= 'DataTransfer' otherlv_2= '{' ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )* otherlv_4= '}'
+            // InternalSignalDSL.g:467:2: (otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:468:3: otherlv_0= 'forFileMask' ( (lv_filemask_1_0= RULE_STRING ) )
             {
-            // InternalSignalDSL.g:513:3: ()
-            // InternalSignalDSL.g:514:4: 
-            {
+            otherlv_0=(Token)match(input,19,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              				current = forceCreateModelElement(
-              					grammarAccess.getListTransferAccess().getListTransferAction_0(),
-              					current);
-              			
-            }
-
-            }
-
-            otherlv_1=(Token)match(input,21,FOLLOW_11); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(otherlv_1, grammarAccess.getListTransferAccess().getDataTransferKeyword_1());
+              			newLeafNode(otherlv_0, grammarAccess.getTriggerFileAccess().getForFileMaskKeyword_0());
               		
             }
-            otherlv_2=(Token)match(input,14,FOLLOW_17); if (state.failed) return current;
+            // InternalSignalDSL.g:472:3: ( (lv_filemask_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:473:4: (lv_filemask_1_0= RULE_STRING )
+            {
+            // InternalSignalDSL.g:473:4: (lv_filemask_1_0= RULE_STRING )
+            // InternalSignalDSL.g:474:5: lv_filemask_1_0= RULE_STRING
+            {
+            lv_filemask_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_2, grammarAccess.getListTransferAccess().getLeftCurlyBracketKeyword_2());
-              		
+              					newLeafNode(lv_filemask_1_0, grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0());
+              				
             }
-            // InternalSignalDSL.g:528:3: ( (lv_interchanges_3_0= ruleSignalDatainterchange ) )*
-            loop8:
-            do {
-                int alt8=2;
-                int LA8_0 = input.LA(1);
-
-                if ( ((LA8_0>=96 && LA8_0<=97)) ) {
-                    alt8=1;
-                }
-
-
-                switch (alt8) {
-            	case 1 :
-            	    // InternalSignalDSL.g:529:4: (lv_interchanges_3_0= ruleSignalDatainterchange )
-            	    {
-            	    // InternalSignalDSL.g:529:4: (lv_interchanges_3_0= ruleSignalDatainterchange )
-            	    // InternalSignalDSL.g:530:5: lv_interchanges_3_0= ruleSignalDatainterchange
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      					newCompositeNode(grammarAccess.getListTransferAccess().getInterchangesSignalDatainterchangeParserRuleCall_3_0());
-            	      				
-            	    }
-            	    pushFollow(FOLLOW_17);
-            	    lv_interchanges_3_0=ruleSignalDatainterchange();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      					if (current==null) {
-            	      						current = createModelElementForParent(grammarAccess.getListTransferRule());
-            	      					}
-            	      					add(
-            	      						current,
-            	      						"interchanges",
-            	      						lv_interchanges_3_0,
-            	      						"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
-            	      					afterParserOrEnumRuleCall();
-            	      				
-            	    }
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop8;
-                }
-            } while (true);
-
-            otherlv_4=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			newLeafNode(otherlv_4, grammarAccess.getListTransferAccess().getRightCurlyBracketKeyword_4());
-              		
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getTriggerFileRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"filemask",
+              						lv_filemask_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
             }
 
             }
@@ -1466,6 +1327,12 @@
 
             }
 
+
+            }
+
+
+            }
+
             if ( state.backtracking==0 ) {
 
               	leaveRule();
@@ -1481,31 +1348,31 @@
         }
         return current;
     }
-    // $ANTLR end "ruleListTransfer"
+    // $ANTLR end "ruleTriggerFile"
 
 
-    // $ANTLR start "entryRuleSingleTransfer"
-    // InternalSignalDSL.g:555:1: entryRuleSingleTransfer returns [EObject current=null] : iv_ruleSingleTransfer= ruleSingleTransfer EOF ;
-    public final EObject entryRuleSingleTransfer() throws RecognitionException {
+    // $ANTLR start "entryRuleSignalScheduler"
+    // InternalSignalDSL.g:494:1: entryRuleSignalScheduler returns [EObject current=null] : iv_ruleSignalScheduler= ruleSignalScheduler EOF ;
+    public final EObject entryRuleSignalScheduler() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleSingleTransfer = null;
+        EObject iv_ruleSignalScheduler = null;
 
 
         try {
-            // InternalSignalDSL.g:555:55: (iv_ruleSingleTransfer= ruleSingleTransfer EOF )
-            // InternalSignalDSL.g:556:2: iv_ruleSingleTransfer= ruleSingleTransfer EOF
+            // InternalSignalDSL.g:494:56: (iv_ruleSignalScheduler= ruleSignalScheduler EOF )
+            // InternalSignalDSL.g:495:2: iv_ruleSignalScheduler= ruleSignalScheduler EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getSingleTransferRule()); 
+               newCompositeNode(grammarAccess.getSignalSchedulerRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleSingleTransfer=ruleSingleTransfer();
+            iv_ruleSignalScheduler=ruleSignalScheduler();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleSingleTransfer; 
+               current =iv_ruleSignalScheduler; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -1521,52 +1388,62 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleSingleTransfer"
+    // $ANTLR end "entryRuleSignalScheduler"
 
 
-    // $ANTLR start "ruleSingleTransfer"
-    // InternalSignalDSL.g:562:1: ruleSingleTransfer returns [EObject current=null] : ( (lv_interchange_0_0= ruleSignalDatainterchange ) ) ;
-    public final EObject ruleSingleTransfer() throws RecognitionException {
+    // $ANTLR start "ruleSignalScheduler"
+    // InternalSignalDSL.g:501:1: ruleSignalScheduler returns [EObject current=null] : (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) ) ;
+    public final EObject ruleSignalScheduler() throws RecognitionException {
         EObject current = null;
 
-        EObject lv_interchange_0_0 = null;
+        Token otherlv_0=null;
+        EObject lv_scheduler_1_0 = null;
 
 
 
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:568:2: ( ( (lv_interchange_0_0= ruleSignalDatainterchange ) ) )
-            // InternalSignalDSL.g:569:2: ( (lv_interchange_0_0= ruleSignalDatainterchange ) )
+            // InternalSignalDSL.g:507:2: ( (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) ) )
+            // InternalSignalDSL.g:508:2: (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) )
             {
-            // InternalSignalDSL.g:569:2: ( (lv_interchange_0_0= ruleSignalDatainterchange ) )
-            // InternalSignalDSL.g:570:3: (lv_interchange_0_0= ruleSignalDatainterchange )
+            // InternalSignalDSL.g:508:2: (otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) ) )
+            // InternalSignalDSL.g:509:3: otherlv_0= 'scheduleFor' ( (lv_scheduler_1_0= ruleScheduler ) )
             {
-            // InternalSignalDSL.g:570:3: (lv_interchange_0_0= ruleSignalDatainterchange )
-            // InternalSignalDSL.g:571:4: lv_interchange_0_0= ruleSignalDatainterchange
+            otherlv_0=(Token)match(input,20,FOLLOW_13); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getSignalSchedulerAccess().getScheduleForKeyword_0());
+              		
+            }
+            // InternalSignalDSL.g:513:3: ( (lv_scheduler_1_0= ruleScheduler ) )
+            // InternalSignalDSL.g:514:4: (lv_scheduler_1_0= ruleScheduler )
+            {
+            // InternalSignalDSL.g:514:4: (lv_scheduler_1_0= ruleScheduler )
+            // InternalSignalDSL.g:515:5: lv_scheduler_1_0= ruleScheduler
             {
             if ( state.backtracking==0 ) {
 
-              				newCompositeNode(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0());
-              			
+              					newCompositeNode(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0());
+              				
             }
             pushFollow(FOLLOW_2);
-            lv_interchange_0_0=ruleSignalDatainterchange();
+            lv_scheduler_1_0=ruleScheduler();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              				if (current==null) {
-              					current = createModelElementForParent(grammarAccess.getSingleTransferRule());
-              				}
-              				set(
-              					current,
-              					"interchange",
-              					lv_interchange_0_0,
-              					"org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
-              				afterParserOrEnumRuleCall();
-              			
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getSignalSchedulerRule());
+              					}
+              					set(
+              						current,
+              						"scheduler",
+              						lv_scheduler_1_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.Scheduler");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1577,6 +1454,9 @@
 
             }
 
+
+            }
+
             if ( state.backtracking==0 ) {
 
               	leaveRule();
@@ -1592,11 +1472,1031 @@
         }
         return current;
     }
-    // $ANTLR end "ruleSingleTransfer"
+    // $ANTLR end "ruleSignalScheduler"
+
+
+    // $ANTLR start "entryRuleScheduler"
+    // InternalSignalDSL.g:536:1: entryRuleScheduler returns [EObject current=null] : iv_ruleScheduler= ruleScheduler EOF ;
+    public final EObject entryRuleScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:536:50: (iv_ruleScheduler= ruleScheduler EOF )
+            // InternalSignalDSL.g:537:2: iv_ruleScheduler= ruleScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getSchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleScheduler=ruleScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleScheduler"
+
+
+    // $ANTLR start "ruleScheduler"
+    // InternalSignalDSL.g:543:1: ruleScheduler returns [EObject current=null] : (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler ) ;
+    public final EObject ruleScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_CronScheduler_0 = null;
+
+        EObject this_HourlyScheduler_1 = null;
+
+        EObject this_DailyScheduler_2 = null;
+
+        EObject this_WeeklyScheduler_3 = null;
+
+        EObject this_MonthlyScheduler_4 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:549:2: ( (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler ) )
+            // InternalSignalDSL.g:550:2: (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler )
+            {
+            // InternalSignalDSL.g:550:2: (this_CronScheduler_0= ruleCronScheduler | this_HourlyScheduler_1= ruleHourlyScheduler | this_DailyScheduler_2= ruleDailyScheduler | this_WeeklyScheduler_3= ruleWeeklyScheduler | this_MonthlyScheduler_4= ruleMonthlyScheduler )
+            int alt7=5;
+            switch ( input.LA(1) ) {
+            case 21:
+                {
+                alt7=1;
+                }
+                break;
+            case 22:
+                {
+                alt7=2;
+                }
+                break;
+            case 23:
+                {
+                alt7=3;
+                }
+                break;
+            case 25:
+                {
+                alt7=4;
+                }
+                break;
+            case 27:
+                {
+                alt7=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // InternalSignalDSL.g:551:3: this_CronScheduler_0= ruleCronScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getSchedulerAccess().getCronSchedulerParserRuleCall_0());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_CronScheduler_0=ruleCronScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_CronScheduler_0;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:560:3: this_HourlyScheduler_1= ruleHourlyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getSchedulerAccess().getHourlySchedulerParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_HourlyScheduler_1=ruleHourlyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_HourlyScheduler_1;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalSignalDSL.g:569:3: this_DailyScheduler_2= ruleDailyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getSchedulerAccess().getDailySchedulerParserRuleCall_2());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_DailyScheduler_2=ruleDailyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_DailyScheduler_2;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalSignalDSL.g:578:3: this_WeeklyScheduler_3= ruleWeeklyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getSchedulerAccess().getWeeklySchedulerParserRuleCall_3());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_WeeklyScheduler_3=ruleWeeklyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_WeeklyScheduler_3;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalSignalDSL.g:587:3: this_MonthlyScheduler_4= ruleMonthlyScheduler
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getSchedulerAccess().getMonthlySchedulerParserRuleCall_4());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_MonthlyScheduler_4=ruleMonthlyScheduler();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_MonthlyScheduler_4;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleScheduler"
+
+
+    // $ANTLR start "entryRuleCronScheduler"
+    // InternalSignalDSL.g:599:1: entryRuleCronScheduler returns [EObject current=null] : iv_ruleCronScheduler= ruleCronScheduler EOF ;
+    public final EObject entryRuleCronScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleCronScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:599:54: (iv_ruleCronScheduler= ruleCronScheduler EOF )
+            // InternalSignalDSL.g:600:2: iv_ruleCronScheduler= ruleCronScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getCronSchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleCronScheduler=ruleCronScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleCronScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleCronScheduler"
+
+
+    // $ANTLR start "ruleCronScheduler"
+    // InternalSignalDSL.g:606:1: ruleCronScheduler returns [EObject current=null] : (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleCronScheduler() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_expression_1_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:612:2: ( (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) ) )
+            // InternalSignalDSL.g:613:2: (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) )
+            {
+            // InternalSignalDSL.g:613:2: (otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:614:3: otherlv_0= 'cron' ( (lv_expression_1_0= RULE_STRING ) )
+            {
+            otherlv_0=(Token)match(input,21,FOLLOW_8); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getCronSchedulerAccess().getCronKeyword_0());
+              		
+            }
+            // InternalSignalDSL.g:618:3: ( (lv_expression_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:619:4: (lv_expression_1_0= RULE_STRING )
+            {
+            // InternalSignalDSL.g:619:4: (lv_expression_1_0= RULE_STRING )
+            // InternalSignalDSL.g:620:5: lv_expression_1_0= RULE_STRING
+            {
+            lv_expression_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_expression_1_0, grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCronSchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"expression",
+              						lv_expression_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCronScheduler"
+
+
+    // $ANTLR start "entryRuleHourlyScheduler"
+    // InternalSignalDSL.g:640:1: entryRuleHourlyScheduler returns [EObject current=null] : iv_ruleHourlyScheduler= ruleHourlyScheduler EOF ;
+    public final EObject entryRuleHourlyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleHourlyScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:640:56: (iv_ruleHourlyScheduler= ruleHourlyScheduler EOF )
+            // InternalSignalDSL.g:641:2: iv_ruleHourlyScheduler= ruleHourlyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getHourlySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleHourlyScheduler=ruleHourlyScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleHourlyScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleHourlyScheduler"
+
+
+    // $ANTLR start "ruleHourlyScheduler"
+    // InternalSignalDSL.g:647:1: ruleHourlyScheduler returns [EObject current=null] : (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) ) ;
+    public final EObject ruleHourlyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_minute_1_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:653:2: ( (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:654:2: (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) )
+            {
+            // InternalSignalDSL.g:654:2: (otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:655:3: otherlv_0= 'hourlyAt' ( (lv_minute_1_0= RULE_INT ) )
+            {
+            otherlv_0=(Token)match(input,22,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getHourlySchedulerAccess().getHourlyAtKeyword_0());
+              		
+            }
+            // InternalSignalDSL.g:659:3: ( (lv_minute_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:660:4: (lv_minute_1_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:660:4: (lv_minute_1_0= RULE_INT )
+            // InternalSignalDSL.g:661:5: lv_minute_1_0= RULE_INT
+            {
+            lv_minute_1_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_minute_1_0, grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getHourlySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"minute",
+              						lv_minute_1_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleHourlyScheduler"
+
+
+    // $ANTLR start "entryRuleDailyScheduler"
+    // InternalSignalDSL.g:681:1: entryRuleDailyScheduler returns [EObject current=null] : iv_ruleDailyScheduler= ruleDailyScheduler EOF ;
+    public final EObject entryRuleDailyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDailyScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:681:55: (iv_ruleDailyScheduler= ruleDailyScheduler EOF )
+            // InternalSignalDSL.g:682:2: iv_ruleDailyScheduler= ruleDailyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDailySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleDailyScheduler=ruleDailyScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDailyScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDailyScheduler"
+
+
+    // $ANTLR start "ruleDailyScheduler"
+    // InternalSignalDSL.g:688:1: ruleDailyScheduler returns [EObject current=null] : (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) ) ;
+    public final EObject ruleDailyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_hour_1_0=null;
+        Token otherlv_2=null;
+        Token lv_minute_3_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:694:2: ( (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:695:2: (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) )
+            {
+            // InternalSignalDSL.g:695:2: (otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:696:3: otherlv_0= 'dailyAt' ( (lv_hour_1_0= RULE_INT ) ) otherlv_2= ':' ( (lv_minute_3_0= RULE_INT ) )
+            {
+            otherlv_0=(Token)match(input,23,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getDailySchedulerAccess().getDailyAtKeyword_0());
+              		
+            }
+            // InternalSignalDSL.g:700:3: ( (lv_hour_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:701:4: (lv_hour_1_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:701:4: (lv_hour_1_0= RULE_INT )
+            // InternalSignalDSL.g:702:5: lv_hour_1_0= RULE_INT
+            {
+            lv_hour_1_0=(Token)match(input,RULE_INT,FOLLOW_15); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_hour_1_0, grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getDailySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"hour",
+              						lv_hour_1_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getDailySchedulerAccess().getColonKeyword_2());
+              		
+            }
+            // InternalSignalDSL.g:722:3: ( (lv_minute_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:723:4: (lv_minute_3_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:723:4: (lv_minute_3_0= RULE_INT )
+            // InternalSignalDSL.g:724:5: lv_minute_3_0= RULE_INT
+            {
+            lv_minute_3_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_minute_3_0, grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getDailySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"minute",
+              						lv_minute_3_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDailyScheduler"
+
+
+    // $ANTLR start "entryRuleWeeklyScheduler"
+    // InternalSignalDSL.g:744:1: entryRuleWeeklyScheduler returns [EObject current=null] : iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF ;
+    public final EObject entryRuleWeeklyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleWeeklyScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:744:56: (iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF )
+            // InternalSignalDSL.g:745:2: iv_ruleWeeklyScheduler= ruleWeeklyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getWeeklySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleWeeklyScheduler=ruleWeeklyScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleWeeklyScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleWeeklyScheduler"
+
+
+    // $ANTLR start "ruleWeeklyScheduler"
+    // InternalSignalDSL.g:751:1: ruleWeeklyScheduler returns [EObject current=null] : (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) ;
+    public final EObject ruleWeeklyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_hour_3_0=null;
+        Token otherlv_4=null;
+        Token lv_minute_5_0=null;
+        Enumerator lv_dayofweek_1_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:757:2: ( (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:758:2: (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            {
+            // InternalSignalDSL.g:758:2: (otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:759:3: otherlv_0= 'weeklyOn' ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) )
+            {
+            otherlv_0=(Token)match(input,25,FOLLOW_16); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getWeeklySchedulerAccess().getWeeklyOnKeyword_0());
+              		
+            }
+            // InternalSignalDSL.g:763:3: ( (lv_dayofweek_1_0= ruleDayOfWeekEnum ) )
+            // InternalSignalDSL.g:764:4: (lv_dayofweek_1_0= ruleDayOfWeekEnum )
+            {
+            // InternalSignalDSL.g:764:4: (lv_dayofweek_1_0= ruleDayOfWeekEnum )
+            // InternalSignalDSL.g:765:5: lv_dayofweek_1_0= ruleDayOfWeekEnum
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_17);
+            lv_dayofweek_1_0=ruleDayOfWeekEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getWeeklySchedulerRule());
+              					}
+              					set(
+              						current,
+              						"dayofweek",
+              						lv_dayofweek_1_0,
+              						"org.eclipse.osbp.xtext.signal.SignalDSL.DayOfWeekEnum");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getWeeklySchedulerAccess().getAtKeyword_2());
+              		
+            }
+            // InternalSignalDSL.g:786:3: ( (lv_hour_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:787:4: (lv_hour_3_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:787:4: (lv_hour_3_0= RULE_INT )
+            // InternalSignalDSL.g:788:5: lv_hour_3_0= RULE_INT
+            {
+            lv_hour_3_0=(Token)match(input,RULE_INT,FOLLOW_15); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_hour_3_0, grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWeeklySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"hour",
+              						lv_hour_3_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getWeeklySchedulerAccess().getColonKeyword_4());
+              		
+            }
+            // InternalSignalDSL.g:808:3: ( (lv_minute_5_0= RULE_INT ) )
+            // InternalSignalDSL.g:809:4: (lv_minute_5_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:809:4: (lv_minute_5_0= RULE_INT )
+            // InternalSignalDSL.g:810:5: lv_minute_5_0= RULE_INT
+            {
+            lv_minute_5_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_minute_5_0, grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getWeeklySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"minute",
+              						lv_minute_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleWeeklyScheduler"
+
+
+    // $ANTLR start "entryRuleMonthlyScheduler"
+    // InternalSignalDSL.g:830:1: entryRuleMonthlyScheduler returns [EObject current=null] : iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF ;
+    public final EObject entryRuleMonthlyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleMonthlyScheduler = null;
+
+
+        try {
+            // InternalSignalDSL.g:830:57: (iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF )
+            // InternalSignalDSL.g:831:2: iv_ruleMonthlyScheduler= ruleMonthlyScheduler EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getMonthlySchedulerRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleMonthlyScheduler=ruleMonthlyScheduler();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleMonthlyScheduler; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleMonthlyScheduler"
+
+
+    // $ANTLR start "ruleMonthlyScheduler"
+    // InternalSignalDSL.g:837:1: ruleMonthlyScheduler returns [EObject current=null] : (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) ;
+    public final EObject ruleMonthlyScheduler() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_dayofmonth_1_0=null;
+        Token otherlv_2=null;
+        Token lv_hour_3_0=null;
+        Token otherlv_4=null;
+        Token lv_minute_5_0=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:843:2: ( (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) ) )
+            // InternalSignalDSL.g:844:2: (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            {
+            // InternalSignalDSL.g:844:2: (otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) ) )
+            // InternalSignalDSL.g:845:3: otherlv_0= 'monthlyOn' ( (lv_dayofmonth_1_0= RULE_INT ) ) otherlv_2= 'at' ( (lv_hour_3_0= RULE_INT ) ) otherlv_4= ':' ( (lv_minute_5_0= RULE_INT ) )
+            {
+            otherlv_0=(Token)match(input,27,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getMonthlySchedulerAccess().getMonthlyOnKeyword_0());
+              		
+            }
+            // InternalSignalDSL.g:849:3: ( (lv_dayofmonth_1_0= RULE_INT ) )
+            // InternalSignalDSL.g:850:4: (lv_dayofmonth_1_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:850:4: (lv_dayofmonth_1_0= RULE_INT )
+            // InternalSignalDSL.g:851:5: lv_dayofmonth_1_0= RULE_INT
+            {
+            lv_dayofmonth_1_0=(Token)match(input,RULE_INT,FOLLOW_17); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_dayofmonth_1_0, grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getMonthlySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"dayofmonth",
+              						lv_dayofmonth_1_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getMonthlySchedulerAccess().getAtKeyword_2());
+              		
+            }
+            // InternalSignalDSL.g:871:3: ( (lv_hour_3_0= RULE_INT ) )
+            // InternalSignalDSL.g:872:4: (lv_hour_3_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:872:4: (lv_hour_3_0= RULE_INT )
+            // InternalSignalDSL.g:873:5: lv_hour_3_0= RULE_INT
+            {
+            lv_hour_3_0=(Token)match(input,RULE_INT,FOLLOW_15); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_hour_3_0, grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getMonthlySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"hour",
+              						lv_hour_3_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getMonthlySchedulerAccess().getColonKeyword_4());
+              		
+            }
+            // InternalSignalDSL.g:893:3: ( (lv_minute_5_0= RULE_INT ) )
+            // InternalSignalDSL.g:894:4: (lv_minute_5_0= RULE_INT )
+            {
+            // InternalSignalDSL.g:894:4: (lv_minute_5_0= RULE_INT )
+            // InternalSignalDSL.g:895:5: lv_minute_5_0= RULE_INT
+            {
+            lv_minute_5_0=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(lv_minute_5_0, grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getMonthlySchedulerRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"minute",
+              						lv_minute_5_0,
+              						"org.eclipse.xtext.xbase.Xbase.INT");
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleMonthlyScheduler"
 
 
     // $ANTLR start "entryRuleSignalDatainterchange"
-    // InternalSignalDSL.g:591:1: entryRuleSignalDatainterchange returns [EObject current=null] : iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF ;
+    // InternalSignalDSL.g:915:1: entryRuleSignalDatainterchange returns [EObject current=null] : iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF ;
     public final EObject entryRuleSignalDatainterchange() throws RecognitionException {
         EObject current = null;
 
@@ -1604,8 +2504,8 @@
 
 
         try {
-            // InternalSignalDSL.g:591:62: (iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF )
-            // InternalSignalDSL.g:592:2: iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF
+            // InternalSignalDSL.g:915:62: (iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF )
+            // InternalSignalDSL.g:916:2: iv_ruleSignalDatainterchange= ruleSignalDatainterchange EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSignalDatainterchangeRule()); 
@@ -1636,7 +2536,7 @@
 
 
     // $ANTLR start "ruleSignalDatainterchange"
-    // InternalSignalDSL.g:598:1: ruleSignalDatainterchange returns [EObject current=null] : ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) ) ;
+    // InternalSignalDSL.g:922:1: ruleSignalDatainterchange returns [EObject current=null] : ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) ) ;
     public final EObject ruleSignalDatainterchange() throws RecognitionException {
         EObject current = null;
 
@@ -1650,17 +2550,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:604:2: ( ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:605:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:928:2: ( ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) ) )
+            // InternalSignalDSL.g:929:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) )
             {
-            // InternalSignalDSL.g:605:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:606:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) )
+            // InternalSignalDSL.g:929:2: ( ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:930:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= 'fileName' ( (lv_fileName_3_0= RULE_STRING ) )
             {
-            // InternalSignalDSL.g:606:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) )
-            // InternalSignalDSL.g:607:4: (lv_dataAction_0_0= ruleSignalActionEnum )
+            // InternalSignalDSL.g:930:3: ( (lv_dataAction_0_0= ruleSignalActionEnum ) )
+            // InternalSignalDSL.g:931:4: (lv_dataAction_0_0= ruleSignalActionEnum )
             {
-            // InternalSignalDSL.g:607:4: (lv_dataAction_0_0= ruleSignalActionEnum )
-            // InternalSignalDSL.g:608:5: lv_dataAction_0_0= ruleSignalActionEnum
+            // InternalSignalDSL.g:931:4: (lv_dataAction_0_0= ruleSignalActionEnum )
+            // InternalSignalDSL.g:932:5: lv_dataAction_0_0= ruleSignalActionEnum
             {
             if ( state.backtracking==0 ) {
 
@@ -1691,11 +2591,11 @@
 
             }
 
-            // InternalSignalDSL.g:625:3: ( (otherlv_1= RULE_ID ) )
-            // InternalSignalDSL.g:626:4: (otherlv_1= RULE_ID )
+            // InternalSignalDSL.g:949:3: ( (otherlv_1= RULE_ID ) )
+            // InternalSignalDSL.g:950:4: (otherlv_1= RULE_ID )
             {
-            // InternalSignalDSL.g:626:4: (otherlv_1= RULE_ID )
-            // InternalSignalDSL.g:627:5: otherlv_1= RULE_ID
+            // InternalSignalDSL.g:950:4: (otherlv_1= RULE_ID )
+            // InternalSignalDSL.g:951:5: otherlv_1= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
@@ -1716,17 +2616,17 @@
 
             }
 
-            otherlv_2=(Token)match(input,22,FOLLOW_8); if (state.failed) return current;
+            otherlv_2=(Token)match(input,28,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getSignalDatainterchangeAccess().getFileNameKeyword_2());
               		
             }
-            // InternalSignalDSL.g:642:3: ( (lv_fileName_3_0= RULE_STRING ) )
-            // InternalSignalDSL.g:643:4: (lv_fileName_3_0= RULE_STRING )
+            // InternalSignalDSL.g:966:3: ( (lv_fileName_3_0= RULE_STRING ) )
+            // InternalSignalDSL.g:967:4: (lv_fileName_3_0= RULE_STRING )
             {
-            // InternalSignalDSL.g:643:4: (lv_fileName_3_0= RULE_STRING )
-            // InternalSignalDSL.g:644:5: lv_fileName_3_0= RULE_STRING
+            // InternalSignalDSL.g:967:4: (lv_fileName_3_0= RULE_STRING )
+            // InternalSignalDSL.g:968:5: lv_fileName_3_0= RULE_STRING
             {
             lv_fileName_3_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -1777,7 +2677,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // InternalSignalDSL.g:664:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalSignalDSL.g:988:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -1785,8 +2685,8 @@
 
 
         try {
-            // InternalSignalDSL.g:664:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // InternalSignalDSL.g:665:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalSignalDSL.g:988:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalSignalDSL.g:989:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
@@ -1817,7 +2717,7 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // InternalSignalDSL.g:671:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalSignalDSL.g:995:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -1827,8 +2727,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:677:2: (this_ID_0= RULE_ID )
-            // InternalSignalDSL.g:678:2: this_ID_0= RULE_ID
+            // InternalSignalDSL.g:1001:2: (this_ID_0= RULE_ID )
+            // InternalSignalDSL.g:1002:2: this_ID_0= RULE_ID
             {
             this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -1863,7 +2763,7 @@
 
 
     // $ANTLR start "entryRuleXImportDeclaration"
-    // InternalSignalDSL.g:688:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    // InternalSignalDSL.g:1012:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
     public final EObject entryRuleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -1871,8 +2771,8 @@
 
 
         try {
-            // InternalSignalDSL.g:688:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
-            // InternalSignalDSL.g:689:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
+            // InternalSignalDSL.g:1012:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalSignalDSL.g:1013:2: iv_ruleXImportDeclaration= ruleXImportDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportDeclarationRule()); 
@@ -1903,7 +2803,7 @@
 
 
     // $ANTLR start "ruleXImportDeclaration"
-    // InternalSignalDSL.g:695:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
+    // InternalSignalDSL.g:1019:1: ruleXImportDeclaration returns [EObject current=null] : ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) ;
     public final EObject ruleXImportDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -1924,14 +2824,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:701:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
-            // InternalSignalDSL.g:702:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalSignalDSL.g:1025:2: ( ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? ) )
+            // InternalSignalDSL.g:1026:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
             {
-            // InternalSignalDSL.g:702:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
-            // InternalSignalDSL.g:703:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
+            // InternalSignalDSL.g:1026:2: ( () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )? )
+            // InternalSignalDSL.g:1027:3: () otherlv_1= 'import' ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) ) (otherlv_11= ';' )?
             {
-            // InternalSignalDSL.g:703:3: ()
-            // InternalSignalDSL.g:704:4: 
+            // InternalSignalDSL.g:1027:3: ()
+            // InternalSignalDSL.g:1028:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -1943,29 +2843,29 @@
 
             }
 
-            otherlv_1=(Token)match(input,23,FOLLOW_19); if (state.failed) return current;
+            otherlv_1=(Token)match(input,29,FOLLOW_19); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
               		
             }
-            // InternalSignalDSL.g:714:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
-            int alt11=4;
-            alt11 = dfa11.predict(input);
-            switch (alt11) {
+            // InternalSignalDSL.g:1038:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )
+            int alt10=4;
+            alt10 = dfa10.predict(input);
+            switch (alt10) {
                 case 1 :
-                    // InternalSignalDSL.g:715:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:1039:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
                     {
-                    // InternalSignalDSL.g:715:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
-                    // InternalSignalDSL.g:716:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    // InternalSignalDSL.g:1039:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:1040:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
                     {
-                    // InternalSignalDSL.g:716:5: ( (lv_static_2_0= 'static' ) )
-                    // InternalSignalDSL.g:717:6: (lv_static_2_0= 'static' )
+                    // InternalSignalDSL.g:1040:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalSignalDSL.g:1041:6: (lv_static_2_0= 'static' )
                     {
-                    // InternalSignalDSL.g:717:6: (lv_static_2_0= 'static' )
-                    // InternalSignalDSL.g:718:7: lv_static_2_0= 'static'
+                    // InternalSignalDSL.g:1041:6: (lv_static_2_0= 'static' )
+                    // InternalSignalDSL.g:1042:7: lv_static_2_0= 'static'
                     {
-                    lv_static_2_0=(Token)match(input,24,FOLLOW_20); if (state.failed) return current;
+                    lv_static_2_0=(Token)match(input,30,FOLLOW_20); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
@@ -1985,21 +2885,21 @@
 
                     }
 
-                    // InternalSignalDSL.g:730:5: ( (lv_extension_3_0= 'extension' ) )?
-                    int alt9=2;
-                    int LA9_0 = input.LA(1);
+                    // InternalSignalDSL.g:1054:5: ( (lv_extension_3_0= 'extension' ) )?
+                    int alt8=2;
+                    int LA8_0 = input.LA(1);
 
-                    if ( (LA9_0==25) ) {
-                        alt9=1;
+                    if ( (LA8_0==31) ) {
+                        alt8=1;
                     }
-                    switch (alt9) {
+                    switch (alt8) {
                         case 1 :
-                            // InternalSignalDSL.g:731:6: (lv_extension_3_0= 'extension' )
+                            // InternalSignalDSL.g:1055:6: (lv_extension_3_0= 'extension' )
                             {
-                            // InternalSignalDSL.g:731:6: (lv_extension_3_0= 'extension' )
-                            // InternalSignalDSL.g:732:7: lv_extension_3_0= 'extension'
+                            // InternalSignalDSL.g:1055:6: (lv_extension_3_0= 'extension' )
+                            // InternalSignalDSL.g:1056:7: lv_extension_3_0= 'extension'
                             {
-                            lv_extension_3_0=(Token)match(input,25,FOLLOW_20); if (state.failed) return current;
+                            lv_extension_3_0=(Token)match(input,31,FOLLOW_20); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(lv_extension_3_0, grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0());
@@ -2022,11 +2922,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:744:5: ( ( ruleQualifiedNameInStaticImport ) )
-                    // InternalSignalDSL.g:745:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalSignalDSL.g:1068:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalSignalDSL.g:1069:6: ( ruleQualifiedNameInStaticImport )
                     {
-                    // InternalSignalDSL.g:745:6: ( ruleQualifiedNameInStaticImport )
-                    // InternalSignalDSL.g:746:7: ruleQualifiedNameInStaticImport
+                    // InternalSignalDSL.g:1069:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalSignalDSL.g:1070:7: ruleQualifiedNameInStaticImport
                     {
                     if ( state.backtracking==0 ) {
 
@@ -2056,34 +2956,34 @@
 
                     }
 
-                    // InternalSignalDSL.g:760:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
-                    int alt10=2;
-                    int LA10_0 = input.LA(1);
+                    // InternalSignalDSL.g:1084:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
 
-                    if ( (LA10_0==26) ) {
-                        alt10=1;
+                    if ( (LA9_0==32) ) {
+                        alt9=1;
                     }
-                    else if ( (LA10_0==RULE_ID) ) {
-                        alt10=2;
+                    else if ( (LA9_0==RULE_ID) ) {
+                        alt9=2;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 10, 0, input);
+                            new NoViableAltException("", 9, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt10) {
+                    switch (alt9) {
                         case 1 :
-                            // InternalSignalDSL.g:761:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalSignalDSL.g:1085:6: ( (lv_wildcard_5_0= '*' ) )
                             {
-                            // InternalSignalDSL.g:761:6: ( (lv_wildcard_5_0= '*' ) )
-                            // InternalSignalDSL.g:762:7: (lv_wildcard_5_0= '*' )
+                            // InternalSignalDSL.g:1085:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalSignalDSL.g:1086:7: (lv_wildcard_5_0= '*' )
                             {
-                            // InternalSignalDSL.g:762:7: (lv_wildcard_5_0= '*' )
-                            // InternalSignalDSL.g:763:8: lv_wildcard_5_0= '*'
+                            // InternalSignalDSL.g:1086:7: (lv_wildcard_5_0= '*' )
+                            // InternalSignalDSL.g:1087:8: lv_wildcard_5_0= '*'
                             {
-                            lv_wildcard_5_0=(Token)match(input,26,FOLLOW_22); if (state.failed) return current;
+                            lv_wildcard_5_0=(Token)match(input,32,FOLLOW_22); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               								newLeafNode(lv_wildcard_5_0, grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0());
@@ -2107,13 +3007,13 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:776:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalSignalDSL.g:1100:6: ( (lv_memberName_6_0= ruleValidID ) )
                             {
-                            // InternalSignalDSL.g:776:6: ( (lv_memberName_6_0= ruleValidID ) )
-                            // InternalSignalDSL.g:777:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalSignalDSL.g:1100:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalSignalDSL.g:1101:7: (lv_memberName_6_0= ruleValidID )
                             {
-                            // InternalSignalDSL.g:777:7: (lv_memberName_6_0= ruleValidID )
-                            // InternalSignalDSL.g:778:8: lv_memberName_6_0= ruleValidID
+                            // InternalSignalDSL.g:1101:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalSignalDSL.g:1102:8: lv_memberName_6_0= ruleValidID
                             {
                             if ( state.backtracking==0 ) {
 
@@ -2157,13 +3057,13 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:798:4: ( ( ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1122:4: ( ( ruleQualifiedName ) )
                     {
-                    // InternalSignalDSL.g:798:4: ( ( ruleQualifiedName ) )
-                    // InternalSignalDSL.g:799:5: ( ruleQualifiedName )
+                    // InternalSignalDSL.g:1122:4: ( ( ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1123:5: ( ruleQualifiedName )
                     {
-                    // InternalSignalDSL.g:799:5: ( ruleQualifiedName )
-                    // InternalSignalDSL.g:800:6: ruleQualifiedName
+                    // InternalSignalDSL.g:1123:5: ( ruleQualifiedName )
+                    // InternalSignalDSL.g:1124:6: ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -2197,13 +3097,13 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:815:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalSignalDSL.g:1139:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
                     {
-                    // InternalSignalDSL.g:815:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
-                    // InternalSignalDSL.g:816:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalSignalDSL.g:1139:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalSignalDSL.g:1140:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
                     {
-                    // InternalSignalDSL.g:816:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
-                    // InternalSignalDSL.g:817:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    // InternalSignalDSL.g:1140:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalSignalDSL.g:1141:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
                     {
                     if ( state.backtracking==0 ) {
 
@@ -2238,18 +3138,18 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:835:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalSignalDSL.g:1159:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
                     {
-                    // InternalSignalDSL.g:835:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
-                    // InternalSignalDSL.g:836:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1159:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalSignalDSL.g:1160:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
                     {
-                    // InternalSignalDSL.g:836:5: ( (lv_fqnImport_9_0= 'ns' ) )
-                    // InternalSignalDSL.g:837:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalSignalDSL.g:1160:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalSignalDSL.g:1161:6: (lv_fqnImport_9_0= 'ns' )
                     {
-                    // InternalSignalDSL.g:837:6: (lv_fqnImport_9_0= 'ns' )
-                    // InternalSignalDSL.g:838:7: lv_fqnImport_9_0= 'ns'
+                    // InternalSignalDSL.g:1161:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalSignalDSL.g:1162:7: lv_fqnImport_9_0= 'ns'
                     {
-                    lv_fqnImport_9_0=(Token)match(input,27,FOLLOW_4); if (state.failed) return current;
+                    lv_fqnImport_9_0=(Token)match(input,33,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_fqnImport_9_0, grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0());
@@ -2269,11 +3169,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:850:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
-                    // InternalSignalDSL.g:851:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalSignalDSL.g:1174:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalSignalDSL.g:1175:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
                     {
-                    // InternalSignalDSL.g:851:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
-                    // InternalSignalDSL.g:852:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    // InternalSignalDSL.g:1175:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalSignalDSL.g:1176:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
                     {
                     if ( state.backtracking==0 ) {
 
@@ -2313,18 +3213,18 @@
 
             }
 
-            // InternalSignalDSL.g:871:3: (otherlv_11= ';' )?
-            int alt12=2;
-            int LA12_0 = input.LA(1);
+            // InternalSignalDSL.g:1195:3: (otherlv_11= ';' )?
+            int alt11=2;
+            int LA11_0 = input.LA(1);
 
-            if ( (LA12_0==28) ) {
-                alt12=1;
+            if ( (LA11_0==34) ) {
+                alt11=1;
             }
-            switch (alt12) {
+            switch (alt11) {
                 case 1 :
-                    // InternalSignalDSL.g:872:4: otherlv_11= ';'
+                    // InternalSignalDSL.g:1196:4: otherlv_11= ';'
                     {
-                    otherlv_11=(Token)match(input,28,FOLLOW_2); if (state.failed) return current;
+                    otherlv_11=(Token)match(input,34,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
@@ -2361,7 +3261,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotation"
-    // InternalSignalDSL.g:881:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalSignalDSL.g:1205:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -2369,8 +3269,8 @@
 
 
         try {
-            // InternalSignalDSL.g:881:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // InternalSignalDSL.g:882:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalSignalDSL.g:1205:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalSignalDSL.g:1206:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
@@ -2401,7 +3301,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // InternalSignalDSL.g:888:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
+    // InternalSignalDSL.g:1212:1: ruleXAnnotation returns [EObject current=null] : ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) ;
     public final EObject ruleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -2420,14 +3320,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:894:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
-            // InternalSignalDSL.g:895:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalSignalDSL.g:1218:2: ( ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? ) )
+            // InternalSignalDSL.g:1219:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
             {
-            // InternalSignalDSL.g:895:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
-            // InternalSignalDSL.g:896:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            // InternalSignalDSL.g:1219:2: ( () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )? )
+            // InternalSignalDSL.g:1220:3: () otherlv_1= '@' ( ( ruleQualifiedName ) ) ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
             {
-            // InternalSignalDSL.g:896:3: ()
-            // InternalSignalDSL.g:897:4: 
+            // InternalSignalDSL.g:1220:3: ()
+            // InternalSignalDSL.g:1221:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -2439,17 +3339,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,29,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,35,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1());
               		
             }
-            // InternalSignalDSL.g:907:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:908:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:1231:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:1232:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:908:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:909:5: ruleQualifiedName
+            // InternalSignalDSL.g:1232:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:1233:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -2479,21 +3379,21 @@
 
             }
 
-            // InternalSignalDSL.g:923:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
-            int alt15=2;
-            int LA15_0 = input.LA(1);
+            // InternalSignalDSL.g:1247:3: ( ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')' )?
+            int alt14=2;
+            int LA14_0 = input.LA(1);
 
-            if ( (LA15_0==30) && (synpred1_InternalSignalDSL())) {
-                alt15=1;
+            if ( (LA14_0==36) && (synpred1_InternalSignalDSL())) {
+                alt14=1;
             }
-            switch (alt15) {
+            switch (alt14) {
                 case 1 :
-                    // InternalSignalDSL.g:924:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalSignalDSL.g:1248:4: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
                     {
-                    // InternalSignalDSL.g:924:4: ( ( '(' )=>otherlv_3= '(' )
-                    // InternalSignalDSL.g:925:5: ( '(' )=>otherlv_3= '('
+                    // InternalSignalDSL.g:1248:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalSignalDSL.g:1249:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,30,FOLLOW_24); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,36,FOLLOW_24); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0());
@@ -2502,21 +3402,21 @@
 
                     }
 
-                    // InternalSignalDSL.g:931:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
-                    int alt14=3;
-                    alt14 = dfa14.predict(input);
-                    switch (alt14) {
+                    // InternalSignalDSL.g:1255:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt13=3;
+                    alt13 = dfa13.predict(input);
+                    switch (alt13) {
                         case 1 :
-                            // InternalSignalDSL.g:932:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalSignalDSL.g:1256:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // InternalSignalDSL.g:932:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // InternalSignalDSL.g:933:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalSignalDSL.g:1256:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalSignalDSL.g:1257:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // InternalSignalDSL.g:933:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // InternalSignalDSL.g:934:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalSignalDSL.g:1257:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalSignalDSL.g:1258:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // InternalSignalDSL.g:943:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // InternalSignalDSL.g:944:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalSignalDSL.g:1267:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalSignalDSL.g:1268:8: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
                             {
                             if ( state.backtracking==0 ) {
 
@@ -2547,32 +3447,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:961:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
-                            loop13:
+                            // InternalSignalDSL.g:1285:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop12:
                             do {
-                                int alt13=2;
-                                int LA13_0 = input.LA(1);
+                                int alt12=2;
+                                int LA12_0 = input.LA(1);
 
-                                if ( (LA13_0==31) ) {
-                                    alt13=1;
+                                if ( (LA12_0==37) ) {
+                                    alt12=1;
                                 }
 
 
-                                switch (alt13) {
+                                switch (alt12) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:962:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalSignalDSL.g:1286:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_5=(Token)match(input,31,FOLLOW_4); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,37,FOLLOW_4); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:966:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // InternalSignalDSL.g:967:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalSignalDSL.g:1290:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalSignalDSL.g:1291:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // InternalSignalDSL.g:976:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // InternalSignalDSL.g:977:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    // InternalSignalDSL.g:1300:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalSignalDSL.g:1301:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -2608,7 +3508,7 @@
                             	    break;
 
                             	default :
-                            	    break loop13;
+                            	    break loop12;
                                 }
                             } while (true);
 
@@ -2619,13 +3519,13 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:997:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalSignalDSL.g:1321:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
                             {
-                            // InternalSignalDSL.g:997:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // InternalSignalDSL.g:998:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalSignalDSL.g:1321:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalSignalDSL.g:1322:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
                             {
-                            // InternalSignalDSL.g:998:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // InternalSignalDSL.g:999:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            // InternalSignalDSL.g:1322:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalSignalDSL.g:1323:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
                             {
                             if ( state.backtracking==0 ) {
 
@@ -2662,7 +3562,7 @@
 
                     }
 
-                    otherlv_8=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
@@ -2699,7 +3599,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:1026:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    // InternalSignalDSL.g:1350:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
     public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -2707,8 +3607,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1026:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // InternalSignalDSL.g:1027:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            // InternalSignalDSL.g:1350:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalSignalDSL.g:1351:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
@@ -2739,7 +3639,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // InternalSignalDSL.g:1033:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    // InternalSignalDSL.g:1357:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
     public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -2751,23 +3651,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1039:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // InternalSignalDSL.g:1040:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalSignalDSL.g:1363:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalSignalDSL.g:1364:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
             {
-            // InternalSignalDSL.g:1040:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // InternalSignalDSL.g:1041:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalSignalDSL.g:1364:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalSignalDSL.g:1365:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
             {
-            // InternalSignalDSL.g:1041:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // InternalSignalDSL.g:1042:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalSignalDSL.g:1365:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalSignalDSL.g:1366:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
             {
-            // InternalSignalDSL.g:1051:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // InternalSignalDSL.g:1052:5: ( ( ruleValidID ) ) otherlv_1= '='
+            // InternalSignalDSL.g:1375:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalSignalDSL.g:1376:5: ( ( ruleValidID ) ) otherlv_1= '='
             {
-            // InternalSignalDSL.g:1052:5: ( ( ruleValidID ) )
-            // InternalSignalDSL.g:1053:6: ( ruleValidID )
+            // InternalSignalDSL.g:1376:5: ( ( ruleValidID ) )
+            // InternalSignalDSL.g:1377:6: ( ruleValidID )
             {
-            // InternalSignalDSL.g:1053:6: ( ruleValidID )
-            // InternalSignalDSL.g:1054:7: ruleValidID
+            // InternalSignalDSL.g:1377:6: ( ruleValidID )
+            // InternalSignalDSL.g:1378:7: ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -2797,7 +3697,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,33,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,39,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
@@ -2809,11 +3709,11 @@
 
             }
 
-            // InternalSignalDSL.g:1074:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // InternalSignalDSL.g:1075:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:1398:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalSignalDSL.g:1399:4: (lv_value_2_0= ruleXAnnotationElementValue )
             {
-            // InternalSignalDSL.g:1075:4: (lv_value_2_0= ruleXAnnotationElementValue )
-            // InternalSignalDSL.g:1076:5: lv_value_2_0= ruleXAnnotationElementValue
+            // InternalSignalDSL.g:1399:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalSignalDSL.g:1400:5: lv_value_2_0= ruleXAnnotationElementValue
             {
             if ( state.backtracking==0 ) {
 
@@ -2869,7 +3769,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:1097:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalSignalDSL.g:1421:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
     public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -2877,8 +3777,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1097:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // InternalSignalDSL.g:1098:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            // InternalSignalDSL.g:1421:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalSignalDSL.g:1422:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
@@ -2909,7 +3809,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // InternalSignalDSL.g:1104:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
+    // InternalSignalDSL.g:1428:1: ruleXAnnotationElementValueOrCommaList returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) ;
     public final EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -2931,27 +3831,27 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1110:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
-            // InternalSignalDSL.g:1111:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            // InternalSignalDSL.g:1434:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) ) )
+            // InternalSignalDSL.g:1435:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
             {
-            // InternalSignalDSL.g:1111:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
-            int alt20=2;
-            alt20 = dfa20.predict(input);
-            switch (alt20) {
+            // InternalSignalDSL.g:1435:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )
+            int alt19=2;
+            alt19 = dfa19.predict(input);
+            switch (alt19) {
                 case 1 :
-                    // InternalSignalDSL.g:1112:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1436:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalSignalDSL.g:1112:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalSignalDSL.g:1113:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalSignalDSL.g:1436:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1437:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalSignalDSL.g:1113:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalSignalDSL.g:1114:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1437:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalSignalDSL.g:1438:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalSignalDSL.g:1121:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalSignalDSL.g:1122:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalSignalDSL.g:1445:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1446:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalSignalDSL.g:1122:6: ()
-                    // InternalSignalDSL.g:1123:7: 
+                    // InternalSignalDSL.g:1446:6: ()
+                    // InternalSignalDSL.g:1447:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -2963,13 +3863,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,34,FOLLOW_29); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,40,FOLLOW_29); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,35,FOLLOW_30); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,41,FOLLOW_30); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -2981,22 +3881,22 @@
 
                     }
 
-                    // InternalSignalDSL.g:1139:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt17=2;
-                    int LA17_0 = input.LA(1);
+                    // InternalSignalDSL.g:1463:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
 
-                    if ( ((LA17_0>=RULE_STRING && LA17_0<=RULE_DECIMAL)||LA17_0==14||LA17_0==18||(LA17_0>=23 && LA17_0<=25)||(LA17_0>=29 && LA17_0<=30)||(LA17_0>=34 && LA17_0<=35)||LA17_0==42||(LA17_0>=58 && LA17_0<=59)||LA17_0==63||LA17_0==71||LA17_0==73||(LA17_0>=77 && LA17_0<=78)||(LA17_0>=81 && LA17_0<=90)||LA17_0==92) ) {
-                        alt17=1;
+                    if ( ((LA16_0>=RULE_STRING && LA16_0<=RULE_DECIMAL)||LA16_0==14||(LA16_0>=29 && LA16_0<=31)||(LA16_0>=35 && LA16_0<=36)||(LA16_0>=40 && LA16_0<=41)||LA16_0==48||(LA16_0>=64 && LA16_0<=65)||LA16_0==69||LA16_0==77||LA16_0==79||(LA16_0>=82 && LA16_0<=84)||(LA16_0>=87 && LA16_0<=96)||LA16_0==98) ) {
+                        alt16=1;
                     }
-                    switch (alt17) {
+                    switch (alt16) {
                         case 1 :
-                            // InternalSignalDSL.g:1140:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalSignalDSL.g:1464:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:1140:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalSignalDSL.g:1141:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1464:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalSignalDSL.g:1465:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalSignalDSL.g:1141:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalSignalDSL.g:1142:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalSignalDSL.g:1465:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1466:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -3027,32 +3927,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:1159:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop16:
+                            // InternalSignalDSL.g:1483:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop15:
                             do {
-                                int alt16=2;
-                                int LA16_0 = input.LA(1);
+                                int alt15=2;
+                                int LA15_0 = input.LA(1);
 
-                                if ( (LA16_0==31) ) {
-                                    alt16=1;
+                                if ( (LA15_0==37) ) {
+                                    alt15=1;
                                 }
 
 
-                                switch (alt16) {
+                                switch (alt15) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1160:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1484:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:1164:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalSignalDSL.g:1165:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1488:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1489:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalSignalDSL.g:1165:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalSignalDSL.g:1166:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalSignalDSL.g:1489:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1490:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -3088,7 +3988,7 @@
                             	    break;
 
                             	default :
-                            	    break loop16;
+                            	    break loop15;
                                 }
                             } while (true);
 
@@ -3098,7 +3998,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
@@ -3111,10 +4011,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1191:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalSignalDSL.g:1515:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                     {
-                    // InternalSignalDSL.g:1191:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // InternalSignalDSL.g:1192:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalSignalDSL.g:1515:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalSignalDSL.g:1516:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3132,19 +4032,19 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:1200:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    int alt19=2;
-                    int LA19_0 = input.LA(1);
+                    // InternalSignalDSL.g:1524:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
 
-                    if ( (LA19_0==31) ) {
-                        alt19=1;
+                    if ( (LA18_0==37) ) {
+                        alt18=1;
                     }
-                    switch (alt19) {
+                    switch (alt18) {
                         case 1 :
-                            // InternalSignalDSL.g:1201:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalSignalDSL.g:1525:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             {
-                            // InternalSignalDSL.g:1201:5: ()
-                            // InternalSignalDSL.g:1202:6: 
+                            // InternalSignalDSL.g:1525:5: ()
+                            // InternalSignalDSL.g:1526:6: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -3156,33 +4056,33 @@
 
                             }
 
-                            // InternalSignalDSL.g:1208:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            int cnt18=0;
-                            loop18:
+                            // InternalSignalDSL.g:1532:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt17=0;
+                            loop17:
                             do {
-                                int alt18=2;
-                                int LA18_0 = input.LA(1);
+                                int alt17=2;
+                                int LA17_0 = input.LA(1);
 
-                                if ( (LA18_0==31) ) {
-                                    alt18=1;
+                                if ( (LA17_0==37) ) {
+                                    alt17=1;
                                 }
 
 
-                                switch (alt18) {
+                                switch (alt17) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1209:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1533:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_9=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:1213:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalSignalDSL.g:1214:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1537:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1538:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalSignalDSL.g:1214:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // InternalSignalDSL.g:1215:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalSignalDSL.g:1538:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1539:8: lv_elements_10_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -3218,13 +4118,13 @@
                             	    break;
 
                             	default :
-                            	    if ( cnt18 >= 1 ) break loop18;
+                            	    if ( cnt17 >= 1 ) break loop17;
                             	    if (state.backtracking>0) {state.failed=true; return current;}
                                         EarlyExitException eee =
-                                            new EarlyExitException(18, input);
+                                            new EarlyExitException(17, input);
                                         throw eee;
                                 }
-                                cnt18++;
+                                cnt17++;
                             } while (true);
 
 
@@ -3264,7 +4164,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // InternalSignalDSL.g:1239:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalSignalDSL.g:1563:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -3272,8 +4172,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1239:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // InternalSignalDSL.g:1240:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalSignalDSL.g:1563:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalSignalDSL.g:1564:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
@@ -3304,7 +4204,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // InternalSignalDSL.g:1246:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
+    // InternalSignalDSL.g:1570:1: ruleXAnnotationElementValue returns [EObject current=null] : ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) ;
     public final EObject ruleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -3323,27 +4223,27 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1252:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
-            // InternalSignalDSL.g:1253:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalSignalDSL.g:1576:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalSignalDSL.g:1577:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
             {
-            // InternalSignalDSL.g:1253:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
-            int alt23=2;
-            alt23 = dfa23.predict(input);
-            switch (alt23) {
+            // InternalSignalDSL.g:1577:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt22=2;
+            alt22 = dfa22.predict(input);
+            switch (alt22) {
                 case 1 :
-                    // InternalSignalDSL.g:1254:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1578:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // InternalSignalDSL.g:1254:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // InternalSignalDSL.g:1255:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalSignalDSL.g:1578:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalSignalDSL.g:1579:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // InternalSignalDSL.g:1255:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // InternalSignalDSL.g:1256:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1579:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalSignalDSL.g:1580:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // InternalSignalDSL.g:1263:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // InternalSignalDSL.g:1264:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalSignalDSL.g:1587:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalSignalDSL.g:1588:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // InternalSignalDSL.g:1264:6: ()
-                    // InternalSignalDSL.g:1265:7: 
+                    // InternalSignalDSL.g:1588:6: ()
+                    // InternalSignalDSL.g:1589:7: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3355,13 +4255,13 @@
 
                     }
 
-                    otherlv_1=(Token)match(input,34,FOLLOW_29); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,40,FOLLOW_29); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
                       					
                     }
-                    otherlv_2=(Token)match(input,35,FOLLOW_30); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,41,FOLLOW_30); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
@@ -3373,22 +4273,22 @@
 
                     }
 
-                    // InternalSignalDSL.g:1281:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt22=2;
-                    int LA22_0 = input.LA(1);
+                    // InternalSignalDSL.g:1605:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt21=2;
+                    int LA21_0 = input.LA(1);
 
-                    if ( ((LA22_0>=RULE_STRING && LA22_0<=RULE_DECIMAL)||LA22_0==14||LA22_0==18||(LA22_0>=23 && LA22_0<=25)||(LA22_0>=29 && LA22_0<=30)||(LA22_0>=34 && LA22_0<=35)||LA22_0==42||(LA22_0>=58 && LA22_0<=59)||LA22_0==63||LA22_0==71||LA22_0==73||(LA22_0>=77 && LA22_0<=78)||(LA22_0>=81 && LA22_0<=90)||LA22_0==92) ) {
-                        alt22=1;
+                    if ( ((LA21_0>=RULE_STRING && LA21_0<=RULE_DECIMAL)||LA21_0==14||(LA21_0>=29 && LA21_0<=31)||(LA21_0>=35 && LA21_0<=36)||(LA21_0>=40 && LA21_0<=41)||LA21_0==48||(LA21_0>=64 && LA21_0<=65)||LA21_0==69||LA21_0==77||LA21_0==79||(LA21_0>=82 && LA21_0<=84)||(LA21_0>=87 && LA21_0<=96)||LA21_0==98) ) {
+                        alt21=1;
                     }
-                    switch (alt22) {
+                    switch (alt21) {
                         case 1 :
-                            // InternalSignalDSL.g:1282:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalSignalDSL.g:1606:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:1282:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // InternalSignalDSL.g:1283:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1606:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalSignalDSL.g:1607:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // InternalSignalDSL.g:1283:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // InternalSignalDSL.g:1284:7: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalSignalDSL.g:1607:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalSignalDSL.g:1608:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -3419,32 +4319,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:1301:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop21:
+                            // InternalSignalDSL.g:1625:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop20:
                             do {
-                                int alt21=2;
-                                int LA21_0 = input.LA(1);
+                                int alt20=2;
+                                int LA20_0 = input.LA(1);
 
-                                if ( (LA21_0==31) ) {
-                                    alt21=1;
+                                if ( (LA20_0==37) ) {
+                                    alt20=1;
                                 }
 
 
-                                switch (alt21) {
+                                switch (alt20) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:1302:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1626:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:1306:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // InternalSignalDSL.g:1307:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1630:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalSignalDSL.g:1631:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // InternalSignalDSL.g:1307:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // InternalSignalDSL.g:1308:8: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalSignalDSL.g:1631:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalSignalDSL.g:1632:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -3480,7 +4380,7 @@
                             	    break;
 
                             	default :
-                            	    break loop21;
+                            	    break loop20;
                                 }
                             } while (true);
 
@@ -3490,7 +4390,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
@@ -3503,7 +4403,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1333:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalSignalDSL.g:1657:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3549,7 +4449,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // InternalSignalDSL.g:1345:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalSignalDSL.g:1669:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -3557,8 +4457,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1345:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // InternalSignalDSL.g:1346:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalSignalDSL.g:1669:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalSignalDSL.g:1670:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
@@ -3589,7 +4489,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // InternalSignalDSL.g:1352:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalSignalDSL.g:1676:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -3602,29 +4502,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1358:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // InternalSignalDSL.g:1359:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            // InternalSignalDSL.g:1682:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalSignalDSL.g:1683:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
             {
-            // InternalSignalDSL.g:1359:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            int alt24=2;
-            int LA24_0 = input.LA(1);
+            // InternalSignalDSL.g:1683:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
 
-            if ( (LA24_0==29) ) {
-                alt24=1;
+            if ( (LA23_0==35) ) {
+                alt23=1;
             }
-            else if ( ((LA24_0>=RULE_STRING && LA24_0<=RULE_DECIMAL)||LA24_0==14||LA24_0==18||(LA24_0>=23 && LA24_0<=25)||LA24_0==30||(LA24_0>=34 && LA24_0<=35)||LA24_0==42||(LA24_0>=58 && LA24_0<=59)||LA24_0==63||LA24_0==71||LA24_0==73||(LA24_0>=77 && LA24_0<=78)||(LA24_0>=81 && LA24_0<=90)||LA24_0==92) ) {
-                alt24=2;
+            else if ( ((LA23_0>=RULE_STRING && LA23_0<=RULE_DECIMAL)||LA23_0==14||(LA23_0>=29 && LA23_0<=31)||LA23_0==36||(LA23_0>=40 && LA23_0<=41)||LA23_0==48||(LA23_0>=64 && LA23_0<=65)||LA23_0==69||LA23_0==77||LA23_0==79||(LA23_0>=82 && LA23_0<=84)||(LA23_0>=87 && LA23_0<=96)||LA23_0==98) ) {
+                alt23=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 24, 0, input);
+                    new NoViableAltException("", 23, 0, input);
 
                 throw nvae;
             }
-            switch (alt24) {
+            switch (alt23) {
                 case 1 :
-                    // InternalSignalDSL.g:1360:3: this_XAnnotation_0= ruleXAnnotation
+                    // InternalSignalDSL.g:1684:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3646,7 +4546,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1369:3: this_XExpression_1= ruleXExpression
+                    // InternalSignalDSL.g:1693:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3692,7 +4592,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // InternalSignalDSL.g:1381:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalSignalDSL.g:1705:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -3700,8 +4600,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1381:52: (iv_ruleXExpression= ruleXExpression EOF )
-            // InternalSignalDSL.g:1382:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalSignalDSL.g:1705:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalSignalDSL.g:1706:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
@@ -3732,7 +4632,7 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // InternalSignalDSL.g:1388:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalSignalDSL.g:1712:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
     public final EObject ruleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -3743,8 +4643,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1394:2: (this_XAssignment_0= ruleXAssignment )
-            // InternalSignalDSL.g:1395:2: this_XAssignment_0= ruleXAssignment
+            // InternalSignalDSL.g:1718:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalSignalDSL.g:1719:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
 
@@ -3784,7 +4684,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // InternalSignalDSL.g:1406:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalSignalDSL.g:1730:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -3792,8 +4692,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1406:52: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // InternalSignalDSL.g:1407:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalSignalDSL.g:1730:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalSignalDSL.g:1731:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
@@ -3824,7 +4724,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // InternalSignalDSL.g:1413:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalSignalDSL.g:1737:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
     public final EObject ruleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -3839,155 +4739,155 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1419:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // InternalSignalDSL.g:1420:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalSignalDSL.g:1743:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalSignalDSL.g:1744:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // InternalSignalDSL.g:1420:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
-            int alt26=2;
+            // InternalSignalDSL.g:1744:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt25=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA26_1 = input.LA(2);
+                int LA25_1 = input.LA(2);
 
-                if ( (LA26_1==33) ) {
-                    alt26=1;
+                if ( (LA25_1==39) ) {
+                    alt25=1;
                 }
-                else if ( (LA26_1==EOF||(LA26_1>=RULE_STRING && LA26_1<=RULE_DECIMAL)||(LA26_1>=14 && LA26_1<=15)||LA26_1==18||(LA26_1>=23 && LA26_1<=26)||LA26_1==28||(LA26_1>=30 && LA26_1<=32)||(LA26_1>=34 && LA26_1<=69)||(LA26_1>=71 && LA26_1<=93)) ) {
-                    alt26=2;
+                else if ( (LA25_1==EOF||(LA25_1>=RULE_STRING && LA25_1<=RULE_DECIMAL)||(LA25_1>=14 && LA25_1<=15)||LA25_1==24||(LA25_1>=29 && LA25_1<=32)||LA25_1==34||(LA25_1>=36 && LA25_1<=38)||(LA25_1>=40 && LA25_1<=75)||(LA25_1>=77 && LA25_1<=99)) ) {
+                    alt25=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 26, 1, input);
+                        new NoViableAltException("", 25, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 81:
+            case 87:
                 {
-                int LA26_2 = input.LA(2);
+                int LA25_2 = input.LA(2);
 
-                if ( (LA26_2==EOF||(LA26_2>=RULE_STRING && LA26_2<=RULE_DECIMAL)||(LA26_2>=14 && LA26_2<=15)||LA26_2==18||(LA26_2>=23 && LA26_2<=26)||LA26_2==28||(LA26_2>=30 && LA26_2<=32)||(LA26_2>=34 && LA26_2<=69)||(LA26_2>=71 && LA26_2<=93)) ) {
-                    alt26=2;
+                if ( (LA25_2==39) ) {
+                    alt25=1;
                 }
-                else if ( (LA26_2==33) ) {
-                    alt26=1;
+                else if ( (LA25_2==EOF||(LA25_2>=RULE_STRING && LA25_2<=RULE_DECIMAL)||(LA25_2>=14 && LA25_2<=15)||LA25_2==24||(LA25_2>=29 && LA25_2<=32)||LA25_2==34||(LA25_2>=36 && LA25_2<=38)||(LA25_2>=40 && LA25_2<=75)||(LA25_2>=77 && LA25_2<=99)) ) {
+                    alt25=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 26, 2, input);
+                        new NoViableAltException("", 25, 2, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 24:
+            case 30:
                 {
-                int LA26_3 = input.LA(2);
+                int LA25_3 = input.LA(2);
 
-                if ( (LA26_3==EOF||(LA26_3>=RULE_STRING && LA26_3<=RULE_DECIMAL)||(LA26_3>=14 && LA26_3<=15)||LA26_3==18||(LA26_3>=23 && LA26_3<=26)||LA26_3==28||(LA26_3>=30 && LA26_3<=32)||(LA26_3>=34 && LA26_3<=69)||(LA26_3>=71 && LA26_3<=93)) ) {
-                    alt26=2;
+                if ( (LA25_3==39) ) {
+                    alt25=1;
                 }
-                else if ( (LA26_3==33) ) {
-                    alt26=1;
+                else if ( (LA25_3==EOF||(LA25_3>=RULE_STRING && LA25_3<=RULE_DECIMAL)||(LA25_3>=14 && LA25_3<=15)||LA25_3==24||(LA25_3>=29 && LA25_3<=32)||LA25_3==34||(LA25_3>=36 && LA25_3<=38)||(LA25_3>=40 && LA25_3<=75)||(LA25_3>=77 && LA25_3<=99)) ) {
+                    alt25=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 26, 3, input);
+                        new NoViableAltException("", 25, 3, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 23:
+            case 29:
                 {
-                int LA26_4 = input.LA(2);
+                int LA25_4 = input.LA(2);
 
-                if ( (LA26_4==33) ) {
-                    alt26=1;
+                if ( (LA25_4==39) ) {
+                    alt25=1;
                 }
-                else if ( (LA26_4==EOF||(LA26_4>=RULE_STRING && LA26_4<=RULE_DECIMAL)||(LA26_4>=14 && LA26_4<=15)||LA26_4==18||(LA26_4>=23 && LA26_4<=26)||LA26_4==28||(LA26_4>=30 && LA26_4<=32)||(LA26_4>=34 && LA26_4<=69)||(LA26_4>=71 && LA26_4<=93)) ) {
-                    alt26=2;
+                else if ( (LA25_4==EOF||(LA25_4>=RULE_STRING && LA25_4<=RULE_DECIMAL)||(LA25_4>=14 && LA25_4<=15)||LA25_4==24||(LA25_4>=29 && LA25_4<=32)||LA25_4==34||(LA25_4>=36 && LA25_4<=38)||(LA25_4>=40 && LA25_4<=75)||(LA25_4>=77 && LA25_4<=99)) ) {
+                    alt25=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 26, 4, input);
+                        new NoViableAltException("", 25, 4, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 25:
+            case 31:
                 {
-                int LA26_5 = input.LA(2);
+                int LA25_5 = input.LA(2);
 
-                if ( (LA26_5==EOF||(LA26_5>=RULE_STRING && LA26_5<=RULE_DECIMAL)||(LA26_5>=14 && LA26_5<=15)||LA26_5==18||(LA26_5>=23 && LA26_5<=26)||LA26_5==28||(LA26_5>=30 && LA26_5<=32)||(LA26_5>=34 && LA26_5<=69)||(LA26_5>=71 && LA26_5<=93)) ) {
-                    alt26=2;
+                if ( (LA25_5==39) ) {
+                    alt25=1;
                 }
-                else if ( (LA26_5==33) ) {
-                    alt26=1;
+                else if ( (LA25_5==EOF||(LA25_5>=RULE_STRING && LA25_5<=RULE_DECIMAL)||(LA25_5>=14 && LA25_5<=15)||LA25_5==24||(LA25_5>=29 && LA25_5<=32)||LA25_5==34||(LA25_5>=36 && LA25_5<=38)||(LA25_5>=40 && LA25_5<=75)||(LA25_5>=77 && LA25_5<=99)) ) {
+                    alt25=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 26, 5, input);
+                        new NoViableAltException("", 25, 5, input);
 
                     throw nvae;
                 }
                 }
                 break;
             case RULE_STRING:
-            case RULE_HEX:
             case RULE_INT:
+            case RULE_HEX:
             case RULE_DECIMAL:
             case 14:
-            case 18:
-            case 30:
-            case 34:
-            case 35:
-            case 42:
-            case 58:
-            case 59:
-            case 63:
-            case 71:
-            case 73:
+            case 36:
+            case 40:
+            case 41:
+            case 48:
+            case 64:
+            case 65:
+            case 69:
             case 77:
-            case 78:
+            case 79:
             case 82:
             case 83:
             case 84:
-            case 85:
-            case 86:
-            case 87:
             case 88:
             case 89:
             case 90:
+            case 91:
             case 92:
+            case 93:
+            case 94:
+            case 95:
+            case 96:
+            case 98:
                 {
-                alt26=2;
+                alt25=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 26, 0, input);
+                    new NoViableAltException("", 25, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt26) {
+            switch (alt25) {
                 case 1 :
-                    // InternalSignalDSL.g:1421:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalSignalDSL.g:1745:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // InternalSignalDSL.g:1421:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // InternalSignalDSL.g:1422:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalSignalDSL.g:1745:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalSignalDSL.g:1746:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // InternalSignalDSL.g:1422:4: ()
-                    // InternalSignalDSL.g:1423:5: 
+                    // InternalSignalDSL.g:1746:4: ()
+                    // InternalSignalDSL.g:1747:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -3999,11 +4899,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:1429:4: ( ( ruleFeatureCallID ) )
-                    // InternalSignalDSL.g:1430:5: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:1753:4: ( ( ruleFeatureCallID ) )
+                    // InternalSignalDSL.g:1754:5: ( ruleFeatureCallID )
                     {
-                    // InternalSignalDSL.g:1430:5: ( ruleFeatureCallID )
-                    // InternalSignalDSL.g:1431:6: ruleFeatureCallID
+                    // InternalSignalDSL.g:1754:5: ( ruleFeatureCallID )
+                    // InternalSignalDSL.g:1755:6: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4048,11 +4948,11 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:1452:4: ( (lv_value_3_0= ruleXAssignment ) )
-                    // InternalSignalDSL.g:1453:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalSignalDSL.g:1776:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalSignalDSL.g:1777:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // InternalSignalDSL.g:1453:5: (lv_value_3_0= ruleXAssignment )
-                    // InternalSignalDSL.g:1454:6: lv_value_3_0= ruleXAssignment
+                    // InternalSignalDSL.g:1777:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalSignalDSL.g:1778:6: lv_value_3_0= ruleXAssignment
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4090,10 +4990,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1473:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalSignalDSL.g:1797:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // InternalSignalDSL.g:1473:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // InternalSignalDSL.g:1474:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalSignalDSL.g:1797:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalSignalDSL.g:1798:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     {
                     if ( state.backtracking==0 ) {
 
@@ -4111,21 +5011,21 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:1482:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    int alt25=2;
-                    alt25 = dfa25.predict(input);
-                    switch (alt25) {
+                    // InternalSignalDSL.g:1806:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt24=2;
+                    alt24 = dfa24.predict(input);
+                    switch (alt24) {
                         case 1 :
-                            // InternalSignalDSL.g:1483:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalSignalDSL.g:1807:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // InternalSignalDSL.g:1483:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // InternalSignalDSL.g:1484:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalSignalDSL.g:1807:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalSignalDSL.g:1808:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // InternalSignalDSL.g:1494:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // InternalSignalDSL.g:1495:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalSignalDSL.g:1818:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalSignalDSL.g:1819:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // InternalSignalDSL.g:1495:7: ()
-                            // InternalSignalDSL.g:1496:8: 
+                            // InternalSignalDSL.g:1819:7: ()
+                            // InternalSignalDSL.g:1820:8: 
                             {
                             if ( state.backtracking==0 ) {
 
@@ -4137,11 +5037,11 @@
 
                             }
 
-                            // InternalSignalDSL.g:1502:7: ( ( ruleOpMultiAssign ) )
-                            // InternalSignalDSL.g:1503:8: ( ruleOpMultiAssign )
+                            // InternalSignalDSL.g:1826:7: ( ( ruleOpMultiAssign ) )
+                            // InternalSignalDSL.g:1827:8: ( ruleOpMultiAssign )
                             {
-                            // InternalSignalDSL.g:1503:8: ( ruleOpMultiAssign )
-                            // InternalSignalDSL.g:1504:9: ruleOpMultiAssign
+                            // InternalSignalDSL.g:1827:8: ( ruleOpMultiAssign )
+                            // InternalSignalDSL.g:1828:9: ruleOpMultiAssign
                             {
                             if ( state.backtracking==0 ) {
 
@@ -4177,11 +5077,11 @@
 
                             }
 
-                            // InternalSignalDSL.g:1520:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // InternalSignalDSL.g:1521:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalSignalDSL.g:1844:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalSignalDSL.g:1845:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // InternalSignalDSL.g:1521:6: (lv_rightOperand_7_0= ruleXAssignment )
-                            // InternalSignalDSL.g:1522:7: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalSignalDSL.g:1845:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalSignalDSL.g:1846:7: lv_rightOperand_7_0= ruleXAssignment
                             {
                             if ( state.backtracking==0 ) {
 
@@ -4249,7 +5149,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // InternalSignalDSL.g:1545:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalSignalDSL.g:1869:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -4257,8 +5157,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1545:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // InternalSignalDSL.g:1546:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalSignalDSL.g:1869:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalSignalDSL.g:1870:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
@@ -4289,7 +5189,7 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // InternalSignalDSL.g:1552:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalSignalDSL.g:1876:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
     public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -4299,10 +5199,10 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1558:2: (kw= '=' )
-            // InternalSignalDSL.g:1559:2: kw= '='
+            // InternalSignalDSL.g:1882:2: (kw= '=' )
+            // InternalSignalDSL.g:1883:2: kw= '='
             {
-            kw=(Token)match(input,33,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(kw);
@@ -4331,7 +5231,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // InternalSignalDSL.g:1567:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalSignalDSL.g:1891:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -4339,8 +5239,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1567:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // InternalSignalDSL.g:1568:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalSignalDSL.g:1891:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalSignalDSL.g:1892:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
@@ -4371,7 +5271,7 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // InternalSignalDSL.g:1574:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalSignalDSL.g:1898:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
     public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -4381,60 +5281,60 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1580:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // InternalSignalDSL.g:1581:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalSignalDSL.g:1904:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalSignalDSL.g:1905:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // InternalSignalDSL.g:1581:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            int alt28=7;
+            // InternalSignalDSL.g:1905:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt27=7;
             switch ( input.LA(1) ) {
-            case 37:
-                {
-                alt28=1;
-                }
-                break;
-            case 38:
-                {
-                alt28=2;
-                }
-                break;
-            case 39:
-                {
-                alt28=3;
-                }
-                break;
-            case 40:
-                {
-                alt28=4;
-                }
-                break;
-            case 41:
-                {
-                alt28=5;
-                }
-                break;
-            case 42:
-                {
-                alt28=6;
-                }
-                break;
             case 43:
                 {
-                alt28=7;
+                alt27=1;
+                }
+                break;
+            case 44:
+                {
+                alt27=2;
+                }
+                break;
+            case 45:
+                {
+                alt27=3;
+                }
+                break;
+            case 46:
+                {
+                alt27=4;
+                }
+                break;
+            case 47:
+                {
+                alt27=5;
+                }
+                break;
+            case 48:
+                {
+                alt27=6;
+                }
+                break;
+            case 49:
+                {
+                alt27=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 28, 0, input);
+                    new NoViableAltException("", 27, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt28) {
+            switch (alt27) {
                 case 1 :
-                    // InternalSignalDSL.g:1582:3: kw= '+='
+                    // InternalSignalDSL.g:1906:3: kw= '+='
                     {
-                    kw=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -4445,9 +5345,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1588:3: kw= '-='
+                    // InternalSignalDSL.g:1912:3: kw= '-='
                     {
-                    kw=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -4458,9 +5358,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:1594:3: kw= '*='
+                    // InternalSignalDSL.g:1918:3: kw= '*='
                     {
-                    kw=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -4471,9 +5371,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:1600:3: kw= '/='
+                    // InternalSignalDSL.g:1924:3: kw= '/='
                     {
-                    kw=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,46,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -4484,9 +5384,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:1606:3: kw= '%='
+                    // InternalSignalDSL.g:1930:3: kw= '%='
                     {
-                    kw=(Token)match(input,41,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -4497,26 +5397,26 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:1612:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:1936:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // InternalSignalDSL.g:1612:3: (kw= '<' kw= '<' kw= '=' )
-                    // InternalSignalDSL.g:1613:4: kw= '<' kw= '<' kw= '='
+                    // InternalSignalDSL.g:1936:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:1937:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,42,FOLLOW_34); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_34); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0());
                       			
                     }
-                    kw=(Token)match(input,42,FOLLOW_27); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_27); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1());
                       			
                     }
-                    kw=(Token)match(input,33,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -4530,30 +5430,30 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:1630:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalSignalDSL.g:1954:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // InternalSignalDSL.g:1630:3: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // InternalSignalDSL.g:1631:4: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalSignalDSL.g:1954:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalSignalDSL.g:1955:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,43,FOLLOW_35); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_35); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0());
                       			
                     }
-                    // InternalSignalDSL.g:1636:4: (kw= '>' )?
-                    int alt27=2;
-                    int LA27_0 = input.LA(1);
+                    // InternalSignalDSL.g:1960:4: (kw= '>' )?
+                    int alt26=2;
+                    int LA26_0 = input.LA(1);
 
-                    if ( (LA27_0==43) ) {
-                        alt27=1;
+                    if ( (LA26_0==49) ) {
+                        alt26=1;
                     }
-                    switch (alt27) {
+                    switch (alt26) {
                         case 1 :
-                            // InternalSignalDSL.g:1637:5: kw= '>'
+                            // InternalSignalDSL.g:1961:5: kw= '>'
                             {
-                            kw=(Token)match(input,43,FOLLOW_36); if (state.failed) return current;
+                            kw=(Token)match(input,49,FOLLOW_36); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -4566,7 +5466,7 @@
 
                     }
 
-                    kw=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -4604,7 +5504,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // InternalSignalDSL.g:1653:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalSignalDSL.g:1977:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4612,8 +5512,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1653:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // InternalSignalDSL.g:1654:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalSignalDSL.g:1977:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalSignalDSL.g:1978:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
@@ -4644,7 +5544,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // InternalSignalDSL.g:1660:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalSignalDSL.g:1984:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
     public final EObject ruleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -4657,11 +5557,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1666:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // InternalSignalDSL.g:1667:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalSignalDSL.g:1990:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalSignalDSL.g:1991:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // InternalSignalDSL.g:1667:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // InternalSignalDSL.g:1668:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalSignalDSL.g:1991:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalSignalDSL.g:1992:3: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -4679,35 +5579,35 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:1676:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
-            loop29:
+            // InternalSignalDSL.g:2000:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop28:
             do {
-                int alt29=2;
-                int LA29_0 = input.LA(1);
+                int alt28=2;
+                int LA28_0 = input.LA(1);
 
-                if ( (LA29_0==45) ) {
-                    int LA29_2 = input.LA(2);
+                if ( (LA28_0==51) ) {
+                    int LA28_2 = input.LA(2);
 
                     if ( (synpred8_InternalSignalDSL()) ) {
-                        alt29=1;
+                        alt28=1;
                     }
 
 
                 }
 
 
-                switch (alt29) {
+                switch (alt28) {
             	case 1 :
-            	    // InternalSignalDSL.g:1677:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalSignalDSL.g:2001:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // InternalSignalDSL.g:1677:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // InternalSignalDSL.g:1678:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalSignalDSL.g:2001:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalSignalDSL.g:2002:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // InternalSignalDSL.g:1688:5: ( () ( ( ruleOpOr ) ) )
-            	    // InternalSignalDSL.g:1689:6: () ( ( ruleOpOr ) )
+            	    // InternalSignalDSL.g:2012:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalSignalDSL.g:2013:6: () ( ( ruleOpOr ) )
             	    {
-            	    // InternalSignalDSL.g:1689:6: ()
-            	    // InternalSignalDSL.g:1690:7: 
+            	    // InternalSignalDSL.g:2013:6: ()
+            	    // InternalSignalDSL.g:2014:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -4719,11 +5619,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:1696:6: ( ( ruleOpOr ) )
-            	    // InternalSignalDSL.g:1697:7: ( ruleOpOr )
+            	    // InternalSignalDSL.g:2020:6: ( ( ruleOpOr ) )
+            	    // InternalSignalDSL.g:2021:7: ( ruleOpOr )
             	    {
-            	    // InternalSignalDSL.g:1697:7: ( ruleOpOr )
-            	    // InternalSignalDSL.g:1698:8: ruleOpOr
+            	    // InternalSignalDSL.g:2021:7: ( ruleOpOr )
+            	    // InternalSignalDSL.g:2022:8: ruleOpOr
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -4759,11 +5659,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:1714:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // InternalSignalDSL.g:1715:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalSignalDSL.g:2038:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalSignalDSL.g:2039:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // InternalSignalDSL.g:1715:5: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // InternalSignalDSL.g:1716:6: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalSignalDSL.g:2039:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalSignalDSL.g:2040:6: lv_rightOperand_3_0= ruleXAndExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -4799,6 +5699,312 @@
             	    break;
 
             	default :
+            	    break loop28;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXOrExpression"
+
+
+    // $ANTLR start "entryRuleOpOr"
+    // InternalSignalDSL.g:2062:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    public final String entryRuleOpOr() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpOr = null;
+
+
+        try {
+            // InternalSignalDSL.g:2062:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalSignalDSL.g:2063:2: iv_ruleOpOr= ruleOpOr EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpOrRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpOr=ruleOpOr();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpOr.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpOr"
+
+
+    // $ANTLR start "ruleOpOr"
+    // InternalSignalDSL.g:2069:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:2075:2: (kw= '||' )
+            // InternalSignalDSL.g:2076:2: kw= '||'
+            {
+            kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+              	
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpOr"
+
+
+    // $ANTLR start "entryRuleXAndExpression"
+    // InternalSignalDSL.g:2084:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    public final EObject entryRuleXAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAndExpression = null;
+
+
+        try {
+            // InternalSignalDSL.g:2084:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalSignalDSL.g:2085:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXAndExpression=ruleXAndExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAndExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAndExpression"
+
+
+    // $ANTLR start "ruleXAndExpression"
+    // InternalSignalDSL.g:2091:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    public final EObject ruleXAndExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_XEqualityExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:2097:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalSignalDSL.g:2098:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            {
+            // InternalSignalDSL.g:2098:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalSignalDSL.g:2099:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_38);
+            this_XEqualityExpression_0=ruleXEqualityExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XEqualityExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalSignalDSL.g:2107:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop29:
+            do {
+                int alt29=2;
+                int LA29_0 = input.LA(1);
+
+                if ( (LA29_0==52) ) {
+                    int LA29_2 = input.LA(2);
+
+                    if ( (synpred9_InternalSignalDSL()) ) {
+                        alt29=1;
+                    }
+
+
+                }
+
+
+                switch (alt29) {
+            	case 1 :
+            	    // InternalSignalDSL.g:2108:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    {
+            	    // InternalSignalDSL.g:2108:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalSignalDSL.g:2109:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    {
+            	    // InternalSignalDSL.g:2119:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalSignalDSL.g:2120:6: () ( ( ruleOpAnd ) )
+            	    {
+            	    // InternalSignalDSL.g:2120:6: ()
+            	    // InternalSignalDSL.g:2121:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalSignalDSL.g:2127:6: ( ( ruleOpAnd ) )
+            	    // InternalSignalDSL.g:2128:7: ( ruleOpAnd )
+            	    {
+            	    // InternalSignalDSL.g:2128:7: ( ruleOpAnd )
+            	    // InternalSignalDSL.g:2129:8: ruleOpAnd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      								}
+            	      							
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_28);
+            	    ruleOpAnd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalSignalDSL.g:2145:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalSignalDSL.g:2146:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    {
+            	    // InternalSignalDSL.g:2146:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalSignalDSL.g:2147:6: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_38);
+            	    lv_rightOperand_3_0=ruleXEqualityExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
             	    break loop29;
                 }
             } while (true);
@@ -4824,31 +6030,31 @@
         }
         return current;
     }
-    // $ANTLR end "ruleXOrExpression"
+    // $ANTLR end "ruleXAndExpression"
 
 
-    // $ANTLR start "entryRuleOpOr"
-    // InternalSignalDSL.g:1738:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
-    public final String entryRuleOpOr() throws RecognitionException {
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalSignalDSL.g:2169:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
         String current = null;
 
-        AntlrDatatypeRuleToken iv_ruleOpOr = null;
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
 
 
         try {
-            // InternalSignalDSL.g:1738:44: (iv_ruleOpOr= ruleOpOr EOF )
-            // InternalSignalDSL.g:1739:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalSignalDSL.g:2169:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalSignalDSL.g:2170:2: iv_ruleOpAnd= ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpOrRule()); 
+               newCompositeNode(grammarAccess.getOpAndRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleOpOr=ruleOpOr();
+            iv_ruleOpAnd=ruleOpAnd();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleOpOr.getText(); 
+               current =iv_ruleOpAnd.getText(); 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -4864,12 +6070,12 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleOpOr"
+    // $ANTLR end "entryRuleOpAnd"
 
 
-    // $ANTLR start "ruleOpOr"
-    // InternalSignalDSL.g:1745:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
-    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
+    // $ANTLR start "ruleOpAnd"
+    // InternalSignalDSL.g:2176:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
@@ -4878,14 +6084,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1751:2: (kw= '||' )
-            // InternalSignalDSL.g:1752:2: kw= '||'
+            // InternalSignalDSL.g:2182:2: (kw= '&&' )
+            // InternalSignalDSL.g:2183:2: kw= '&&'
             {
-            kw=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               		current.merge(kw);
-              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
               	
             }
 
@@ -4906,31 +6112,31 @@
         }
         return current;
     }
-    // $ANTLR end "ruleOpOr"
+    // $ANTLR end "ruleOpAnd"
 
 
-    // $ANTLR start "entryRuleXAndExpression"
-    // InternalSignalDSL.g:1760:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
-    public final EObject entryRuleXAndExpression() throws RecognitionException {
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // InternalSignalDSL.g:2191:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleXAndExpression = null;
+        EObject iv_ruleXEqualityExpression = null;
 
 
         try {
-            // InternalSignalDSL.g:1760:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // InternalSignalDSL.g:1761:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalSignalDSL.g:2191:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalSignalDSL.g:2192:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
             }
             pushFollow(FOLLOW_1);
-            iv_ruleXAndExpression=ruleXAndExpression();
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleXAndExpression; 
+               current =iv_ruleXEqualityExpression; 
             }
             match(input,EOF,FOLLOW_2); if (state.failed) return current;
 
@@ -4946,15 +6152,15 @@
         }
         return current;
     }
-    // $ANTLR end "entryRuleXAndExpression"
+    // $ANTLR end "entryRuleXEqualityExpression"
 
 
-    // $ANTLR start "ruleXAndExpression"
-    // InternalSignalDSL.g:1767:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
-    public final EObject ruleXAndExpression() throws RecognitionException {
+    // $ANTLR start "ruleXEqualityExpression"
+    // InternalSignalDSL.g:2198:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
+    public final EObject ruleXEqualityExpression() throws RecognitionException {
         EObject current = null;
 
-        EObject this_XEqualityExpression_0 = null;
+        EObject this_XRelationalExpression_0 = null;
 
         EObject lv_rightOperand_3_0 = null;
 
@@ -4963,88 +6169,123 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1773:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // InternalSignalDSL.g:1774:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalSignalDSL.g:2204:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalSignalDSL.g:2205:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
             {
-            // InternalSignalDSL.g:1774:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // InternalSignalDSL.g:1775:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalSignalDSL.g:2205:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalSignalDSL.g:2206:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
-              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_38);
-            this_XEqualityExpression_0=ruleXEqualityExpression();
+            pushFollow(FOLLOW_39);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              			current = this_XEqualityExpression_0;
+              			current = this_XRelationalExpression_0;
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:1783:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalSignalDSL.g:2214:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             loop30:
             do {
                 int alt30=2;
-                int LA30_0 = input.LA(1);
-
-                if ( (LA30_0==46) ) {
+                switch ( input.LA(1) ) {
+                case 53:
+                    {
                     int LA30_2 = input.LA(2);
 
-                    if ( (synpred9_InternalSignalDSL()) ) {
+                    if ( (synpred10_InternalSignalDSL()) ) {
                         alt30=1;
                     }
 
 
-                }
+                    }
+                    break;
+                case 54:
+                    {
+                    int LA30_3 = input.LA(2);
 
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt30=1;
+                    }
+
+
+                    }
+                    break;
+                case 55:
+                    {
+                    int LA30_4 = input.LA(2);
+
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt30=1;
+                    }
+
+
+                    }
+                    break;
+                case 56:
+                    {
+                    int LA30_5 = input.LA(2);
+
+                    if ( (synpred10_InternalSignalDSL()) ) {
+                        alt30=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
 
                 switch (alt30) {
             	case 1 :
-            	    // InternalSignalDSL.g:1784:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalSignalDSL.g:2215:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
             	    {
-            	    // InternalSignalDSL.g:1784:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // InternalSignalDSL.g:1785:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalSignalDSL.g:2215:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalSignalDSL.g:2216:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
             	    {
-            	    // InternalSignalDSL.g:1795:5: ( () ( ( ruleOpAnd ) ) )
-            	    // InternalSignalDSL.g:1796:6: () ( ( ruleOpAnd ) )
+            	    // InternalSignalDSL.g:2226:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalSignalDSL.g:2227:6: () ( ( ruleOpEquality ) )
             	    {
-            	    // InternalSignalDSL.g:1796:6: ()
-            	    // InternalSignalDSL.g:1797:7: 
+            	    // InternalSignalDSL.g:2227:6: ()
+            	    // InternalSignalDSL.g:2228:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      							current = forceCreateModelElementAndSet(
-            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
             	      								current);
             	      						
             	    }
 
             	    }
 
-            	    // InternalSignalDSL.g:1803:6: ( ( ruleOpAnd ) )
-            	    // InternalSignalDSL.g:1804:7: ( ruleOpAnd )
+            	    // InternalSignalDSL.g:2234:6: ( ( ruleOpEquality ) )
+            	    // InternalSignalDSL.g:2235:7: ( ruleOpEquality )
             	    {
-            	    // InternalSignalDSL.g:1804:7: ( ruleOpAnd )
-            	    // InternalSignalDSL.g:1805:8: ruleOpAnd
+            	    // InternalSignalDSL.g:2235:7: ( ruleOpEquality )
+            	    // InternalSignalDSL.g:2236:8: ruleOpEquality
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      								if (current==null) {
-            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
             	      								}
             	      							
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
             	      							
             	    }
             	    pushFollow(FOLLOW_28);
-            	    ruleOpAnd();
+            	    ruleOpEquality();
 
             	    state._fsp--;
             	    if (state.failed) return current;
@@ -5065,32 +6306,32 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:1821:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // InternalSignalDSL.g:1822:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalSignalDSL.g:2252:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalSignalDSL.g:2253:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
             	    {
-            	    // InternalSignalDSL.g:1822:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // InternalSignalDSL.g:1823:6: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalSignalDSL.g:2253:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalSignalDSL.g:2254:6: lv_rightOperand_3_0= ruleXRelationalExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_38);
-            	    lv_rightOperand_3_0=ruleXEqualityExpression();
+            	    pushFollow(FOLLOW_39);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      						if (current==null) {
-            	      							current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
             	      						}
             	      						set(
             	      							current,
             	      							"rightOperand",
             	      							lv_rightOperand_3_0,
-            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
             	      						afterParserOrEnumRuleCall();
             	      					
             	    }
@@ -5130,352 +6371,11 @@
         }
         return current;
     }
-    // $ANTLR end "ruleXAndExpression"
-
-
-    // $ANTLR start "entryRuleOpAnd"
-    // InternalSignalDSL.g:1845:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
-    public final String entryRuleOpAnd() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
-
-
-        try {
-            // InternalSignalDSL.g:1845:45: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // InternalSignalDSL.g:1846:2: iv_ruleOpAnd= ruleOpAnd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAndRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleOpAnd=ruleOpAnd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAnd.getText(); 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpAnd"
-
-
-    // $ANTLR start "ruleOpAnd"
-    // InternalSignalDSL.g:1852:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
-    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:1858:2: (kw= '&&' )
-            // InternalSignalDSL.g:1859:2: kw= '&&'
-            {
-            kw=(Token)match(input,46,FOLLOW_2); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              		current.merge(kw);
-              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
-              	
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpAnd"
-
-
-    // $ANTLR start "entryRuleXEqualityExpression"
-    // InternalSignalDSL.g:1867:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
-    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXEqualityExpression = null;
-
-
-        try {
-            // InternalSignalDSL.g:1867:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // InternalSignalDSL.g:1868:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleXEqualityExpression=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXEqualityExpression; 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXEqualityExpression"
-
-
-    // $ANTLR start "ruleXEqualityExpression"
-    // InternalSignalDSL.g:1874:1: ruleXEqualityExpression returns [EObject current=null] : (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) ;
-    public final EObject ruleXEqualityExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject this_XRelationalExpression_0 = null;
-
-        EObject lv_rightOperand_3_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:1880:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // InternalSignalDSL.g:1881:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            {
-            // InternalSignalDSL.g:1881:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // InternalSignalDSL.g:1882:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-
-              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
-              		
-            }
-            pushFollow(FOLLOW_39);
-            this_XRelationalExpression_0=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			current = this_XRelationalExpression_0;
-              			afterParserOrEnumRuleCall();
-              		
-            }
-            // InternalSignalDSL.g:1890:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            loop31:
-            do {
-                int alt31=2;
-                switch ( input.LA(1) ) {
-                case 47:
-                    {
-                    int LA31_2 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt31=1;
-                    }
-
-
-                    }
-                    break;
-                case 48:
-                    {
-                    int LA31_3 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt31=1;
-                    }
-
-
-                    }
-                    break;
-                case 49:
-                    {
-                    int LA31_4 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt31=1;
-                    }
-
-
-                    }
-                    break;
-                case 50:
-                    {
-                    int LA31_5 = input.LA(2);
-
-                    if ( (synpred10_InternalSignalDSL()) ) {
-                        alt31=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt31) {
-            	case 1 :
-            	    // InternalSignalDSL.g:1891:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    {
-            	    // InternalSignalDSL.g:1891:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // InternalSignalDSL.g:1892:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
-            	    {
-            	    // InternalSignalDSL.g:1902:5: ( () ( ( ruleOpEquality ) ) )
-            	    // InternalSignalDSL.g:1903:6: () ( ( ruleOpEquality ) )
-            	    {
-            	    // InternalSignalDSL.g:1903:6: ()
-            	    // InternalSignalDSL.g:1904:7: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      							current = forceCreateModelElementAndSet(
-            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	      								current);
-            	      						
-            	    }
-
-            	    }
-
-            	    // InternalSignalDSL.g:1910:6: ( ( ruleOpEquality ) )
-            	    // InternalSignalDSL.g:1911:7: ( ruleOpEquality )
-            	    {
-            	    // InternalSignalDSL.g:1911:7: ( ruleOpEquality )
-            	    // InternalSignalDSL.g:1912:8: ruleOpEquality
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      								if (current==null) {
-            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
-            	      								}
-            	      							
-            	    }
-            	    if ( state.backtracking==0 ) {
-
-            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
-            	      							
-            	    }
-            	    pushFollow(FOLLOW_28);
-            	    ruleOpEquality();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      								afterParserOrEnumRuleCall();
-            	      							
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // InternalSignalDSL.g:1928:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // InternalSignalDSL.g:1929:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    {
-            	    // InternalSignalDSL.g:1929:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // InternalSignalDSL.g:1930:6: lv_rightOperand_3_0= ruleXRelationalExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
-            	      					
-            	    }
-            	    pushFollow(FOLLOW_39);
-            	    lv_rightOperand_3_0=ruleXRelationalExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      						if (current==null) {
-            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
-            	      						}
-            	      						set(
-            	      							current,
-            	      							"rightOperand",
-            	      							lv_rightOperand_3_0,
-            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
-            	      						afterParserOrEnumRuleCall();
-            	      					
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop31;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
     // $ANTLR end "ruleXEqualityExpression"
 
 
     // $ANTLR start "entryRuleOpEquality"
-    // InternalSignalDSL.g:1952:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    // InternalSignalDSL.g:2276:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
     public final String entryRuleOpEquality() throws RecognitionException {
         String current = null;
 
@@ -5483,8 +6383,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1952:50: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // InternalSignalDSL.g:1953:2: iv_ruleOpEquality= ruleOpEquality EOF
+            // InternalSignalDSL.g:2276:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalSignalDSL.g:2277:2: iv_ruleOpEquality= ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpEqualityRule()); 
@@ -5515,7 +6415,7 @@
 
 
     // $ANTLR start "ruleOpEquality"
-    // InternalSignalDSL.g:1959:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    // InternalSignalDSL.g:2283:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
     public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -5525,45 +6425,45 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:1965:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // InternalSignalDSL.g:1966:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            // InternalSignalDSL.g:2289:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalSignalDSL.g:2290:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             {
-            // InternalSignalDSL.g:1966:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            int alt32=4;
+            // InternalSignalDSL.g:2290:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt31=4;
             switch ( input.LA(1) ) {
-            case 47:
+            case 53:
                 {
-                alt32=1;
+                alt31=1;
                 }
                 break;
-            case 48:
+            case 54:
                 {
-                alt32=2;
+                alt31=2;
                 }
                 break;
-            case 49:
+            case 55:
                 {
-                alt32=3;
+                alt31=3;
                 }
                 break;
-            case 50:
+            case 56:
                 {
-                alt32=4;
+                alt31=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 32, 0, input);
+                    new NoViableAltException("", 31, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt32) {
+            switch (alt31) {
                 case 1 :
-                    // InternalSignalDSL.g:1967:3: kw= '=='
+                    // InternalSignalDSL.g:2291:3: kw= '=='
                     {
-                    kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -5574,9 +6474,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:1973:3: kw= '!='
+                    // InternalSignalDSL.g:2297:3: kw= '!='
                     {
-                    kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -5587,9 +6487,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:1979:3: kw= '==='
+                    // InternalSignalDSL.g:2303:3: kw= '==='
                     {
-                    kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -5600,9 +6500,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:1985:3: kw= '!=='
+                    // InternalSignalDSL.g:2309:3: kw= '!=='
                     {
-                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -5637,7 +6537,7 @@
 
 
     // $ANTLR start "entryRuleXRelationalExpression"
-    // InternalSignalDSL.g:1994:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    // InternalSignalDSL.g:2318:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
     public final EObject entryRuleXRelationalExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5645,8 +6545,8 @@
 
 
         try {
-            // InternalSignalDSL.g:1994:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // InternalSignalDSL.g:1995:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            // InternalSignalDSL.g:2318:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalSignalDSL.g:2319:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
@@ -5677,7 +6577,7 @@
 
 
     // $ANTLR start "ruleXRelationalExpression"
-    // InternalSignalDSL.g:2001:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    // InternalSignalDSL.g:2325:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
     public final EObject ruleXRelationalExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5693,11 +6593,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2007:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
-            // InternalSignalDSL.g:2008:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalSignalDSL.g:2331:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalSignalDSL.g:2332:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
             {
-            // InternalSignalDSL.g:2008:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
-            // InternalSignalDSL.g:2009:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalSignalDSL.g:2332:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalSignalDSL.g:2333:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -5715,50 +6615,50 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2017:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            loop33:
+            // InternalSignalDSL.g:2341:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop32:
             do {
-                int alt33=3;
+                int alt32=3;
                 switch ( input.LA(1) ) {
-                case 42:
+                case 48:
                     {
-                    int LA33_2 = input.LA(2);
+                    int LA32_2 = input.LA(2);
 
                     if ( (synpred12_InternalSignalDSL()) ) {
-                        alt33=2;
+                        alt32=2;
                     }
 
 
                     }
                     break;
-                case 43:
+                case 49:
                     {
-                    int LA33_3 = input.LA(2);
+                    int LA32_3 = input.LA(2);
 
                     if ( (synpred12_InternalSignalDSL()) ) {
-                        alt33=2;
+                        alt32=2;
                     }
 
 
                     }
                     break;
-                case 51:
+                case 57:
                     {
-                    int LA33_4 = input.LA(2);
+                    int LA32_4 = input.LA(2);
 
                     if ( (synpred11_InternalSignalDSL()) ) {
-                        alt33=1;
+                        alt32=1;
                     }
 
 
                     }
                     break;
-                case 44:
+                case 50:
                     {
-                    int LA33_5 = input.LA(2);
+                    int LA32_5 = input.LA(2);
 
                     if ( (synpred12_InternalSignalDSL()) ) {
-                        alt33=2;
+                        alt32=2;
                     }
 
 
@@ -5767,21 +6667,21 @@
 
                 }
 
-                switch (alt33) {
+                switch (alt32) {
             	case 1 :
-            	    // InternalSignalDSL.g:2018:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalSignalDSL.g:2342:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
             	    {
-            	    // InternalSignalDSL.g:2018:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // InternalSignalDSL.g:2019:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:2342:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalSignalDSL.g:2343:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalSignalDSL.g:2019:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // InternalSignalDSL.g:2020:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    // InternalSignalDSL.g:2343:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalSignalDSL.g:2344:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
             	    {
-            	    // InternalSignalDSL.g:2026:6: ( () otherlv_2= 'instanceof' )
-            	    // InternalSignalDSL.g:2027:7: () otherlv_2= 'instanceof'
+            	    // InternalSignalDSL.g:2350:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalSignalDSL.g:2351:7: () otherlv_2= 'instanceof'
             	    {
-            	    // InternalSignalDSL.g:2027:7: ()
-            	    // InternalSignalDSL.g:2028:8: 
+            	    // InternalSignalDSL.g:2351:7: ()
+            	    // InternalSignalDSL.g:2352:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5793,7 +6693,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,51,FOLLOW_41); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,57,FOLLOW_41); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
@@ -5805,11 +6705,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2040:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalSignalDSL.g:2041:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:2364:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:2365:6: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalSignalDSL.g:2041:6: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalSignalDSL.g:2042:7: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalSignalDSL.g:2365:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:2366:7: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5847,19 +6747,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalSignalDSL.g:2061:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalSignalDSL.g:2385:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
             	    {
-            	    // InternalSignalDSL.g:2061:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // InternalSignalDSL.g:2062:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalSignalDSL.g:2385:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalSignalDSL.g:2386:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2062:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // InternalSignalDSL.g:2063:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    // InternalSignalDSL.g:2386:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalSignalDSL.g:2387:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
             	    {
-            	    // InternalSignalDSL.g:2073:6: ( () ( ( ruleOpCompare ) ) )
-            	    // InternalSignalDSL.g:2074:7: () ( ( ruleOpCompare ) )
+            	    // InternalSignalDSL.g:2397:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalSignalDSL.g:2398:7: () ( ( ruleOpCompare ) )
             	    {
-            	    // InternalSignalDSL.g:2074:7: ()
-            	    // InternalSignalDSL.g:2075:8: 
+            	    // InternalSignalDSL.g:2398:7: ()
+            	    // InternalSignalDSL.g:2399:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5871,11 +6771,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2081:7: ( ( ruleOpCompare ) )
-            	    // InternalSignalDSL.g:2082:8: ( ruleOpCompare )
+            	    // InternalSignalDSL.g:2405:7: ( ( ruleOpCompare ) )
+            	    // InternalSignalDSL.g:2406:8: ( ruleOpCompare )
             	    {
-            	    // InternalSignalDSL.g:2082:8: ( ruleOpCompare )
-            	    // InternalSignalDSL.g:2083:9: ruleOpCompare
+            	    // InternalSignalDSL.g:2406:8: ( ruleOpCompare )
+            	    // InternalSignalDSL.g:2407:9: ruleOpCompare
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5911,11 +6811,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2099:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // InternalSignalDSL.g:2100:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalSignalDSL.g:2423:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalSignalDSL.g:2424:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
             	    {
-            	    // InternalSignalDSL.g:2100:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // InternalSignalDSL.g:2101:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    // InternalSignalDSL.g:2424:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalSignalDSL.g:2425:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -5954,7 +6854,7 @@
             	    break;
 
             	default :
-            	    break loop33;
+            	    break loop32;
                 }
             } while (true);
 
@@ -5983,7 +6883,7 @@
 
 
     // $ANTLR start "entryRuleOpCompare"
-    // InternalSignalDSL.g:2124:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    // InternalSignalDSL.g:2448:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
     public final String entryRuleOpCompare() throws RecognitionException {
         String current = null;
 
@@ -5991,8 +6891,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2124:49: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // InternalSignalDSL.g:2125:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalSignalDSL.g:2448:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalSignalDSL.g:2449:2: iv_ruleOpCompare= ruleOpCompare EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpCompareRule()); 
@@ -6023,7 +6923,7 @@
 
 
     // $ANTLR start "ruleOpCompare"
-    // InternalSignalDSL.g:2131:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
+    // InternalSignalDSL.g:2455:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
     public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -6033,54 +6933,54 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2137:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // InternalSignalDSL.g:2138:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalSignalDSL.g:2461:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalSignalDSL.g:2462:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
             {
-            // InternalSignalDSL.g:2138:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
-            int alt34=4;
+            // InternalSignalDSL.g:2462:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt33=4;
             switch ( input.LA(1) ) {
-            case 44:
+            case 50:
                 {
-                alt34=1;
+                alt33=1;
                 }
                 break;
-            case 42:
+            case 48:
                 {
-                int LA34_2 = input.LA(2);
+                int LA33_2 = input.LA(2);
 
-                if ( (LA34_2==EOF||(LA34_2>=RULE_STRING && LA34_2<=RULE_DECIMAL)||LA34_2==14||LA34_2==18||(LA34_2>=23 && LA34_2<=25)||LA34_2==30||(LA34_2>=34 && LA34_2<=35)||LA34_2==42||(LA34_2>=58 && LA34_2<=59)||LA34_2==63||LA34_2==71||LA34_2==73||(LA34_2>=77 && LA34_2<=78)||(LA34_2>=81 && LA34_2<=90)||LA34_2==92) ) {
-                    alt34=4;
+                if ( (LA33_2==EOF||(LA33_2>=RULE_STRING && LA33_2<=RULE_DECIMAL)||LA33_2==14||(LA33_2>=29 && LA33_2<=31)||LA33_2==36||(LA33_2>=40 && LA33_2<=41)||LA33_2==48||(LA33_2>=64 && LA33_2<=65)||LA33_2==69||LA33_2==77||LA33_2==79||(LA33_2>=82 && LA33_2<=84)||(LA33_2>=87 && LA33_2<=96)||LA33_2==98) ) {
+                    alt33=4;
                 }
-                else if ( (LA34_2==33) ) {
-                    alt34=2;
+                else if ( (LA33_2==39) ) {
+                    alt33=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 34, 2, input);
+                        new NoViableAltException("", 33, 2, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 43:
+            case 49:
                 {
-                alt34=3;
+                alt33=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 34, 0, input);
+                    new NoViableAltException("", 33, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt34) {
+            switch (alt33) {
                 case 1 :
-                    // InternalSignalDSL.g:2139:3: kw= '>='
+                    // InternalSignalDSL.g:2463:3: kw= '>='
                     {
-                    kw=(Token)match(input,44,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6091,19 +6991,19 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2145:3: (kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:2469:3: (kw= '<' kw= '=' )
                     {
-                    // InternalSignalDSL.g:2145:3: (kw= '<' kw= '=' )
-                    // InternalSignalDSL.g:2146:4: kw= '<' kw= '='
+                    // InternalSignalDSL.g:2469:3: (kw= '<' kw= '=' )
+                    // InternalSignalDSL.g:2470:4: kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,42,FOLLOW_27); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_27); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    kw=(Token)match(input,33,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,39,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -6117,9 +7017,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2158:3: kw= '>'
+                    // InternalSignalDSL.g:2482:3: kw= '>'
                     {
-                    kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6130,9 +7030,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2164:3: kw= '<'
+                    // InternalSignalDSL.g:2488:3: kw= '<'
                     {
-                    kw=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6167,7 +7067,7 @@
 
 
     // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // InternalSignalDSL.g:2173:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    // InternalSignalDSL.g:2497:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
     public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6175,8 +7075,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2173:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // InternalSignalDSL.g:2174:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalSignalDSL.g:2497:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalSignalDSL.g:2498:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
@@ -6207,7 +7107,7 @@
 
 
     // $ANTLR start "ruleXOtherOperatorExpression"
-    // InternalSignalDSL.g:2180:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
+    // InternalSignalDSL.g:2504:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
     public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6220,11 +7120,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2186:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // InternalSignalDSL.g:2187:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalSignalDSL.g:2510:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalSignalDSL.g:2511:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
             {
-            // InternalSignalDSL.g:2187:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // InternalSignalDSL.g:2188:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalSignalDSL.g:2511:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalSignalDSL.g:2512:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -6242,23 +7142,23 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2196:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
-            loop35:
+            // InternalSignalDSL.g:2520:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop34:
             do {
-                int alt35=2;
-                alt35 = dfa35.predict(input);
-                switch (alt35) {
+                int alt34=2;
+                alt34 = dfa34.predict(input);
+                switch (alt34) {
             	case 1 :
-            	    // InternalSignalDSL.g:2197:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalSignalDSL.g:2521:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2197:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // InternalSignalDSL.g:2198:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalSignalDSL.g:2521:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalSignalDSL.g:2522:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
             	    {
-            	    // InternalSignalDSL.g:2208:5: ( () ( ( ruleOpOther ) ) )
-            	    // InternalSignalDSL.g:2209:6: () ( ( ruleOpOther ) )
+            	    // InternalSignalDSL.g:2532:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalSignalDSL.g:2533:6: () ( ( ruleOpOther ) )
             	    {
-            	    // InternalSignalDSL.g:2209:6: ()
-            	    // InternalSignalDSL.g:2210:7: 
+            	    // InternalSignalDSL.g:2533:6: ()
+            	    // InternalSignalDSL.g:2534:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -6270,11 +7170,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2216:6: ( ( ruleOpOther ) )
-            	    // InternalSignalDSL.g:2217:7: ( ruleOpOther )
+            	    // InternalSignalDSL.g:2540:6: ( ( ruleOpOther ) )
+            	    // InternalSignalDSL.g:2541:7: ( ruleOpOther )
             	    {
-            	    // InternalSignalDSL.g:2217:7: ( ruleOpOther )
-            	    // InternalSignalDSL.g:2218:8: ruleOpOther
+            	    // InternalSignalDSL.g:2541:7: ( ruleOpOther )
+            	    // InternalSignalDSL.g:2542:8: ruleOpOther
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -6310,11 +7210,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2234:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // InternalSignalDSL.g:2235:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalSignalDSL.g:2558:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalSignalDSL.g:2559:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
             	    {
-            	    // InternalSignalDSL.g:2235:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // InternalSignalDSL.g:2236:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    // InternalSignalDSL.g:2559:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalSignalDSL.g:2560:6: lv_rightOperand_3_0= ruleXAdditiveExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -6350,7 +7250,7 @@
             	    break;
 
             	default :
-            	    break loop35;
+            	    break loop34;
                 }
             } while (true);
 
@@ -6379,7 +7279,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // InternalSignalDSL.g:2258:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalSignalDSL.g:2582:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -6387,8 +7287,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2258:47: (iv_ruleOpOther= ruleOpOther EOF )
-            // InternalSignalDSL.g:2259:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalSignalDSL.g:2582:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalSignalDSL.g:2583:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
@@ -6419,7 +7319,7 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // InternalSignalDSL.g:2265:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalSignalDSL.g:2589:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
     public final AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -6429,17 +7329,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2271:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // InternalSignalDSL.g:2272:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalSignalDSL.g:2595:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalSignalDSL.g:2596:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // InternalSignalDSL.g:2272:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
-            int alt38=9;
-            alt38 = dfa38.predict(input);
-            switch (alt38) {
+            // InternalSignalDSL.g:2596:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt37=9;
+            alt37 = dfa37.predict(input);
+            switch (alt37) {
                 case 1 :
-                    // InternalSignalDSL.g:2273:3: kw= '->'
+                    // InternalSignalDSL.g:2597:3: kw= '->'
                     {
-                    kw=(Token)match(input,52,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6450,9 +7350,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2279:3: kw= '..<'
+                    // InternalSignalDSL.g:2603:3: kw= '..<'
                     {
-                    kw=(Token)match(input,53,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6463,19 +7363,19 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2285:3: (kw= '>' kw= '..' )
+                    // InternalSignalDSL.g:2609:3: (kw= '>' kw= '..' )
                     {
-                    // InternalSignalDSL.g:2285:3: (kw= '>' kw= '..' )
-                    // InternalSignalDSL.g:2286:4: kw= '>' kw= '..'
+                    // InternalSignalDSL.g:2609:3: (kw= '>' kw= '..' )
+                    // InternalSignalDSL.g:2610:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,43,FOLLOW_43); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_43); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0());
                       			
                     }
-                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
@@ -6489,9 +7389,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2298:3: kw= '..'
+                    // InternalSignalDSL.g:2622:3: kw= '..'
                     {
-                    kw=(Token)match(input,54,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6502,9 +7402,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:2304:3: kw= '=>'
+                    // InternalSignalDSL.g:2628:3: kw= '=>'
                     {
-                    kw=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6515,35 +7415,35 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:2310:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalSignalDSL.g:2634:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // InternalSignalDSL.g:2310:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // InternalSignalDSL.g:2311:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalSignalDSL.g:2634:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalSignalDSL.g:2635:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,43,FOLLOW_44); if (state.failed) return current;
+                    kw=(Token)match(input,49,FOLLOW_44); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0());
                       			
                     }
-                    // InternalSignalDSL.g:2316:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
-                    int alt36=2;
-                    int LA36_0 = input.LA(1);
+                    // InternalSignalDSL.g:2640:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt35=2;
+                    int LA35_0 = input.LA(1);
 
-                    if ( (LA36_0==43) ) {
-                        int LA36_1 = input.LA(2);
+                    if ( (LA35_0==49) ) {
+                        int LA35_1 = input.LA(2);
 
-                        if ( (LA36_1==43) && (synpred14_InternalSignalDSL())) {
-                            alt36=1;
+                        if ( (LA35_1==EOF||(LA35_1>=RULE_STRING && LA35_1<=RULE_DECIMAL)||LA35_1==14||(LA35_1>=29 && LA35_1<=31)||LA35_1==36||(LA35_1>=40 && LA35_1<=41)||LA35_1==48||(LA35_1>=64 && LA35_1<=65)||LA35_1==69||LA35_1==77||LA35_1==79||(LA35_1>=82 && LA35_1<=84)||(LA35_1>=87 && LA35_1<=96)||LA35_1==98) ) {
+                            alt35=2;
                         }
-                        else if ( (LA36_1==EOF||(LA36_1>=RULE_STRING && LA36_1<=RULE_DECIMAL)||LA36_1==14||LA36_1==18||(LA36_1>=23 && LA36_1<=25)||LA36_1==30||(LA36_1>=34 && LA36_1<=35)||LA36_1==42||(LA36_1>=58 && LA36_1<=59)||LA36_1==63||LA36_1==71||LA36_1==73||(LA36_1>=77 && LA36_1<=78)||(LA36_1>=81 && LA36_1<=90)||LA36_1==92) ) {
-                            alt36=2;
+                        else if ( (LA35_1==49) && (synpred14_InternalSignalDSL())) {
+                            alt35=1;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 36, 1, input);
+                                new NoViableAltException("", 35, 1, input);
 
                             throw nvae;
                         }
@@ -6551,28 +7451,28 @@
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 36, 0, input);
+                            new NoViableAltException("", 35, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt36) {
+                    switch (alt35) {
                         case 1 :
-                            // InternalSignalDSL.g:2317:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalSignalDSL.g:2641:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // InternalSignalDSL.g:2317:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // InternalSignalDSL.g:2318:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalSignalDSL.g:2641:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalSignalDSL.g:2642:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // InternalSignalDSL.g:2323:6: (kw= '>' kw= '>' )
-                            // InternalSignalDSL.g:2324:7: kw= '>' kw= '>'
+                            // InternalSignalDSL.g:2647:6: (kw= '>' kw= '>' )
+                            // InternalSignalDSL.g:2648:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,43,FOLLOW_44); if (state.failed) return current;
+                            kw=(Token)match(input,49,FOLLOW_44); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
                               							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0());
                               						
                             }
-                            kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -6589,9 +7489,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:2337:5: kw= '>'
+                            // InternalSignalDSL.g:2661:5: kw= '>'
                             {
-                            kw=(Token)match(input,43,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -6611,67 +7511,67 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:2345:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalSignalDSL.g:2669:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // InternalSignalDSL.g:2345:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // InternalSignalDSL.g:2346:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalSignalDSL.g:2669:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalSignalDSL.g:2670:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,42,FOLLOW_45); if (state.failed) return current;
+                    kw=(Token)match(input,48,FOLLOW_45); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current.merge(kw);
                       				newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0());
                       			
                     }
-                    // InternalSignalDSL.g:2351:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
-                    int alt37=3;
-                    int LA37_0 = input.LA(1);
+                    // InternalSignalDSL.g:2675:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt36=3;
+                    int LA36_0 = input.LA(1);
 
-                    if ( (LA37_0==42) ) {
-                        int LA37_1 = input.LA(2);
+                    if ( (LA36_0==48) ) {
+                        int LA36_1 = input.LA(2);
 
                         if ( (synpred15_InternalSignalDSL()) ) {
-                            alt37=1;
+                            alt36=1;
                         }
                         else if ( (true) ) {
-                            alt37=2;
+                            alt36=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 37, 1, input);
+                                new NoViableAltException("", 36, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA37_0==55) ) {
-                        alt37=3;
+                    else if ( (LA36_0==61) ) {
+                        alt36=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 37, 0, input);
+                            new NoViableAltException("", 36, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt37) {
+                    switch (alt36) {
                         case 1 :
-                            // InternalSignalDSL.g:2352:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalSignalDSL.g:2676:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // InternalSignalDSL.g:2352:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // InternalSignalDSL.g:2353:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalSignalDSL.g:2676:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalSignalDSL.g:2677:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // InternalSignalDSL.g:2358:6: (kw= '<' kw= '<' )
-                            // InternalSignalDSL.g:2359:7: kw= '<' kw= '<'
+                            // InternalSignalDSL.g:2682:6: (kw= '<' kw= '<' )
+                            // InternalSignalDSL.g:2683:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,42,FOLLOW_34); if (state.failed) return current;
+                            kw=(Token)match(input,48,FOLLOW_34); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
                               							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0());
                               						
                             }
-                            kw=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							current.merge(kw);
@@ -6688,9 +7588,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:2372:5: kw= '<'
+                            // InternalSignalDSL.g:2696:5: kw= '<'
                             {
-                            kw=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,48,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -6701,9 +7601,9 @@
                             }
                             break;
                         case 3 :
-                            // InternalSignalDSL.g:2378:5: kw= '=>'
+                            // InternalSignalDSL.g:2702:5: kw= '=>'
                             {
-                            kw=(Token)match(input,55,FOLLOW_2); if (state.failed) return current;
+                            kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
@@ -6723,9 +7623,9 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:2386:3: kw= '<>'
+                    // InternalSignalDSL.g:2710:3: kw= '<>'
                     {
-                    kw=(Token)match(input,56,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6736,9 +7636,9 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:2392:3: kw= '?:'
+                    // InternalSignalDSL.g:2716:3: kw= '?:'
                     {
-                    kw=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -6773,7 +7673,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // InternalSignalDSL.g:2401:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalSignalDSL.g:2725:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6781,8 +7681,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2401:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // InternalSignalDSL.g:2402:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalSignalDSL.g:2725:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalSignalDSL.g:2726:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
@@ -6813,7 +7713,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // InternalSignalDSL.g:2408:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalSignalDSL.g:2732:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
     public final EObject ruleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6826,11 +7726,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2414:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // InternalSignalDSL.g:2415:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalSignalDSL.g:2738:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalSignalDSL.g:2739:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // InternalSignalDSL.g:2415:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // InternalSignalDSL.g:2416:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalSignalDSL.g:2739:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalSignalDSL.g:2740:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -6848,44 +7748,44 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2424:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
-            loop39:
+            // InternalSignalDSL.g:2748:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop38:
             do {
-                int alt39=2;
-                int LA39_0 = input.LA(1);
+                int alt38=2;
+                int LA38_0 = input.LA(1);
 
-                if ( (LA39_0==58) ) {
-                    int LA39_2 = input.LA(2);
+                if ( (LA38_0==64) ) {
+                    int LA38_2 = input.LA(2);
 
                     if ( (synpred16_InternalSignalDSL()) ) {
-                        alt39=1;
+                        alt38=1;
                     }
 
 
                 }
-                else if ( (LA39_0==59) ) {
-                    int LA39_3 = input.LA(2);
+                else if ( (LA38_0==65) ) {
+                    int LA38_3 = input.LA(2);
 
                     if ( (synpred16_InternalSignalDSL()) ) {
-                        alt39=1;
+                        alt38=1;
                     }
 
 
                 }
 
 
-                switch (alt39) {
+                switch (alt38) {
             	case 1 :
-            	    // InternalSignalDSL.g:2425:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalSignalDSL.g:2749:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // InternalSignalDSL.g:2425:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // InternalSignalDSL.g:2426:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalSignalDSL.g:2749:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalSignalDSL.g:2750:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // InternalSignalDSL.g:2436:5: ( () ( ( ruleOpAdd ) ) )
-            	    // InternalSignalDSL.g:2437:6: () ( ( ruleOpAdd ) )
+            	    // InternalSignalDSL.g:2760:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalSignalDSL.g:2761:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // InternalSignalDSL.g:2437:6: ()
-            	    // InternalSignalDSL.g:2438:7: 
+            	    // InternalSignalDSL.g:2761:6: ()
+            	    // InternalSignalDSL.g:2762:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -6897,11 +7797,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2444:6: ( ( ruleOpAdd ) )
-            	    // InternalSignalDSL.g:2445:7: ( ruleOpAdd )
+            	    // InternalSignalDSL.g:2768:6: ( ( ruleOpAdd ) )
+            	    // InternalSignalDSL.g:2769:7: ( ruleOpAdd )
             	    {
-            	    // InternalSignalDSL.g:2445:7: ( ruleOpAdd )
-            	    // InternalSignalDSL.g:2446:8: ruleOpAdd
+            	    // InternalSignalDSL.g:2769:7: ( ruleOpAdd )
+            	    // InternalSignalDSL.g:2770:8: ruleOpAdd
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -6937,11 +7837,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2462:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // InternalSignalDSL.g:2463:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalSignalDSL.g:2786:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalSignalDSL.g:2787:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // InternalSignalDSL.g:2463:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // InternalSignalDSL.g:2464:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalSignalDSL.g:2787:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalSignalDSL.g:2788:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -6977,7 +7877,7 @@
             	    break;
 
             	default :
-            	    break loop39;
+            	    break loop38;
                 }
             } while (true);
 
@@ -7006,7 +7906,7 @@
 
 
     // $ANTLR start "entryRuleOpAdd"
-    // InternalSignalDSL.g:2486:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    // InternalSignalDSL.g:2810:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
     public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
@@ -7014,8 +7914,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2486:45: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // InternalSignalDSL.g:2487:2: iv_ruleOpAdd= ruleOpAdd EOF
+            // InternalSignalDSL.g:2810:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalSignalDSL.g:2811:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpAddRule()); 
@@ -7046,7 +7946,7 @@
 
 
     // $ANTLR start "ruleOpAdd"
-    // InternalSignalDSL.g:2493:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    // InternalSignalDSL.g:2817:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
     public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -7056,31 +7956,31 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2499:2: ( (kw= '+' | kw= '-' ) )
-            // InternalSignalDSL.g:2500:2: (kw= '+' | kw= '-' )
+            // InternalSignalDSL.g:2823:2: ( (kw= '+' | kw= '-' ) )
+            // InternalSignalDSL.g:2824:2: (kw= '+' | kw= '-' )
             {
-            // InternalSignalDSL.g:2500:2: (kw= '+' | kw= '-' )
-            int alt40=2;
-            int LA40_0 = input.LA(1);
+            // InternalSignalDSL.g:2824:2: (kw= '+' | kw= '-' )
+            int alt39=2;
+            int LA39_0 = input.LA(1);
 
-            if ( (LA40_0==58) ) {
-                alt40=1;
+            if ( (LA39_0==64) ) {
+                alt39=1;
             }
-            else if ( (LA40_0==59) ) {
-                alt40=2;
+            else if ( (LA39_0==65) ) {
+                alt39=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 40, 0, input);
+                    new NoViableAltException("", 39, 0, input);
 
                 throw nvae;
             }
-            switch (alt40) {
+            switch (alt39) {
                 case 1 :
-                    // InternalSignalDSL.g:2501:3: kw= '+'
+                    // InternalSignalDSL.g:2825:3: kw= '+'
                     {
-                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7091,9 +7991,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2507:3: kw= '-'
+                    // InternalSignalDSL.g:2831:3: kw= '-'
                     {
-                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7128,7 +8028,7 @@
 
 
     // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // InternalSignalDSL.g:2516:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    // InternalSignalDSL.g:2840:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
     public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7136,8 +8036,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2516:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // InternalSignalDSL.g:2517:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            // InternalSignalDSL.g:2840:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalSignalDSL.g:2841:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
@@ -7168,7 +8068,7 @@
 
 
     // $ANTLR start "ruleXMultiplicativeExpression"
-    // InternalSignalDSL.g:2523:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
+    // InternalSignalDSL.g:2847:1: ruleXMultiplicativeExpression returns [EObject current=null] : (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) ;
     public final EObject ruleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7181,11 +8081,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2529:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // InternalSignalDSL.g:2530:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalSignalDSL.g:2853:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalSignalDSL.g:2854:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
             {
-            // InternalSignalDSL.g:2530:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // InternalSignalDSL.g:2531:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            // InternalSignalDSL.g:2854:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalSignalDSL.g:2855:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -7203,50 +8103,50 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2539:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
-            loop41:
+            // InternalSignalDSL.g:2863:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop40:
             do {
-                int alt41=2;
+                int alt40=2;
                 switch ( input.LA(1) ) {
-                case 26:
+                case 32:
                     {
-                    int LA41_2 = input.LA(2);
+                    int LA40_2 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt41=1;
+                        alt40=1;
                     }
 
 
                     }
                     break;
-                case 60:
+                case 66:
                     {
-                    int LA41_3 = input.LA(2);
+                    int LA40_3 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt41=1;
+                        alt40=1;
                     }
 
 
                     }
                     break;
-                case 61:
+                case 67:
                     {
-                    int LA41_4 = input.LA(2);
+                    int LA40_4 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt41=1;
+                        alt40=1;
                     }
 
 
                     }
                     break;
-                case 62:
+                case 68:
                     {
-                    int LA41_5 = input.LA(2);
+                    int LA40_5 = input.LA(2);
 
                     if ( (synpred17_InternalSignalDSL()) ) {
-                        alt41=1;
+                        alt40=1;
                     }
 
 
@@ -7255,18 +8155,18 @@
 
                 }
 
-                switch (alt41) {
+                switch (alt40) {
             	case 1 :
-            	    // InternalSignalDSL.g:2540:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalSignalDSL.g:2864:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
             	    {
-            	    // InternalSignalDSL.g:2540:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
-            	    // InternalSignalDSL.g:2541:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    // InternalSignalDSL.g:2864:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalSignalDSL.g:2865:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
             	    {
-            	    // InternalSignalDSL.g:2551:5: ( () ( ( ruleOpMulti ) ) )
-            	    // InternalSignalDSL.g:2552:6: () ( ( ruleOpMulti ) )
+            	    // InternalSignalDSL.g:2875:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalSignalDSL.g:2876:6: () ( ( ruleOpMulti ) )
             	    {
-            	    // InternalSignalDSL.g:2552:6: ()
-            	    // InternalSignalDSL.g:2553:7: 
+            	    // InternalSignalDSL.g:2876:6: ()
+            	    // InternalSignalDSL.g:2877:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7278,11 +8178,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2559:6: ( ( ruleOpMulti ) )
-            	    // InternalSignalDSL.g:2560:7: ( ruleOpMulti )
+            	    // InternalSignalDSL.g:2883:6: ( ( ruleOpMulti ) )
+            	    // InternalSignalDSL.g:2884:7: ( ruleOpMulti )
             	    {
-            	    // InternalSignalDSL.g:2560:7: ( ruleOpMulti )
-            	    // InternalSignalDSL.g:2561:8: ruleOpMulti
+            	    // InternalSignalDSL.g:2884:7: ( ruleOpMulti )
+            	    // InternalSignalDSL.g:2885:8: ruleOpMulti
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7318,11 +8218,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2577:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    // InternalSignalDSL.g:2578:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalSignalDSL.g:2901:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalSignalDSL.g:2902:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
             	    {
-            	    // InternalSignalDSL.g:2578:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    // InternalSignalDSL.g:2579:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    // InternalSignalDSL.g:2902:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalSignalDSL.g:2903:6: lv_rightOperand_3_0= ruleXUnaryOperation
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -7358,7 +8258,7 @@
             	    break;
 
             	default :
-            	    break loop41;
+            	    break loop40;
                 }
             } while (true);
 
@@ -7387,7 +8287,7 @@
 
 
     // $ANTLR start "entryRuleOpMulti"
-    // InternalSignalDSL.g:2601:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    // InternalSignalDSL.g:2925:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
     public final String entryRuleOpMulti() throws RecognitionException {
         String current = null;
 
@@ -7395,8 +8295,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2601:47: (iv_ruleOpMulti= ruleOpMulti EOF )
-            // InternalSignalDSL.g:2602:2: iv_ruleOpMulti= ruleOpMulti EOF
+            // InternalSignalDSL.g:2925:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalSignalDSL.g:2926:2: iv_ruleOpMulti= ruleOpMulti EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiRule()); 
@@ -7427,7 +8327,7 @@
 
 
     // $ANTLR start "ruleOpMulti"
-    // InternalSignalDSL.g:2608:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
+    // InternalSignalDSL.g:2932:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
     public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -7437,45 +8337,45 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2614:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
-            // InternalSignalDSL.g:2615:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalSignalDSL.g:2938:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalSignalDSL.g:2939:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
             {
-            // InternalSignalDSL.g:2615:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
-            int alt42=4;
+            // InternalSignalDSL.g:2939:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt41=4;
             switch ( input.LA(1) ) {
-            case 26:
+            case 32:
                 {
-                alt42=1;
+                alt41=1;
                 }
                 break;
-            case 60:
+            case 66:
                 {
-                alt42=2;
+                alt41=2;
                 }
                 break;
-            case 61:
+            case 67:
                 {
-                alt42=3;
+                alt41=3;
                 }
                 break;
-            case 62:
+            case 68:
                 {
-                alt42=4;
+                alt41=4;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 42, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt42) {
+            switch (alt41) {
                 case 1 :
-                    // InternalSignalDSL.g:2616:3: kw= '*'
+                    // InternalSignalDSL.g:2940:3: kw= '*'
                     {
-                    kw=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7486,9 +8386,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2622:3: kw= '**'
+                    // InternalSignalDSL.g:2946:3: kw= '**'
                     {
-                    kw=(Token)match(input,60,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7499,9 +8399,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2628:3: kw= '/'
+                    // InternalSignalDSL.g:2952:3: kw= '/'
                     {
-                    kw=(Token)match(input,61,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7512,9 +8412,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:2634:3: kw= '%'
+                    // InternalSignalDSL.g:2958:3: kw= '%'
                     {
-                    kw=(Token)match(input,62,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,68,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7549,7 +8449,7 @@
 
 
     // $ANTLR start "entryRuleXUnaryOperation"
-    // InternalSignalDSL.g:2643:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    // InternalSignalDSL.g:2967:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
     public final EObject entryRuleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -7557,8 +8457,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2643:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
-            // InternalSignalDSL.g:2644:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            // InternalSignalDSL.g:2967:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalSignalDSL.g:2968:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
@@ -7589,7 +8489,7 @@
 
 
     // $ANTLR start "ruleXUnaryOperation"
-    // InternalSignalDSL.g:2650:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
+    // InternalSignalDSL.g:2974:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
     public final EObject ruleXUnaryOperation() throws RecognitionException {
         EObject current = null;
 
@@ -7602,35 +8502,35 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2656:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
-            // InternalSignalDSL.g:2657:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            // InternalSignalDSL.g:2980:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalSignalDSL.g:2981:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
             {
-            // InternalSignalDSL.g:2657:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
-            int alt43=2;
-            int LA43_0 = input.LA(1);
+            // InternalSignalDSL.g:2981:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
 
-            if ( ((LA43_0>=58 && LA43_0<=59)||LA43_0==63) ) {
-                alt43=1;
+            if ( ((LA42_0>=64 && LA42_0<=65)||LA42_0==69) ) {
+                alt42=1;
             }
-            else if ( ((LA43_0>=RULE_STRING && LA43_0<=RULE_DECIMAL)||LA43_0==14||LA43_0==18||(LA43_0>=23 && LA43_0<=25)||LA43_0==30||(LA43_0>=34 && LA43_0<=35)||LA43_0==42||LA43_0==71||LA43_0==73||(LA43_0>=77 && LA43_0<=78)||(LA43_0>=81 && LA43_0<=90)||LA43_0==92) ) {
-                alt43=2;
+            else if ( ((LA42_0>=RULE_STRING && LA42_0<=RULE_DECIMAL)||LA42_0==14||(LA42_0>=29 && LA42_0<=31)||LA42_0==36||(LA42_0>=40 && LA42_0<=41)||LA42_0==48||LA42_0==77||LA42_0==79||(LA42_0>=82 && LA42_0<=84)||(LA42_0>=87 && LA42_0<=96)||LA42_0==98) ) {
+                alt42=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 42, 0, input);
 
                 throw nvae;
             }
-            switch (alt43) {
+            switch (alt42) {
                 case 1 :
-                    // InternalSignalDSL.g:2658:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalSignalDSL.g:2982:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
                     {
-                    // InternalSignalDSL.g:2658:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    // InternalSignalDSL.g:2659:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalSignalDSL.g:2982:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalSignalDSL.g:2983:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
                     {
-                    // InternalSignalDSL.g:2659:4: ()
-                    // InternalSignalDSL.g:2660:5: 
+                    // InternalSignalDSL.g:2983:4: ()
+                    // InternalSignalDSL.g:2984:5: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7642,11 +8542,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:2666:4: ( ( ruleOpUnary ) )
-                    // InternalSignalDSL.g:2667:5: ( ruleOpUnary )
+                    // InternalSignalDSL.g:2990:4: ( ( ruleOpUnary ) )
+                    // InternalSignalDSL.g:2991:5: ( ruleOpUnary )
                     {
-                    // InternalSignalDSL.g:2667:5: ( ruleOpUnary )
-                    // InternalSignalDSL.g:2668:6: ruleOpUnary
+                    // InternalSignalDSL.g:2991:5: ( ruleOpUnary )
+                    // InternalSignalDSL.g:2992:6: ruleOpUnary
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7676,11 +8576,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:2682:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    // InternalSignalDSL.g:2683:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalSignalDSL.g:3006:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalSignalDSL.g:3007:5: (lv_operand_2_0= ruleXUnaryOperation )
                     {
-                    // InternalSignalDSL.g:2683:5: (lv_operand_2_0= ruleXUnaryOperation )
-                    // InternalSignalDSL.g:2684:6: lv_operand_2_0= ruleXUnaryOperation
+                    // InternalSignalDSL.g:3007:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalSignalDSL.g:3008:6: lv_operand_2_0= ruleXUnaryOperation
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7718,7 +8618,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2703:3: this_XCastedExpression_3= ruleXCastedExpression
+                    // InternalSignalDSL.g:3027:3: this_XCastedExpression_3= ruleXCastedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -7764,7 +8664,7 @@
 
 
     // $ANTLR start "entryRuleOpUnary"
-    // InternalSignalDSL.g:2715:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    // InternalSignalDSL.g:3039:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
     public final String entryRuleOpUnary() throws RecognitionException {
         String current = null;
 
@@ -7772,8 +8672,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2715:47: (iv_ruleOpUnary= ruleOpUnary EOF )
-            // InternalSignalDSL.g:2716:2: iv_ruleOpUnary= ruleOpUnary EOF
+            // InternalSignalDSL.g:3039:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalSignalDSL.g:3040:2: iv_ruleOpUnary= ruleOpUnary EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpUnaryRule()); 
@@ -7804,7 +8704,7 @@
 
 
     // $ANTLR start "ruleOpUnary"
-    // InternalSignalDSL.g:2722:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    // InternalSignalDSL.g:3046:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
     public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -7814,40 +8714,40 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2728:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
-            // InternalSignalDSL.g:2729:2: (kw= '!' | kw= '-' | kw= '+' )
+            // InternalSignalDSL.g:3052:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalSignalDSL.g:3053:2: (kw= '!' | kw= '-' | kw= '+' )
             {
-            // InternalSignalDSL.g:2729:2: (kw= '!' | kw= '-' | kw= '+' )
-            int alt44=3;
+            // InternalSignalDSL.g:3053:2: (kw= '!' | kw= '-' | kw= '+' )
+            int alt43=3;
             switch ( input.LA(1) ) {
-            case 63:
+            case 69:
                 {
-                alt44=1;
+                alt43=1;
                 }
                 break;
-            case 59:
+            case 65:
                 {
-                alt44=2;
+                alt43=2;
                 }
                 break;
-            case 58:
+            case 64:
                 {
-                alt44=3;
+                alt43=3;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 44, 0, input);
+                    new NoViableAltException("", 43, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt44) {
+            switch (alt43) {
                 case 1 :
-                    // InternalSignalDSL.g:2730:3: kw= '!'
+                    // InternalSignalDSL.g:3054:3: kw= '!'
                     {
-                    kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,69,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7858,9 +8758,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2736:3: kw= '-'
+                    // InternalSignalDSL.g:3060:3: kw= '-'
                     {
-                    kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7871,9 +8771,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:2742:3: kw= '+'
+                    // InternalSignalDSL.g:3066:3: kw= '+'
                     {
-                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -7908,7 +8808,7 @@
 
 
     // $ANTLR start "entryRuleXCastedExpression"
-    // InternalSignalDSL.g:2751:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    // InternalSignalDSL.g:3075:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
     public final EObject entryRuleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7916,8 +8816,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2751:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
-            // InternalSignalDSL.g:2752:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            // InternalSignalDSL.g:3075:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalSignalDSL.g:3076:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
@@ -7948,7 +8848,7 @@
 
 
     // $ANTLR start "ruleXCastedExpression"
-    // InternalSignalDSL.g:2758:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
+    // InternalSignalDSL.g:3082:1: ruleXCastedExpression returns [EObject current=null] : (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) ;
     public final EObject ruleXCastedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7962,11 +8862,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2764:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
-            // InternalSignalDSL.g:2765:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalSignalDSL.g:3088:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalSignalDSL.g:3089:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
             {
-            // InternalSignalDSL.g:2765:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            // InternalSignalDSL.g:2766:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            // InternalSignalDSL.g:3089:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalSignalDSL.g:3090:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -7984,35 +8884,35 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2774:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
-            loop45:
+            // InternalSignalDSL.g:3098:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop44:
             do {
-                int alt45=2;
-                int LA45_0 = input.LA(1);
+                int alt44=2;
+                int LA44_0 = input.LA(1);
 
-                if ( (LA45_0==64) ) {
-                    int LA45_2 = input.LA(2);
+                if ( (LA44_0==70) ) {
+                    int LA44_2 = input.LA(2);
 
                     if ( (synpred18_InternalSignalDSL()) ) {
-                        alt45=1;
+                        alt44=1;
                     }
 
 
                 }
 
 
-                switch (alt45) {
+                switch (alt44) {
             	case 1 :
-            	    // InternalSignalDSL.g:2775:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:3099:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // InternalSignalDSL.g:2775:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
-            	    // InternalSignalDSL.g:2776:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    // InternalSignalDSL.g:3099:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalSignalDSL.g:3100:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
             	    {
-            	    // InternalSignalDSL.g:2782:5: ( () otherlv_2= 'as' )
-            	    // InternalSignalDSL.g:2783:6: () otherlv_2= 'as'
+            	    // InternalSignalDSL.g:3106:5: ( () otherlv_2= 'as' )
+            	    // InternalSignalDSL.g:3107:6: () otherlv_2= 'as'
             	    {
-            	    // InternalSignalDSL.g:2783:6: ()
-            	    // InternalSignalDSL.g:2784:7: 
+            	    // InternalSignalDSL.g:3107:6: ()
+            	    // InternalSignalDSL.g:3108:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8024,7 +8924,7 @@
 
             	    }
 
-            	    otherlv_2=(Token)match(input,64,FOLLOW_41); if (state.failed) return current;
+            	    otherlv_2=(Token)match(input,70,FOLLOW_41); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
@@ -8036,11 +8936,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2796:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // InternalSignalDSL.g:2797:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:3120:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalSignalDSL.g:3121:5: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // InternalSignalDSL.g:2797:5: (lv_type_3_0= ruleJvmTypeReference )
-            	    // InternalSignalDSL.g:2798:6: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalSignalDSL.g:3121:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalSignalDSL.g:3122:6: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8076,7 +8976,7 @@
             	    break;
 
             	default :
-            	    break loop45;
+            	    break loop44;
                 }
             } while (true);
 
@@ -8105,7 +9005,7 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // InternalSignalDSL.g:2820:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    // InternalSignalDSL.g:3144:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
     public final EObject entryRuleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -8113,8 +9013,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2820:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
-            // InternalSignalDSL.g:2821:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            // InternalSignalDSL.g:3144:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalSignalDSL.g:3145:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
@@ -8145,7 +9045,7 @@
 
 
     // $ANTLR start "ruleXPostfixOperation"
-    // InternalSignalDSL.g:2827:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
+    // InternalSignalDSL.g:3151:1: ruleXPostfixOperation returns [EObject current=null] : (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) ;
     public final EObject ruleXPostfixOperation() throws RecognitionException {
         EObject current = null;
 
@@ -8156,11 +9056,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2833:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
-            // InternalSignalDSL.g:2834:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalSignalDSL.g:3157:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalSignalDSL.g:3158:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
             {
-            // InternalSignalDSL.g:2834:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
-            // InternalSignalDSL.g:2835:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            // InternalSignalDSL.g:3158:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalSignalDSL.g:3159:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
             {
             if ( state.backtracking==0 ) {
 
@@ -8178,33 +9078,33 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2843:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
-            int alt46=2;
-            int LA46_0 = input.LA(1);
+            // InternalSignalDSL.g:3167:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
 
-            if ( (LA46_0==65) ) {
-                int LA46_1 = input.LA(2);
+            if ( (LA45_0==71) ) {
+                int LA45_1 = input.LA(2);
 
                 if ( (synpred19_InternalSignalDSL()) ) {
-                    alt46=1;
+                    alt45=1;
                 }
             }
-            else if ( (LA46_0==66) ) {
-                int LA46_2 = input.LA(2);
+            else if ( (LA45_0==72) ) {
+                int LA45_2 = input.LA(2);
 
                 if ( (synpred19_InternalSignalDSL()) ) {
-                    alt46=1;
+                    alt45=1;
                 }
             }
-            switch (alt46) {
+            switch (alt45) {
                 case 1 :
-                    // InternalSignalDSL.g:2844:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    // InternalSignalDSL.g:3168:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                     {
-                    // InternalSignalDSL.g:2854:4: ( () ( ( ruleOpPostfix ) ) )
-                    // InternalSignalDSL.g:2855:5: () ( ( ruleOpPostfix ) )
+                    // InternalSignalDSL.g:3178:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalSignalDSL.g:3179:5: () ( ( ruleOpPostfix ) )
                     {
-                    // InternalSignalDSL.g:2855:5: ()
-                    // InternalSignalDSL.g:2856:6: 
+                    // InternalSignalDSL.g:3179:5: ()
+                    // InternalSignalDSL.g:3180:6: 
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8216,11 +9116,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:2862:5: ( ( ruleOpPostfix ) )
-                    // InternalSignalDSL.g:2863:6: ( ruleOpPostfix )
+                    // InternalSignalDSL.g:3186:5: ( ( ruleOpPostfix ) )
+                    // InternalSignalDSL.g:3187:6: ( ruleOpPostfix )
                     {
-                    // InternalSignalDSL.g:2863:6: ( ruleOpPostfix )
-                    // InternalSignalDSL.g:2864:7: ruleOpPostfix
+                    // InternalSignalDSL.g:3187:6: ( ruleOpPostfix )
+                    // InternalSignalDSL.g:3188:7: ruleOpPostfix
                     {
                     if ( state.backtracking==0 ) {
 
@@ -8284,7 +9184,7 @@
 
 
     // $ANTLR start "entryRuleOpPostfix"
-    // InternalSignalDSL.g:2884:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    // InternalSignalDSL.g:3208:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
     public final String entryRuleOpPostfix() throws RecognitionException {
         String current = null;
 
@@ -8292,8 +9192,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2884:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
-            // InternalSignalDSL.g:2885:2: iv_ruleOpPostfix= ruleOpPostfix EOF
+            // InternalSignalDSL.g:3208:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalSignalDSL.g:3209:2: iv_ruleOpPostfix= ruleOpPostfix EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpPostfixRule()); 
@@ -8324,7 +9224,7 @@
 
 
     // $ANTLR start "ruleOpPostfix"
-    // InternalSignalDSL.g:2891:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    // InternalSignalDSL.g:3215:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
     public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -8334,31 +9234,31 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2897:2: ( (kw= '++' | kw= '--' ) )
-            // InternalSignalDSL.g:2898:2: (kw= '++' | kw= '--' )
+            // InternalSignalDSL.g:3221:2: ( (kw= '++' | kw= '--' ) )
+            // InternalSignalDSL.g:3222:2: (kw= '++' | kw= '--' )
             {
-            // InternalSignalDSL.g:2898:2: (kw= '++' | kw= '--' )
-            int alt47=2;
-            int LA47_0 = input.LA(1);
+            // InternalSignalDSL.g:3222:2: (kw= '++' | kw= '--' )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
 
-            if ( (LA47_0==65) ) {
-                alt47=1;
+            if ( (LA46_0==71) ) {
+                alt46=1;
             }
-            else if ( (LA47_0==66) ) {
-                alt47=2;
+            else if ( (LA46_0==72) ) {
+                alt46=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
-            switch (alt47) {
+            switch (alt46) {
                 case 1 :
-                    // InternalSignalDSL.g:2899:3: kw= '++'
+                    // InternalSignalDSL.g:3223:3: kw= '++'
                     {
-                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,71,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -8369,9 +9269,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:2905:3: kw= '--'
+                    // InternalSignalDSL.g:3229:3: kw= '--'
                     {
-                    kw=(Token)match(input,66,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -8406,7 +9306,7 @@
 
 
     // $ANTLR start "entryRuleXMemberFeatureCall"
-    // InternalSignalDSL.g:2914:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    // InternalSignalDSL.g:3238:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
     public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -8414,8 +9314,8 @@
 
 
         try {
-            // InternalSignalDSL.g:2914:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
-            // InternalSignalDSL.g:2915:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
+            // InternalSignalDSL.g:3238:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalSignalDSL.g:3239:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
@@ -8446,7 +9346,7 @@
 
 
     // $ANTLR start "ruleXMemberFeatureCall"
-    // InternalSignalDSL.g:2921:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
+    // InternalSignalDSL.g:3245:1: ruleXMemberFeatureCall returns [EObject current=null] : (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) ;
     public final EObject ruleXMemberFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -8482,11 +9382,11 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:2927:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
-            // InternalSignalDSL.g:2928:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalSignalDSL.g:3251:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
+            // InternalSignalDSL.g:3252:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
             {
-            // InternalSignalDSL.g:2928:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
-            // InternalSignalDSL.g:2929:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            // InternalSignalDSL.g:3252:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
+            // InternalSignalDSL.g:3253:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
             {
             if ( state.backtracking==0 ) {
 
@@ -8504,45 +9404,45 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:2937:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
-            loop56:
+            // InternalSignalDSL.g:3261:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
+            loop55:
             do {
-                int alt56=3;
+                int alt55=3;
                 switch ( input.LA(1) ) {
-                case 67:
+                case 73:
                     {
-                    int LA56_2 = input.LA(2);
+                    int LA55_2 = input.LA(2);
 
                     if ( (synpred20_InternalSignalDSL()) ) {
-                        alt56=1;
+                        alt55=1;
                     }
                     else if ( (synpred21_InternalSignalDSL()) ) {
-                        alt56=2;
+                        alt55=2;
                     }
 
 
                     }
                     break;
-                case 68:
+                case 74:
                     {
-                    int LA56_3 = input.LA(2);
+                    int LA55_3 = input.LA(2);
 
                     if ( (synpred20_InternalSignalDSL()) ) {
-                        alt56=1;
+                        alt55=1;
                     }
                     else if ( (synpred21_InternalSignalDSL()) ) {
-                        alt56=2;
+                        alt55=2;
                     }
 
 
                     }
                     break;
-                case 69:
+                case 75:
                     {
-                    int LA56_4 = input.LA(2);
+                    int LA55_4 = input.LA(2);
 
                     if ( (synpred21_InternalSignalDSL()) ) {
-                        alt56=2;
+                        alt55=2;
                     }
 
 
@@ -8551,21 +9451,21 @@
 
                 }
 
-                switch (alt56) {
+                switch (alt55) {
             	case 1 :
-            	    // InternalSignalDSL.g:2938:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalSignalDSL.g:3262:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
             	    {
-            	    // InternalSignalDSL.g:2938:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
-            	    // InternalSignalDSL.g:2939:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalSignalDSL.g:3262:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalSignalDSL.g:3263:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
             	    {
-            	    // InternalSignalDSL.g:2939:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-            	    // InternalSignalDSL.g:2940:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalSignalDSL.g:3263:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalSignalDSL.g:3264:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
             	    {
-            	    // InternalSignalDSL.g:2960:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-            	    // InternalSignalDSL.g:2961:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    // InternalSignalDSL.g:3284:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalSignalDSL.g:3285:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
             	    {
-            	    // InternalSignalDSL.g:2961:7: ()
-            	    // InternalSignalDSL.g:2962:8: 
+            	    // InternalSignalDSL.g:3285:7: ()
+            	    // InternalSignalDSL.g:3286:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8577,28 +9477,28 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2968:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
-            	    int alt48=2;
-            	    int LA48_0 = input.LA(1);
+            	    // InternalSignalDSL.g:3292:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    int alt47=2;
+            	    int LA47_0 = input.LA(1);
 
-            	    if ( (LA48_0==67) ) {
-            	        alt48=1;
+            	    if ( (LA47_0==73) ) {
+            	        alt47=1;
             	    }
-            	    else if ( (LA48_0==68) ) {
-            	        alt48=2;
+            	    else if ( (LA47_0==74) ) {
+            	        alt47=2;
             	    }
             	    else {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 48, 0, input);
+            	            new NoViableAltException("", 47, 0, input);
 
             	        throw nvae;
             	    }
-            	    switch (alt48) {
+            	    switch (alt47) {
             	        case 1 :
-            	            // InternalSignalDSL.g:2969:8: otherlv_2= '.'
+            	            // InternalSignalDSL.g:3293:8: otherlv_2= '.'
             	            {
-            	            otherlv_2=(Token)match(input,67,FOLLOW_51); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,73,FOLLOW_51); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
@@ -8608,15 +9508,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalSignalDSL.g:2974:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalSignalDSL.g:3298:8: ( (lv_explicitStatic_3_0= '::' ) )
             	            {
-            	            // InternalSignalDSL.g:2974:8: ( (lv_explicitStatic_3_0= '::' ) )
-            	            // InternalSignalDSL.g:2975:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalSignalDSL.g:3298:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalSignalDSL.g:3299:9: (lv_explicitStatic_3_0= '::' )
             	            {
-            	            // InternalSignalDSL.g:2975:9: (lv_explicitStatic_3_0= '::' )
-            	            // InternalSignalDSL.g:2976:10: lv_explicitStatic_3_0= '::'
+            	            // InternalSignalDSL.g:3299:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalSignalDSL.g:3300:10: lv_explicitStatic_3_0= '::'
             	            {
-            	            lv_explicitStatic_3_0=(Token)match(input,68,FOLLOW_51); if (state.failed) return current;
+            	            lv_explicitStatic_3_0=(Token)match(input,74,FOLLOW_51); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
@@ -8642,11 +9542,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:2989:7: ( ( ruleFeatureCallID ) )
-            	    // InternalSignalDSL.g:2990:8: ( ruleFeatureCallID )
+            	    // InternalSignalDSL.g:3313:7: ( ( ruleFeatureCallID ) )
+            	    // InternalSignalDSL.g:3314:8: ( ruleFeatureCallID )
             	    {
-            	    // InternalSignalDSL.g:2990:8: ( ruleFeatureCallID )
-            	    // InternalSignalDSL.g:2991:9: ruleFeatureCallID
+            	    // InternalSignalDSL.g:3314:8: ( ruleFeatureCallID )
+            	    // InternalSignalDSL.g:3315:9: ruleFeatureCallID
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8697,11 +9597,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3014:5: ( (lv_value_6_0= ruleXAssignment ) )
-            	    // InternalSignalDSL.g:3015:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalSignalDSL.g:3338:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalSignalDSL.g:3339:6: (lv_value_6_0= ruleXAssignment )
             	    {
-            	    // InternalSignalDSL.g:3015:6: (lv_value_6_0= ruleXAssignment )
-            	    // InternalSignalDSL.g:3016:7: lv_value_6_0= ruleXAssignment
+            	    // InternalSignalDSL.g:3339:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalSignalDSL.g:3340:7: lv_value_6_0= ruleXAssignment
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8739,19 +9639,19 @@
             	    }
             	    break;
             	case 2 :
-            	    // InternalSignalDSL.g:3035:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalSignalDSL.g:3359:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
             	    {
-            	    // InternalSignalDSL.g:3035:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
-            	    // InternalSignalDSL.g:3036:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    // InternalSignalDSL.g:3359:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
+            	    // InternalSignalDSL.g:3360:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
             	    {
-            	    // InternalSignalDSL.g:3036:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
-            	    // InternalSignalDSL.g:3037:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalSignalDSL.g:3360:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalSignalDSL.g:3361:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
             	    {
-            	    // InternalSignalDSL.g:3057:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
-            	    // InternalSignalDSL.g:3058:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    // InternalSignalDSL.g:3381:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalSignalDSL.g:3382:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
             	    {
-            	    // InternalSignalDSL.g:3058:7: ()
-            	    // InternalSignalDSL.g:3059:8: 
+            	    // InternalSignalDSL.g:3382:7: ()
+            	    // InternalSignalDSL.g:3383:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -8763,37 +9663,37 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3065:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
-            	    int alt49=3;
+            	    // InternalSignalDSL.g:3389:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    int alt48=3;
             	    switch ( input.LA(1) ) {
-            	    case 67:
+            	    case 73:
             	        {
-            	        alt49=1;
+            	        alt48=1;
             	        }
             	        break;
-            	    case 69:
+            	    case 75:
             	        {
-            	        alt49=2;
+            	        alt48=2;
             	        }
             	        break;
-            	    case 68:
+            	    case 74:
             	        {
-            	        alt49=3;
+            	        alt48=3;
             	        }
             	        break;
             	    default:
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        NoViableAltException nvae =
-            	            new NoViableAltException("", 49, 0, input);
+            	            new NoViableAltException("", 48, 0, input);
 
             	        throw nvae;
             	    }
 
-            	    switch (alt49) {
+            	    switch (alt48) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3066:8: otherlv_8= '.'
+            	            // InternalSignalDSL.g:3390:8: otherlv_8= '.'
             	            {
-            	            otherlv_8=(Token)match(input,67,FOLLOW_52); if (state.failed) return current;
+            	            otherlv_8=(Token)match(input,73,FOLLOW_52); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
@@ -8803,15 +9703,15 @@
             	            }
             	            break;
             	        case 2 :
-            	            // InternalSignalDSL.g:3071:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalSignalDSL.g:3395:8: ( (lv_nullSafe_9_0= '?.' ) )
             	            {
-            	            // InternalSignalDSL.g:3071:8: ( (lv_nullSafe_9_0= '?.' ) )
-            	            // InternalSignalDSL.g:3072:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalSignalDSL.g:3395:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalSignalDSL.g:3396:9: (lv_nullSafe_9_0= '?.' )
             	            {
-            	            // InternalSignalDSL.g:3072:9: (lv_nullSafe_9_0= '?.' )
-            	            // InternalSignalDSL.g:3073:10: lv_nullSafe_9_0= '?.'
+            	            // InternalSignalDSL.g:3396:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalSignalDSL.g:3397:10: lv_nullSafe_9_0= '?.'
             	            {
-            	            lv_nullSafe_9_0=(Token)match(input,69,FOLLOW_52); if (state.failed) return current;
+            	            lv_nullSafe_9_0=(Token)match(input,75,FOLLOW_52); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
@@ -8835,15 +9735,15 @@
             	            }
             	            break;
             	        case 3 :
-            	            // InternalSignalDSL.g:3086:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalSignalDSL.g:3410:8: ( (lv_explicitStatic_10_0= '::' ) )
             	            {
-            	            // InternalSignalDSL.g:3086:8: ( (lv_explicitStatic_10_0= '::' ) )
-            	            // InternalSignalDSL.g:3087:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalSignalDSL.g:3410:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalSignalDSL.g:3411:9: (lv_explicitStatic_10_0= '::' )
             	            {
-            	            // InternalSignalDSL.g:3087:9: (lv_explicitStatic_10_0= '::' )
-            	            // InternalSignalDSL.g:3088:10: lv_explicitStatic_10_0= '::'
+            	            // InternalSignalDSL.g:3411:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalSignalDSL.g:3412:10: lv_explicitStatic_10_0= '::'
             	            {
-            	            lv_explicitStatic_10_0=(Token)match(input,68,FOLLOW_52); if (state.failed) return current;
+            	            lv_explicitStatic_10_0=(Token)match(input,74,FOLLOW_52); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
@@ -8875,28 +9775,28 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3103:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
-            	    int alt51=2;
-            	    int LA51_0 = input.LA(1);
+            	    // InternalSignalDSL.g:3427:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    int alt50=2;
+            	    int LA50_0 = input.LA(1);
 
-            	    if ( (LA51_0==42) ) {
-            	        alt51=1;
+            	    if ( (LA50_0==48) ) {
+            	        alt50=1;
             	    }
-            	    switch (alt51) {
+            	    switch (alt50) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3104:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            // InternalSignalDSL.g:3428:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
             	            {
-            	            otherlv_11=(Token)match(input,42,FOLLOW_53); if (state.failed) return current;
+            	            otherlv_11=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
             	              					
             	            }
-            	            // InternalSignalDSL.g:3108:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
-            	            // InternalSignalDSL.g:3109:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalSignalDSL.g:3432:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalSignalDSL.g:3433:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
             	            {
-            	            // InternalSignalDSL.g:3109:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
-            	            // InternalSignalDSL.g:3110:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            // InternalSignalDSL.g:3433:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalSignalDSL.g:3434:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
             	            {
             	            if ( state.backtracking==0 ) {
 
@@ -8927,32 +9827,32 @@
 
             	            }
 
-            	            // InternalSignalDSL.g:3127:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
-            	            loop50:
+            	            // InternalSignalDSL.g:3451:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            loop49:
             	            do {
-            	                int alt50=2;
-            	                int LA50_0 = input.LA(1);
+            	                int alt49=2;
+            	                int LA49_0 = input.LA(1);
 
-            	                if ( (LA50_0==31) ) {
-            	                    alt50=1;
+            	                if ( (LA49_0==37) ) {
+            	                    alt49=1;
             	                }
 
 
-            	                switch (alt50) {
+            	                switch (alt49) {
             	            	case 1 :
-            	            	    // InternalSignalDSL.g:3128:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalSignalDSL.g:3452:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
             	            	    {
-            	            	    otherlv_13=(Token)match(input,31,FOLLOW_53); if (state.failed) return current;
+            	            	    otherlv_13=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
             	            	    if ( state.backtracking==0 ) {
 
             	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
             	            	      						
             	            	    }
-            	            	    // InternalSignalDSL.g:3132:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
-            	            	    // InternalSignalDSL.g:3133:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalSignalDSL.g:3456:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalSignalDSL.g:3457:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
             	            	    {
-            	            	    // InternalSignalDSL.g:3133:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
-            	            	    // InternalSignalDSL.g:3134:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    // InternalSignalDSL.g:3457:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalSignalDSL.g:3458:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
             	            	    {
             	            	    if ( state.backtracking==0 ) {
 
@@ -8988,11 +9888,11 @@
             	            	    break;
 
             	            	default :
-            	            	    break loop50;
+            	            	    break loop49;
             	                }
             	            } while (true);
 
-            	            otherlv_15=(Token)match(input,43,FOLLOW_52); if (state.failed) return current;
+            	            otherlv_15=(Token)match(input,49,FOLLOW_52); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
@@ -9004,11 +9904,11 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3157:5: ( ( ruleIdOrSuper ) )
-            	    // InternalSignalDSL.g:3158:6: ( ruleIdOrSuper )
+            	    // InternalSignalDSL.g:3481:5: ( ( ruleIdOrSuper ) )
+            	    // InternalSignalDSL.g:3482:6: ( ruleIdOrSuper )
             	    {
-            	    // InternalSignalDSL.g:3158:6: ( ruleIdOrSuper )
-            	    // InternalSignalDSL.g:3159:7: ruleIdOrSuper
+            	    // InternalSignalDSL.g:3482:6: ( ruleIdOrSuper )
+            	    // InternalSignalDSL.g:3483:7: ruleIdOrSuper
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -9038,20 +9938,20 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3173:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
-            	    int alt54=2;
-            	    alt54 = dfa54.predict(input);
-            	    switch (alt54) {
+            	    // InternalSignalDSL.g:3497:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
+            	    int alt53=2;
+            	    alt53 = dfa53.predict(input);
+            	    switch (alt53) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3174:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
+            	            // InternalSignalDSL.g:3498:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
             	            {
-            	            // InternalSignalDSL.g:3174:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
-            	            // InternalSignalDSL.g:3175:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalSignalDSL.g:3498:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalSignalDSL.g:3499:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
             	            {
-            	            // InternalSignalDSL.g:3179:7: (lv_explicitOperationCall_17_0= '(' )
-            	            // InternalSignalDSL.g:3180:8: lv_explicitOperationCall_17_0= '('
+            	            // InternalSignalDSL.g:3503:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalSignalDSL.g:3504:8: lv_explicitOperationCall_17_0= '('
             	            {
-            	            lv_explicitOperationCall_17_0=(Token)match(input,30,FOLLOW_56); if (state.failed) return current;
+            	            lv_explicitOperationCall_17_0=(Token)match(input,36,FOLLOW_56); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
@@ -9071,18 +9971,18 @@
 
             	            }
 
-            	            // InternalSignalDSL.g:3192:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
-            	            int alt53=3;
-            	            alt53 = dfa53.predict(input);
-            	            switch (alt53) {
+            	            // InternalSignalDSL.g:3516:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            int alt52=3;
+            	            alt52 = dfa52.predict(input);
+            	            switch (alt52) {
             	                case 1 :
-            	                    // InternalSignalDSL.g:3193:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalSignalDSL.g:3517:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
             	                    {
-            	                    // InternalSignalDSL.g:3193:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
-            	                    // InternalSignalDSL.g:3194:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalSignalDSL.g:3517:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalSignalDSL.g:3518:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
             	                    {
-            	                    // InternalSignalDSL.g:3219:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
-            	                    // InternalSignalDSL.g:3220:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    // InternalSignalDSL.g:3543:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalSignalDSL.g:3544:9: lv_memberCallArguments_18_0= ruleXShortClosure
             	                    {
             	                    if ( state.backtracking==0 ) {
 
@@ -9117,16 +10017,16 @@
             	                    }
             	                    break;
             	                case 2 :
-            	                    // InternalSignalDSL.g:3238:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalSignalDSL.g:3562:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
             	                    {
-            	                    // InternalSignalDSL.g:3238:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
-            	                    // InternalSignalDSL.g:3239:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    // InternalSignalDSL.g:3562:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalSignalDSL.g:3563:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
             	                    {
-            	                    // InternalSignalDSL.g:3239:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
-            	                    // InternalSignalDSL.g:3240:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalSignalDSL.g:3563:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalSignalDSL.g:3564:9: (lv_memberCallArguments_19_0= ruleXExpression )
             	                    {
-            	                    // InternalSignalDSL.g:3240:9: (lv_memberCallArguments_19_0= ruleXExpression )
-            	                    // InternalSignalDSL.g:3241:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    // InternalSignalDSL.g:3564:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalSignalDSL.g:3565:10: lv_memberCallArguments_19_0= ruleXExpression
             	                    {
             	                    if ( state.backtracking==0 ) {
 
@@ -9157,32 +10057,32 @@
 
             	                    }
 
-            	                    // InternalSignalDSL.g:3258:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
-            	                    loop52:
+            	                    // InternalSignalDSL.g:3582:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    loop51:
             	                    do {
-            	                        int alt52=2;
-            	                        int LA52_0 = input.LA(1);
+            	                        int alt51=2;
+            	                        int LA51_0 = input.LA(1);
 
-            	                        if ( (LA52_0==31) ) {
-            	                            alt52=1;
+            	                        if ( (LA51_0==37) ) {
+            	                            alt51=1;
             	                        }
 
 
-            	                        switch (alt52) {
+            	                        switch (alt51) {
             	                    	case 1 :
-            	                    	    // InternalSignalDSL.g:3259:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalSignalDSL.g:3583:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
             	                    	    {
-            	                    	    otherlv_20=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+            	                    	    otherlv_20=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
             	                    	    if ( state.backtracking==0 ) {
 
             	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
             	                    	      								
             	                    	    }
-            	                    	    // InternalSignalDSL.g:3263:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
-            	                    	    // InternalSignalDSL.g:3264:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalSignalDSL.g:3587:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalSignalDSL.g:3588:10: (lv_memberCallArguments_21_0= ruleXExpression )
             	                    	    {
-            	                    	    // InternalSignalDSL.g:3264:10: (lv_memberCallArguments_21_0= ruleXExpression )
-            	                    	    // InternalSignalDSL.g:3265:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    // InternalSignalDSL.g:3588:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalSignalDSL.g:3589:11: lv_memberCallArguments_21_0= ruleXExpression
             	                    	    {
             	                    	    if ( state.backtracking==0 ) {
 
@@ -9218,7 +10118,7 @@
             	                    	    break;
 
             	                    	default :
-            	                    	    break loop52;
+            	                    	    break loop51;
             	                        }
             	                    } while (true);
 
@@ -9231,7 +10131,7 @@
 
             	            }
 
-            	            otherlv_22=(Token)match(input,32,FOLLOW_57); if (state.failed) return current;
+            	            otherlv_22=(Token)match(input,38,FOLLOW_57); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
@@ -9243,15 +10143,15 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3290:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
-            	    int alt55=2;
-            	    alt55 = dfa55.predict(input);
-            	    switch (alt55) {
+            	    // InternalSignalDSL.g:3614:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    int alt54=2;
+            	    alt54 = dfa54.predict(input);
+            	    switch (alt54) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3291:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalSignalDSL.g:3615:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
             	            {
-            	            // InternalSignalDSL.g:3297:6: (lv_memberCallArguments_23_0= ruleXClosure )
-            	            // InternalSignalDSL.g:3298:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            // InternalSignalDSL.g:3621:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalSignalDSL.g:3622:7: lv_memberCallArguments_23_0= ruleXClosure
             	            {
             	            if ( state.backtracking==0 ) {
 
@@ -9293,7 +10193,7 @@
             	    break;
 
             	default :
-            	    break loop56;
+            	    break loop55;
                 }
             } while (true);
 
@@ -9322,7 +10222,7 @@
 
 
     // $ANTLR start "entryRuleXPrimaryExpression"
-    // InternalSignalDSL.g:3321:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    // InternalSignalDSL.g:3645:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
     public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9330,8 +10230,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3321:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
-            // InternalSignalDSL.g:3322:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
+            // InternalSignalDSL.g:3645:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalSignalDSL.g:3646:2: iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); 
@@ -9362,7 +10262,7 @@
 
 
     // $ANTLR start "ruleXPrimaryExpression"
-    // InternalSignalDSL.g:3328:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
+    // InternalSignalDSL.g:3652:1: ruleXPrimaryExpression returns [EObject current=null] : (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) ;
     public final EObject ruleXPrimaryExpression() throws RecognitionException {
         EObject current = null;
 
@@ -9401,15 +10301,15 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3334:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
-            // InternalSignalDSL.g:3335:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            // InternalSignalDSL.g:3658:2: ( (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression ) )
+            // InternalSignalDSL.g:3659:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
             {
-            // InternalSignalDSL.g:3335:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
-            int alt57=15;
-            alt57 = dfa57.predict(input);
-            switch (alt57) {
+            // InternalSignalDSL.g:3659:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )
+            int alt56=15;
+            alt56 = dfa56.predict(input);
+            switch (alt56) {
                 case 1 :
-                    // InternalSignalDSL.g:3336:3: this_XConstructorCall_0= ruleXConstructorCall
+                    // InternalSignalDSL.g:3660:3: this_XConstructorCall_0= ruleXConstructorCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9431,7 +10331,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3345:3: this_XBlockExpression_1= ruleXBlockExpression
+                    // InternalSignalDSL.g:3669:3: this_XBlockExpression_1= ruleXBlockExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9453,7 +10353,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3354:3: this_XSwitchExpression_2= ruleXSwitchExpression
+                    // InternalSignalDSL.g:3678:3: this_XSwitchExpression_2= ruleXSwitchExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9475,10 +10375,10 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3363:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3687:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
                     {
-                    // InternalSignalDSL.g:3363:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
-                    // InternalSignalDSL.g:3364:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
+                    // InternalSignalDSL.g:3687:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalSignalDSL.g:3688:4: ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9503,7 +10403,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3381:3: this_XFeatureCall_4= ruleXFeatureCall
+                    // InternalSignalDSL.g:3705:3: this_XFeatureCall_4= ruleXFeatureCall
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9525,7 +10425,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3390:3: this_XLiteral_5= ruleXLiteral
+                    // InternalSignalDSL.g:3714:3: this_XLiteral_5= ruleXLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9547,7 +10447,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3399:3: this_XIfExpression_6= ruleXIfExpression
+                    // InternalSignalDSL.g:3723:3: this_XIfExpression_6= ruleXIfExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9569,10 +10469,10 @@
                     }
                     break;
                 case 8 :
-                    // InternalSignalDSL.g:3408:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3732:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
                     {
-                    // InternalSignalDSL.g:3408:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
-                    // InternalSignalDSL.g:3409:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
+                    // InternalSignalDSL.g:3732:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalSignalDSL.g:3733:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9597,7 +10497,7 @@
                     }
                     break;
                 case 9 :
-                    // InternalSignalDSL.g:3432:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
+                    // InternalSignalDSL.g:3756:3: this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9619,7 +10519,7 @@
                     }
                     break;
                 case 10 :
-                    // InternalSignalDSL.g:3441:3: this_XWhileExpression_9= ruleXWhileExpression
+                    // InternalSignalDSL.g:3765:3: this_XWhileExpression_9= ruleXWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9641,7 +10541,7 @@
                     }
                     break;
                 case 11 :
-                    // InternalSignalDSL.g:3450:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
+                    // InternalSignalDSL.g:3774:3: this_XDoWhileExpression_10= ruleXDoWhileExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9663,7 +10563,7 @@
                     }
                     break;
                 case 12 :
-                    // InternalSignalDSL.g:3459:3: this_XThrowExpression_11= ruleXThrowExpression
+                    // InternalSignalDSL.g:3783:3: this_XThrowExpression_11= ruleXThrowExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9685,7 +10585,7 @@
                     }
                     break;
                 case 13 :
-                    // InternalSignalDSL.g:3468:3: this_XReturnExpression_12= ruleXReturnExpression
+                    // InternalSignalDSL.g:3792:3: this_XReturnExpression_12= ruleXReturnExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9707,7 +10607,7 @@
                     }
                     break;
                 case 14 :
-                    // InternalSignalDSL.g:3477:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
+                    // InternalSignalDSL.g:3801:3: this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9729,7 +10629,7 @@
                     }
                     break;
                 case 15 :
-                    // InternalSignalDSL.g:3486:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
+                    // InternalSignalDSL.g:3810:3: this_XParenthesizedExpression_14= ruleXParenthesizedExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9775,7 +10675,7 @@
 
 
     // $ANTLR start "entryRuleXLiteral"
-    // InternalSignalDSL.g:3498:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    // InternalSignalDSL.g:3822:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
     public final EObject entryRuleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -9783,8 +10683,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3498:49: (iv_ruleXLiteral= ruleXLiteral EOF )
-            // InternalSignalDSL.g:3499:2: iv_ruleXLiteral= ruleXLiteral EOF
+            // InternalSignalDSL.g:3822:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalSignalDSL.g:3823:2: iv_ruleXLiteral= ruleXLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXLiteralRule()); 
@@ -9815,7 +10715,7 @@
 
 
     // $ANTLR start "ruleXLiteral"
-    // InternalSignalDSL.g:3505:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
+    // InternalSignalDSL.g:3829:1: ruleXLiteral returns [EObject current=null] : (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) ;
     public final EObject ruleXLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -9838,44 +10738,44 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3511:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
-            // InternalSignalDSL.g:3512:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            // InternalSignalDSL.g:3835:2: ( (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral ) )
+            // InternalSignalDSL.g:3836:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
             {
-            // InternalSignalDSL.g:3512:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
-            int alt58=7;
-            int LA58_0 = input.LA(1);
+            // InternalSignalDSL.g:3836:2: (this_XCollectionLiteral_0= ruleXCollectionLiteral | ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure ) | this_XBooleanLiteral_2= ruleXBooleanLiteral | this_XNumberLiteral_3= ruleXNumberLiteral | this_XNullLiteral_4= ruleXNullLiteral | this_XStringLiteral_5= ruleXStringLiteral | this_XTypeLiteral_6= ruleXTypeLiteral )
+            int alt57=7;
+            int LA57_0 = input.LA(1);
 
-            if ( (LA58_0==34) ) {
-                alt58=1;
+            if ( (LA57_0==40) ) {
+                alt57=1;
             }
-            else if ( (LA58_0==35) && (synpred27_InternalSignalDSL())) {
-                alt58=2;
+            else if ( (LA57_0==41) && (synpred27_InternalSignalDSL())) {
+                alt57=2;
             }
-            else if ( ((LA58_0>=84 && LA58_0<=85)) ) {
-                alt58=3;
+            else if ( ((LA57_0>=90 && LA57_0<=91)) ) {
+                alt57=3;
             }
-            else if ( ((LA58_0>=RULE_HEX && LA58_0<=RULE_DECIMAL)) ) {
-                alt58=4;
+            else if ( (LA57_0==RULE_INT||(LA57_0>=RULE_HEX && LA57_0<=RULE_DECIMAL)) ) {
+                alt57=4;
             }
-            else if ( (LA58_0==86) ) {
-                alt58=5;
+            else if ( (LA57_0==92) ) {
+                alt57=5;
             }
-            else if ( (LA58_0==RULE_STRING) ) {
-                alt58=6;
+            else if ( (LA57_0==RULE_STRING) ) {
+                alt57=6;
             }
-            else if ( (LA58_0==87) ) {
-                alt58=7;
+            else if ( (LA57_0==93) ) {
+                alt57=7;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 58, 0, input);
+                    new NoViableAltException("", 57, 0, input);
 
                 throw nvae;
             }
-            switch (alt58) {
+            switch (alt57) {
                 case 1 :
-                    // InternalSignalDSL.g:3513:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
+                    // InternalSignalDSL.g:3837:3: this_XCollectionLiteral_0= ruleXCollectionLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9897,10 +10797,10 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3522:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalSignalDSL.g:3846:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
                     {
-                    // InternalSignalDSL.g:3522:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
-                    // InternalSignalDSL.g:3523:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
+                    // InternalSignalDSL.g:3846:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalSignalDSL.g:3847:4: ( ( () '[' ) )=>this_XClosure_1= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9925,7 +10825,7 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:3539:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
+                    // InternalSignalDSL.g:3863:3: this_XBooleanLiteral_2= ruleXBooleanLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9947,7 +10847,7 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:3548:3: this_XNumberLiteral_3= ruleXNumberLiteral
+                    // InternalSignalDSL.g:3872:3: this_XNumberLiteral_3= ruleXNumberLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9969,7 +10869,7 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:3557:3: this_XNullLiteral_4= ruleXNullLiteral
+                    // InternalSignalDSL.g:3881:3: this_XNullLiteral_4= ruleXNullLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -9991,7 +10891,7 @@
                     }
                     break;
                 case 6 :
-                    // InternalSignalDSL.g:3566:3: this_XStringLiteral_5= ruleXStringLiteral
+                    // InternalSignalDSL.g:3890:3: this_XStringLiteral_5= ruleXStringLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10013,7 +10913,7 @@
                     }
                     break;
                 case 7 :
-                    // InternalSignalDSL.g:3575:3: this_XTypeLiteral_6= ruleXTypeLiteral
+                    // InternalSignalDSL.g:3899:3: this_XTypeLiteral_6= ruleXTypeLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10059,7 +10959,7 @@
 
 
     // $ANTLR start "entryRuleXCollectionLiteral"
-    // InternalSignalDSL.g:3587:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    // InternalSignalDSL.g:3911:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
     public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10067,8 +10967,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3587:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
-            // InternalSignalDSL.g:3588:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
+            // InternalSignalDSL.g:3911:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalSignalDSL.g:3912:2: iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCollectionLiteralRule()); 
@@ -10099,7 +10999,7 @@
 
 
     // $ANTLR start "ruleXCollectionLiteral"
-    // InternalSignalDSL.g:3594:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
+    // InternalSignalDSL.g:3918:1: ruleXCollectionLiteral returns [EObject current=null] : (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) ;
     public final EObject ruleXCollectionLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10112,26 +11012,26 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3600:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
-            // InternalSignalDSL.g:3601:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            // InternalSignalDSL.g:3924:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalSignalDSL.g:3925:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
             {
-            // InternalSignalDSL.g:3601:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
-            int alt59=2;
-            int LA59_0 = input.LA(1);
+            // InternalSignalDSL.g:3925:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            int alt58=2;
+            int LA58_0 = input.LA(1);
 
-            if ( (LA59_0==34) ) {
-                int LA59_1 = input.LA(2);
+            if ( (LA58_0==40) ) {
+                int LA58_1 = input.LA(2);
 
-                if ( (LA59_1==35) ) {
-                    alt59=2;
+                if ( (LA58_1==41) ) {
+                    alt58=2;
                 }
-                else if ( (LA59_1==14) ) {
-                    alt59=1;
+                else if ( (LA58_1==14) ) {
+                    alt58=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 59, 1, input);
+                        new NoViableAltException("", 58, 1, input);
 
                     throw nvae;
                 }
@@ -10139,13 +11039,13 @@
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 59, 0, input);
+                    new NoViableAltException("", 58, 0, input);
 
                 throw nvae;
             }
-            switch (alt59) {
+            switch (alt58) {
                 case 1 :
-                    // InternalSignalDSL.g:3602:3: this_XSetLiteral_0= ruleXSetLiteral
+                    // InternalSignalDSL.g:3926:3: this_XSetLiteral_0= ruleXSetLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10167,7 +11067,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:3611:3: this_XListLiteral_1= ruleXListLiteral
+                    // InternalSignalDSL.g:3935:3: this_XListLiteral_1= ruleXListLiteral
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10213,7 +11113,7 @@
 
 
     // $ANTLR start "entryRuleXSetLiteral"
-    // InternalSignalDSL.g:3623:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    // InternalSignalDSL.g:3947:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
     public final EObject entryRuleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10221,8 +11121,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3623:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
-            // InternalSignalDSL.g:3624:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
+            // InternalSignalDSL.g:3947:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalSignalDSL.g:3948:2: iv_ruleXSetLiteral= ruleXSetLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSetLiteralRule()); 
@@ -10253,7 +11153,7 @@
 
 
     // $ANTLR start "ruleXSetLiteral"
-    // InternalSignalDSL.g:3630:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
+    // InternalSignalDSL.g:3954:1: ruleXSetLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) ;
     public final EObject ruleXSetLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10270,14 +11170,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3636:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
-            // InternalSignalDSL.g:3637:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalSignalDSL.g:3960:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalSignalDSL.g:3961:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
             {
-            // InternalSignalDSL.g:3637:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
-            // InternalSignalDSL.g:3638:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            // InternalSignalDSL.g:3961:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalSignalDSL.g:3962:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
             {
-            // InternalSignalDSL.g:3638:3: ()
-            // InternalSignalDSL.g:3639:4: 
+            // InternalSignalDSL.g:3962:3: ()
+            // InternalSignalDSL.g:3963:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -10289,7 +11189,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,34,FOLLOW_11); if (state.failed) return current;
+            otherlv_1=(Token)match(input,40,FOLLOW_9); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
@@ -10301,22 +11201,22 @@
               			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
               		
             }
-            // InternalSignalDSL.g:3653:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
-            int alt61=2;
-            int LA61_0 = input.LA(1);
+            // InternalSignalDSL.g:3977:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
 
-            if ( ((LA61_0>=RULE_STRING && LA61_0<=RULE_DECIMAL)||LA61_0==14||LA61_0==18||(LA61_0>=23 && LA61_0<=25)||LA61_0==30||(LA61_0>=34 && LA61_0<=35)||LA61_0==42||(LA61_0>=58 && LA61_0<=59)||LA61_0==63||LA61_0==71||LA61_0==73||(LA61_0>=77 && LA61_0<=78)||(LA61_0>=81 && LA61_0<=90)||LA61_0==92) ) {
-                alt61=1;
+            if ( ((LA60_0>=RULE_STRING && LA60_0<=RULE_DECIMAL)||LA60_0==14||(LA60_0>=29 && LA60_0<=31)||LA60_0==36||(LA60_0>=40 && LA60_0<=41)||LA60_0==48||(LA60_0>=64 && LA60_0<=65)||LA60_0==69||LA60_0==77||LA60_0==79||(LA60_0>=82 && LA60_0<=84)||(LA60_0>=87 && LA60_0<=96)||LA60_0==98) ) {
+                alt60=1;
             }
-            switch (alt61) {
+            switch (alt60) {
                 case 1 :
-                    // InternalSignalDSL.g:3654:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalSignalDSL.g:3978:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalSignalDSL.g:3654:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:3655:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:3978:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:3979:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:3655:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalSignalDSL.g:3656:6: lv_elements_3_0= ruleXExpression
+                    // InternalSignalDSL.g:3979:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:3980:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10347,32 +11247,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:3673:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
-                    loop60:
+                    // InternalSignalDSL.g:3997:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop59:
                     do {
-                        int alt60=2;
-                        int LA60_0 = input.LA(1);
+                        int alt59=2;
+                        int LA59_0 = input.LA(1);
 
-                        if ( (LA60_0==31) ) {
-                            alt60=1;
+                        if ( (LA59_0==37) ) {
+                            alt59=1;
                         }
 
 
-                        switch (alt60) {
+                        switch (alt59) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:3674:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:3998:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:3678:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalSignalDSL.g:3679:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4002:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4003:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalSignalDSL.g:3679:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalSignalDSL.g:3680:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalSignalDSL.g:4003:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4004:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -10408,7 +11308,7 @@
                     	    break;
 
                     	default :
-                    	    break loop60;
+                    	    break loop59;
                         }
                     } while (true);
 
@@ -10449,7 +11349,7 @@
 
 
     // $ANTLR start "entryRuleXListLiteral"
-    // InternalSignalDSL.g:3707:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    // InternalSignalDSL.g:4031:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
     public final EObject entryRuleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10457,8 +11357,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3707:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
-            // InternalSignalDSL.g:3708:2: iv_ruleXListLiteral= ruleXListLiteral EOF
+            // InternalSignalDSL.g:4031:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalSignalDSL.g:4032:2: iv_ruleXListLiteral= ruleXListLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXListLiteralRule()); 
@@ -10489,7 +11389,7 @@
 
 
     // $ANTLR start "ruleXListLiteral"
-    // InternalSignalDSL.g:3714:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
+    // InternalSignalDSL.g:4038:1: ruleXListLiteral returns [EObject current=null] : ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) ;
     public final EObject ruleXListLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -10506,14 +11406,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3720:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
-            // InternalSignalDSL.g:3721:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalSignalDSL.g:4044:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalSignalDSL.g:4045:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
             {
-            // InternalSignalDSL.g:3721:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
-            // InternalSignalDSL.g:3722:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            // InternalSignalDSL.g:4045:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalSignalDSL.g:4046:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
             {
-            // InternalSignalDSL.g:3722:3: ()
-            // InternalSignalDSL.g:3723:4: 
+            // InternalSignalDSL.g:4046:3: ()
+            // InternalSignalDSL.g:4047:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -10525,34 +11425,34 @@
 
             }
 
-            otherlv_1=(Token)match(input,34,FOLLOW_29); if (state.failed) return current;
+            otherlv_1=(Token)match(input,40,FOLLOW_29); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,35,FOLLOW_30); if (state.failed) return current;
+            otherlv_2=(Token)match(input,41,FOLLOW_30); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
               		
             }
-            // InternalSignalDSL.g:3737:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
-            int alt63=2;
-            int LA63_0 = input.LA(1);
+            // InternalSignalDSL.g:4061:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
 
-            if ( ((LA63_0>=RULE_STRING && LA63_0<=RULE_DECIMAL)||LA63_0==14||LA63_0==18||(LA63_0>=23 && LA63_0<=25)||LA63_0==30||(LA63_0>=34 && LA63_0<=35)||LA63_0==42||(LA63_0>=58 && LA63_0<=59)||LA63_0==63||LA63_0==71||LA63_0==73||(LA63_0>=77 && LA63_0<=78)||(LA63_0>=81 && LA63_0<=90)||LA63_0==92) ) {
-                alt63=1;
+            if ( ((LA62_0>=RULE_STRING && LA62_0<=RULE_DECIMAL)||LA62_0==14||(LA62_0>=29 && LA62_0<=31)||LA62_0==36||(LA62_0>=40 && LA62_0<=41)||LA62_0==48||(LA62_0>=64 && LA62_0<=65)||LA62_0==69||LA62_0==77||LA62_0==79||(LA62_0>=82 && LA62_0<=84)||(LA62_0>=87 && LA62_0<=96)||LA62_0==98) ) {
+                alt62=1;
             }
-            switch (alt63) {
+            switch (alt62) {
                 case 1 :
-                    // InternalSignalDSL.g:3738:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    // InternalSignalDSL.g:4062:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
                     {
-                    // InternalSignalDSL.g:3738:4: ( (lv_elements_3_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:3739:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4062:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4063:5: (lv_elements_3_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:3739:5: (lv_elements_3_0= ruleXExpression )
-                    // InternalSignalDSL.g:3740:6: lv_elements_3_0= ruleXExpression
+                    // InternalSignalDSL.g:4063:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4064:6: lv_elements_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -10583,32 +11483,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:3757:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
-                    loop62:
+                    // InternalSignalDSL.g:4081:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop61:
                     do {
-                        int alt62=2;
-                        int LA62_0 = input.LA(1);
+                        int alt61=2;
+                        int LA61_0 = input.LA(1);
 
-                        if ( (LA62_0==31) ) {
-                            alt62=1;
+                        if ( (LA61_0==37) ) {
+                            alt61=1;
                         }
 
 
-                        switch (alt62) {
+                        switch (alt61) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:3758:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4082:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:3762:5: ( (lv_elements_5_0= ruleXExpression ) )
-                    	    // InternalSignalDSL.g:3763:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4086:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:4087:6: (lv_elements_5_0= ruleXExpression )
                     	    {
-                    	    // InternalSignalDSL.g:3763:6: (lv_elements_5_0= ruleXExpression )
-                    	    // InternalSignalDSL.g:3764:7: lv_elements_5_0= ruleXExpression
+                    	    // InternalSignalDSL.g:4087:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:4088:7: lv_elements_5_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -10644,7 +11544,7 @@
                     	    break;
 
                     	default :
-                    	    break loop62;
+                    	    break loop61;
                         }
                     } while (true);
 
@@ -10654,7 +11554,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
+            otherlv_6=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4());
@@ -10685,7 +11585,7 @@
 
 
     // $ANTLR start "entryRuleXClosure"
-    // InternalSignalDSL.g:3791:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    // InternalSignalDSL.g:4115:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
     public final EObject entryRuleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -10693,8 +11593,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3791:49: (iv_ruleXClosure= ruleXClosure EOF )
-            // InternalSignalDSL.g:3792:2: iv_ruleXClosure= ruleXClosure EOF
+            // InternalSignalDSL.g:4115:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalSignalDSL.g:4116:2: iv_ruleXClosure= ruleXClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXClosureRule()); 
@@ -10725,7 +11625,7 @@
 
 
     // $ANTLR start "ruleXClosure"
-    // InternalSignalDSL.g:3798:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
+    // InternalSignalDSL.g:4122:1: ruleXClosure returns [EObject current=null] : ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) ;
     public final EObject ruleXClosure() throws RecognitionException {
         EObject current = null;
 
@@ -10744,20 +11644,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3804:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
-            // InternalSignalDSL.g:3805:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalSignalDSL.g:4128:2: ( ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' ) )
+            // InternalSignalDSL.g:4129:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
             {
-            // InternalSignalDSL.g:3805:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
-            // InternalSignalDSL.g:3806:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
+            // InternalSignalDSL.g:4129:2: ( ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']' )
+            // InternalSignalDSL.g:4130:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) ) ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )? ( (lv_expression_6_0= ruleXExpressionInClosure ) ) otherlv_7= ']'
             {
-            // InternalSignalDSL.g:3806:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
-            // InternalSignalDSL.g:3807:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            // InternalSignalDSL.g:4130:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalSignalDSL.g:4131:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
             {
-            // InternalSignalDSL.g:3813:4: ( () otherlv_1= '[' )
-            // InternalSignalDSL.g:3814:5: () otherlv_1= '['
+            // InternalSignalDSL.g:4137:4: ( () otherlv_1= '[' )
+            // InternalSignalDSL.g:4138:5: () otherlv_1= '['
             {
-            // InternalSignalDSL.g:3814:5: ()
-            // InternalSignalDSL.g:3815:6: 
+            // InternalSignalDSL.g:4138:5: ()
+            // InternalSignalDSL.g:4139:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -10769,7 +11669,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,35,FOLLOW_60); if (state.failed) return current;
+            otherlv_1=(Token)match(input,41,FOLLOW_60); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
@@ -10781,32 +11681,32 @@
 
             }
 
-            // InternalSignalDSL.g:3827:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
-            int alt66=2;
-            alt66 = dfa66.predict(input);
-            switch (alt66) {
+            // InternalSignalDSL.g:4151:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            int alt65=2;
+            alt65 = dfa65.predict(input);
+            switch (alt65) {
                 case 1 :
-                    // InternalSignalDSL.g:3828:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalSignalDSL.g:4152:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
                     {
-                    // InternalSignalDSL.g:3851:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
-                    // InternalSignalDSL.g:3852:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalSignalDSL.g:4175:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalSignalDSL.g:4176:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
                     {
-                    // InternalSignalDSL.g:3852:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
-                    int alt65=2;
-                    int LA65_0 = input.LA(1);
+                    // InternalSignalDSL.g:4176:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    int alt64=2;
+                    int LA64_0 = input.LA(1);
 
-                    if ( (LA65_0==RULE_ID||LA65_0==30||LA65_0==55) ) {
-                        alt65=1;
+                    if ( (LA64_0==RULE_ID||LA64_0==36||LA64_0==61) ) {
+                        alt64=1;
                     }
-                    switch (alt65) {
+                    switch (alt64) {
                         case 1 :
-                            // InternalSignalDSL.g:3853:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            // InternalSignalDSL.g:4177:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
                             {
-                            // InternalSignalDSL.g:3853:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
-                            // InternalSignalDSL.g:3854:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4177:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalSignalDSL.g:4178:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
                             {
-                            // InternalSignalDSL.g:3854:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
-                            // InternalSignalDSL.g:3855:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            // InternalSignalDSL.g:4178:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4179:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
@@ -10837,32 +11737,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:3872:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
-                            loop64:
+                            // InternalSignalDSL.g:4196:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            loop63:
                             do {
-                                int alt64=2;
-                                int LA64_0 = input.LA(1);
+                                int alt63=2;
+                                int LA63_0 = input.LA(1);
 
-                                if ( (LA64_0==31) ) {
-                                    alt64=1;
+                                if ( (LA63_0==37) ) {
+                                    alt63=1;
                                 }
 
 
-                                switch (alt64) {
+                                switch (alt63) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:3873:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalSignalDSL.g:4197:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
                             	    {
-                            	    otherlv_3=(Token)match(input,31,FOLLOW_41); if (state.failed) return current;
+                            	    otherlv_3=(Token)match(input,37,FOLLOW_41); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:3877:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
-                            	    // InternalSignalDSL.g:3878:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalSignalDSL.g:4201:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalSignalDSL.g:4202:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
                             	    {
-                            	    // InternalSignalDSL.g:3878:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
-                            	    // InternalSignalDSL.g:3879:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    // InternalSignalDSL.g:4202:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalSignalDSL.g:4203:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -10898,7 +11798,7 @@
                             	    break;
 
                             	default :
-                            	    break loop64;
+                            	    break loop63;
                                 }
                             } while (true);
 
@@ -10908,13 +11808,13 @@
 
                     }
 
-                    // InternalSignalDSL.g:3898:5: ( (lv_explicitSyntax_5_0= '|' ) )
-                    // InternalSignalDSL.g:3899:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalSignalDSL.g:4222:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalSignalDSL.g:4223:6: (lv_explicitSyntax_5_0= '|' )
                     {
-                    // InternalSignalDSL.g:3899:6: (lv_explicitSyntax_5_0= '|' )
-                    // InternalSignalDSL.g:3900:7: lv_explicitSyntax_5_0= '|'
+                    // InternalSignalDSL.g:4223:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalSignalDSL.g:4224:7: lv_explicitSyntax_5_0= '|'
                     {
-                    lv_explicitSyntax_5_0=(Token)match(input,70,FOLLOW_62); if (state.failed) return current;
+                    lv_explicitSyntax_5_0=(Token)match(input,76,FOLLOW_62); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(lv_explicitSyntax_5_0, grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0());
@@ -10943,11 +11843,11 @@
 
             }
 
-            // InternalSignalDSL.g:3914:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
-            // InternalSignalDSL.g:3915:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalSignalDSL.g:4238:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalSignalDSL.g:4239:4: (lv_expression_6_0= ruleXExpressionInClosure )
             {
-            // InternalSignalDSL.g:3915:4: (lv_expression_6_0= ruleXExpressionInClosure )
-            // InternalSignalDSL.g:3916:5: lv_expression_6_0= ruleXExpressionInClosure
+            // InternalSignalDSL.g:4239:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalSignalDSL.g:4240:5: lv_expression_6_0= ruleXExpressionInClosure
             {
             if ( state.backtracking==0 ) {
 
@@ -10978,7 +11878,7 @@
 
             }
 
-            otherlv_7=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
+            otherlv_7=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_7, grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3());
@@ -11009,7 +11909,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionInClosure"
-    // InternalSignalDSL.g:3941:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    // InternalSignalDSL.g:4265:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
     public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11017,8 +11917,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3941:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
-            // InternalSignalDSL.g:3942:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
+            // InternalSignalDSL.g:4265:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalSignalDSL.g:4266:2: iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionInClosureRule()); 
@@ -11049,7 +11949,7 @@
 
 
     // $ANTLR start "ruleXExpressionInClosure"
-    // InternalSignalDSL.g:3948:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
+    // InternalSignalDSL.g:4272:1: ruleXExpressionInClosure returns [EObject current=null] : ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) ;
     public final EObject ruleXExpressionInClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11061,14 +11961,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:3954:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
-            // InternalSignalDSL.g:3955:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalSignalDSL.g:4278:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalSignalDSL.g:4279:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
             {
-            // InternalSignalDSL.g:3955:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
-            // InternalSignalDSL.g:3956:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            // InternalSignalDSL.g:4279:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalSignalDSL.g:4280:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
             {
-            // InternalSignalDSL.g:3956:3: ()
-            // InternalSignalDSL.g:3957:4: 
+            // InternalSignalDSL.g:4280:3: ()
+            // InternalSignalDSL.g:4281:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11080,26 +11980,26 @@
 
             }
 
-            // InternalSignalDSL.g:3963:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
-            loop68:
+            // InternalSignalDSL.g:4287:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            loop67:
             do {
-                int alt68=2;
-                int LA68_0 = input.LA(1);
+                int alt67=2;
+                int LA67_0 = input.LA(1);
 
-                if ( ((LA68_0>=RULE_STRING && LA68_0<=RULE_DECIMAL)||LA68_0==14||LA68_0==18||(LA68_0>=23 && LA68_0<=25)||LA68_0==30||(LA68_0>=34 && LA68_0<=35)||LA68_0==42||(LA68_0>=58 && LA68_0<=59)||LA68_0==63||LA68_0==71||LA68_0==73||(LA68_0>=77 && LA68_0<=90)||LA68_0==92) ) {
-                    alt68=1;
+                if ( ((LA67_0>=RULE_STRING && LA67_0<=RULE_DECIMAL)||LA67_0==14||(LA67_0>=29 && LA67_0<=31)||LA67_0==36||(LA67_0>=40 && LA67_0<=41)||LA67_0==48||(LA67_0>=64 && LA67_0<=65)||LA67_0==69||LA67_0==77||LA67_0==79||(LA67_0>=82 && LA67_0<=96)||LA67_0==98) ) {
+                    alt67=1;
                 }
 
 
-                switch (alt68) {
+                switch (alt67) {
             	case 1 :
-            	    // InternalSignalDSL.g:3964:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    // InternalSignalDSL.g:4288:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
             	    {
-            	    // InternalSignalDSL.g:3964:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalSignalDSL.g:3965:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:4288:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalSignalDSL.g:4289:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalSignalDSL.g:3965:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalSignalDSL.g:3966:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    // InternalSignalDSL.g:4289:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:4290:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
@@ -11130,18 +12030,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:3983:4: (otherlv_2= ';' )?
-            	    int alt67=2;
-            	    int LA67_0 = input.LA(1);
+            	    // InternalSignalDSL.g:4307:4: (otherlv_2= ';' )?
+            	    int alt66=2;
+            	    int LA66_0 = input.LA(1);
 
-            	    if ( (LA67_0==28) ) {
-            	        alt67=1;
+            	    if ( (LA66_0==34) ) {
+            	        alt66=1;
             	    }
-            	    switch (alt67) {
+            	    switch (alt66) {
             	        case 1 :
-            	            // InternalSignalDSL.g:3984:5: otherlv_2= ';'
+            	            // InternalSignalDSL.g:4308:5: otherlv_2= ';'
             	            {
-            	            otherlv_2=(Token)match(input,28,FOLLOW_65); if (state.failed) return current;
+            	            otherlv_2=(Token)match(input,34,FOLLOW_65); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
@@ -11158,7 +12058,7 @@
             	    break;
 
             	default :
-            	    break loop68;
+            	    break loop67;
                 }
             } while (true);
 
@@ -11187,7 +12087,7 @@
 
 
     // $ANTLR start "entryRuleXShortClosure"
-    // InternalSignalDSL.g:3994:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    // InternalSignalDSL.g:4318:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
     public final EObject entryRuleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11195,8 +12095,8 @@
 
 
         try {
-            // InternalSignalDSL.g:3994:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
-            // InternalSignalDSL.g:3995:2: iv_ruleXShortClosure= ruleXShortClosure EOF
+            // InternalSignalDSL.g:4318:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalSignalDSL.g:4319:2: iv_ruleXShortClosure= ruleXShortClosure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXShortClosureRule()); 
@@ -11227,7 +12127,7 @@
 
 
     // $ANTLR start "ruleXShortClosure"
-    // InternalSignalDSL.g:4001:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:4325:1: ruleXShortClosure returns [EObject current=null] : ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXShortClosure() throws RecognitionException {
         EObject current = null;
 
@@ -11244,20 +12144,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4007:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:4008:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:4331:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:4332:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:4008:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:4009:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4332:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:4333:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:4009:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
-            // InternalSignalDSL.g:4010:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalSignalDSL.g:4333:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalSignalDSL.g:4334:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
             {
-            // InternalSignalDSL.g:4035:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
-            // InternalSignalDSL.g:4036:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalSignalDSL.g:4359:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalSignalDSL.g:4360:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
             {
-            // InternalSignalDSL.g:4036:5: ()
-            // InternalSignalDSL.g:4037:6: 
+            // InternalSignalDSL.g:4360:5: ()
+            // InternalSignalDSL.g:4361:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11269,22 +12169,22 @@
 
             }
 
-            // InternalSignalDSL.g:4043:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
-            int alt70=2;
-            int LA70_0 = input.LA(1);
+            // InternalSignalDSL.g:4367:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
 
-            if ( (LA70_0==RULE_ID||LA70_0==30||LA70_0==55) ) {
-                alt70=1;
+            if ( (LA69_0==RULE_ID||LA69_0==36||LA69_0==61) ) {
+                alt69=1;
             }
-            switch (alt70) {
+            switch (alt69) {
                 case 1 :
-                    // InternalSignalDSL.g:4044:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    // InternalSignalDSL.g:4368:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
                     {
-                    // InternalSignalDSL.g:4044:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
-                    // InternalSignalDSL.g:4045:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4368:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalSignalDSL.g:4369:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
                     {
-                    // InternalSignalDSL.g:4045:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
-                    // InternalSignalDSL.g:4046:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    // InternalSignalDSL.g:4369:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4370:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11315,32 +12215,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:4063:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
-                    loop69:
+                    // InternalSignalDSL.g:4387:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    loop68:
                     do {
-                        int alt69=2;
-                        int LA69_0 = input.LA(1);
+                        int alt68=2;
+                        int LA68_0 = input.LA(1);
 
-                        if ( (LA69_0==31) ) {
-                            alt69=1;
+                        if ( (LA68_0==37) ) {
+                            alt68=1;
                         }
 
 
-                        switch (alt69) {
+                        switch (alt68) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:4064:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalSignalDSL.g:4388:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
                     	    {
-                    	    otherlv_2=(Token)match(input,31,FOLLOW_41); if (state.failed) return current;
+                    	    otherlv_2=(Token)match(input,37,FOLLOW_41); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
                     	      						
                     	    }
-                    	    // InternalSignalDSL.g:4068:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
-                    	    // InternalSignalDSL.g:4069:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalSignalDSL.g:4392:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalSignalDSL.g:4393:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
                     	    {
-                    	    // InternalSignalDSL.g:4069:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
-                    	    // InternalSignalDSL.g:4070:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    // InternalSignalDSL.g:4393:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalSignalDSL.g:4394:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -11376,7 +12276,7 @@
                     	    break;
 
                     	default :
-                    	    break loop69;
+                    	    break loop68;
                         }
                     } while (true);
 
@@ -11386,13 +12286,13 @@
 
             }
 
-            // InternalSignalDSL.g:4089:5: ( (lv_explicitSyntax_4_0= '|' ) )
-            // InternalSignalDSL.g:4090:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalSignalDSL.g:4413:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalSignalDSL.g:4414:6: (lv_explicitSyntax_4_0= '|' )
             {
-            // InternalSignalDSL.g:4090:6: (lv_explicitSyntax_4_0= '|' )
-            // InternalSignalDSL.g:4091:7: lv_explicitSyntax_4_0= '|'
+            // InternalSignalDSL.g:4414:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalSignalDSL.g:4415:7: lv_explicitSyntax_4_0= '|'
             {
-            lv_explicitSyntax_4_0=(Token)match(input,70,FOLLOW_28); if (state.failed) return current;
+            lv_explicitSyntax_4_0=(Token)match(input,76,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               							newLeafNode(lv_explicitSyntax_4_0, grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0());
@@ -11418,11 +12318,11 @@
 
             }
 
-            // InternalSignalDSL.g:4105:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4106:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4429:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4430:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4106:4: (lv_expression_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4107:5: lv_expression_5_0= ruleXExpression
+            // InternalSignalDSL.g:4430:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4431:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -11478,7 +12378,7 @@
 
 
     // $ANTLR start "entryRuleXParenthesizedExpression"
-    // InternalSignalDSL.g:4128:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    // InternalSignalDSL.g:4452:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
     public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11486,8 +12386,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4128:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
-            // InternalSignalDSL.g:4129:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
+            // InternalSignalDSL.g:4452:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalSignalDSL.g:4453:2: iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); 
@@ -11518,7 +12418,7 @@
 
 
     // $ANTLR start "ruleXParenthesizedExpression"
-    // InternalSignalDSL.g:4135:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
+    // InternalSignalDSL.g:4459:1: ruleXParenthesizedExpression returns [EObject current=null] : (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) ;
     public final EObject ruleXParenthesizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11531,13 +12431,13 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4141:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
-            // InternalSignalDSL.g:4142:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalSignalDSL.g:4465:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalSignalDSL.g:4466:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
             {
-            // InternalSignalDSL.g:4142:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
-            // InternalSignalDSL.g:4143:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            // InternalSignalDSL.g:4466:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalSignalDSL.g:4467:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
             {
-            otherlv_0=(Token)match(input,30,FOLLOW_28); if (state.failed) return current;
+            otherlv_0=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0());
@@ -11559,7 +12459,7 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            otherlv_2=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
+            otherlv_2=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2());
@@ -11590,7 +12490,7 @@
 
 
     // $ANTLR start "entryRuleXIfExpression"
-    // InternalSignalDSL.g:4163:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    // InternalSignalDSL.g:4487:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
     public final EObject entryRuleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11598,8 +12498,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4163:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
-            // InternalSignalDSL.g:4164:2: iv_ruleXIfExpression= ruleXIfExpression EOF
+            // InternalSignalDSL.g:4487:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalSignalDSL.g:4488:2: iv_ruleXIfExpression= ruleXIfExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXIfExpressionRule()); 
@@ -11630,7 +12530,7 @@
 
 
     // $ANTLR start "ruleXIfExpression"
-    // InternalSignalDSL.g:4170:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
+    // InternalSignalDSL.g:4494:1: ruleXIfExpression returns [EObject current=null] : ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) ;
     public final EObject ruleXIfExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11649,14 +12549,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4176:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
-            // InternalSignalDSL.g:4177:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:4500:2: ( ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? ) )
+            // InternalSignalDSL.g:4501:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
             {
-            // InternalSignalDSL.g:4177:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
-            // InternalSignalDSL.g:4178:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            // InternalSignalDSL.g:4501:2: ( () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:4502:3: () otherlv_1= 'if' otherlv_2= '(' ( (lv_if_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_then_5_0= ruleXExpression ) ) ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
             {
-            // InternalSignalDSL.g:4178:3: ()
-            // InternalSignalDSL.g:4179:4: 
+            // InternalSignalDSL.g:4502:3: ()
+            // InternalSignalDSL.g:4503:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11668,23 +12568,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,71,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,77,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,30,FOLLOW_28); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:4193:3: ( (lv_if_3_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4194:4: (lv_if_3_0= ruleXExpression )
+            // InternalSignalDSL.g:4517:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4518:4: (lv_if_3_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4194:4: (lv_if_3_0= ruleXExpression )
-            // InternalSignalDSL.g:4195:5: lv_if_3_0= ruleXExpression
+            // InternalSignalDSL.g:4518:4: (lv_if_3_0= ruleXExpression )
+            // InternalSignalDSL.g:4519:5: lv_if_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -11715,17 +12615,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalSignalDSL.g:4216:3: ( (lv_then_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4217:4: (lv_then_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4540:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4541:4: (lv_then_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4217:4: (lv_then_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4218:5: lv_then_5_0= ruleXExpression
+            // InternalSignalDSL.g:4541:4: (lv_then_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4542:5: lv_then_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -11756,25 +12656,25 @@
 
             }
 
-            // InternalSignalDSL.g:4235:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
-            int alt71=2;
-            int LA71_0 = input.LA(1);
+            // InternalSignalDSL.g:4559:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
 
-            if ( (LA71_0==72) ) {
-                int LA71_1 = input.LA(2);
+            if ( (LA70_0==78) ) {
+                int LA70_1 = input.LA(2);
 
                 if ( (synpred31_InternalSignalDSL()) ) {
-                    alt71=1;
+                    alt70=1;
                 }
             }
-            switch (alt71) {
+            switch (alt70) {
                 case 1 :
-                    // InternalSignalDSL.g:4236:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4560:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
                     {
-                    // InternalSignalDSL.g:4236:4: ( ( 'else' )=>otherlv_6= 'else' )
-                    // InternalSignalDSL.g:4237:5: ( 'else' )=>otherlv_6= 'else'
+                    // InternalSignalDSL.g:4560:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalSignalDSL.g:4561:5: ( 'else' )=>otherlv_6= 'else'
                     {
-                    otherlv_6=(Token)match(input,72,FOLLOW_28); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,78,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
@@ -11783,11 +12683,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:4243:4: ( (lv_else_7_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4244:5: (lv_else_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:4567:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4568:5: (lv_else_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4244:5: (lv_else_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:4245:6: lv_else_7_0= ruleXExpression
+                    // InternalSignalDSL.g:4568:5: (lv_else_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:4569:6: lv_else_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -11849,7 +12749,7 @@
 
 
     // $ANTLR start "entryRuleXSwitchExpression"
-    // InternalSignalDSL.g:4267:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    // InternalSignalDSL.g:4591:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
     public final EObject entryRuleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11857,8 +12757,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4267:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
-            // InternalSignalDSL.g:4268:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
+            // InternalSignalDSL.g:4591:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalSignalDSL.g:4592:2: iv_ruleXSwitchExpression= ruleXSwitchExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSwitchExpressionRule()); 
@@ -11889,7 +12789,7 @@
 
 
     // $ANTLR start "ruleXSwitchExpression"
-    // InternalSignalDSL.g:4274:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
+    // InternalSignalDSL.g:4598:1: ruleXSwitchExpression returns [EObject current=null] : ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) ;
     public final EObject ruleXSwitchExpression() throws RecognitionException {
         EObject current = null;
 
@@ -11919,14 +12819,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4280:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
-            // InternalSignalDSL.g:4281:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalSignalDSL.g:4604:2: ( ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' ) )
+            // InternalSignalDSL.g:4605:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
             {
-            // InternalSignalDSL.g:4281:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
-            // InternalSignalDSL.g:4282:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
+            // InternalSignalDSL.g:4605:2: ( () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}' )
+            // InternalSignalDSL.g:4606:3: () otherlv_1= 'switch' ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) ) otherlv_10= '{' ( (lv_cases_11_0= ruleXCasePart ) )* (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )? otherlv_15= '}'
             {
-            // InternalSignalDSL.g:4282:3: ()
-            // InternalSignalDSL.g:4283:4: 
+            // InternalSignalDSL.g:4606:3: ()
+            // InternalSignalDSL.g:4607:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -11938,46 +12838,46 @@
 
             }
 
-            otherlv_1=(Token)match(input,73,FOLLOW_68); if (state.failed) return current;
+            otherlv_1=(Token)match(input,79,FOLLOW_68); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
               		
             }
-            // InternalSignalDSL.g:4293:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
-            int alt73=2;
-            alt73 = dfa73.predict(input);
-            switch (alt73) {
+            // InternalSignalDSL.g:4617:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )
+            int alt72=2;
+            alt72 = dfa72.predict(input);
+            switch (alt72) {
                 case 1 :
-                    // InternalSignalDSL.g:4294:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalSignalDSL.g:4618:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
                     {
-                    // InternalSignalDSL.g:4294:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
-                    // InternalSignalDSL.g:4295:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    // InternalSignalDSL.g:4618:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalSignalDSL.g:4619:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
                     {
-                    // InternalSignalDSL.g:4295:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-                    // InternalSignalDSL.g:4296:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalSignalDSL.g:4619:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalSignalDSL.g:4620:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
                     {
-                    // InternalSignalDSL.g:4306:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-                    // InternalSignalDSL.g:4307:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    // InternalSignalDSL.g:4630:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalSignalDSL.g:4631:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
                     {
-                    otherlv_2=(Token)match(input,30,FOLLOW_41); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,36,FOLLOW_41); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
                       						
                     }
-                    // InternalSignalDSL.g:4311:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-                    // InternalSignalDSL.g:4312:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4635:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalSignalDSL.g:4636:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
                     {
-                    // InternalSignalDSL.g:4312:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-                    // InternalSignalDSL.g:4313:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    // InternalSignalDSL.g:4636:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalSignalDSL.g:4637:9: lv_declaredParam_3_0= ruleJvmFormalParameter
                     {
                     if ( state.backtracking==0 ) {
 
                       									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
                       								
                     }
-                    pushFollow(FOLLOW_69);
+                    pushFollow(FOLLOW_15);
                     lv_declaredParam_3_0=ruleJvmFormalParameter();
 
                     state._fsp--;
@@ -12001,7 +12901,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,74,FOLLOW_28); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
@@ -12013,11 +12913,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:4336:5: ( (lv_switch_5_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4337:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:4660:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4661:6: (lv_switch_5_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4337:6: (lv_switch_5_0= ruleXExpression )
-                    // InternalSignalDSL.g:4338:7: lv_switch_5_0= ruleXExpression
+                    // InternalSignalDSL.g:4661:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:4662:7: lv_switch_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12048,7 +12948,7 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,32,FOLLOW_11); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,38,FOLLOW_9); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
@@ -12061,33 +12961,33 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:4361:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:4685:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
                     {
-                    // InternalSignalDSL.g:4361:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
-                    // InternalSignalDSL.g:4362:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4685:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:4686:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
                     {
-                    // InternalSignalDSL.g:4362:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
-                    int alt72=2;
-                    alt72 = dfa72.predict(input);
-                    switch (alt72) {
+                    // InternalSignalDSL.g:4686:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    int alt71=2;
+                    alt71 = dfa71.predict(input);
+                    switch (alt71) {
                         case 1 :
-                            // InternalSignalDSL.g:4363:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalSignalDSL.g:4687:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
                             {
-                            // InternalSignalDSL.g:4372:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
-                            // InternalSignalDSL.g:4373:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            // InternalSignalDSL.g:4696:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalSignalDSL.g:4697:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
                             {
-                            // InternalSignalDSL.g:4373:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
-                            // InternalSignalDSL.g:4374:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4697:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalSignalDSL.g:4698:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
                             {
-                            // InternalSignalDSL.g:4374:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
-                            // InternalSignalDSL.g:4375:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            // InternalSignalDSL.g:4698:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalSignalDSL.g:4699:9: lv_declaredParam_7_0= ruleJvmFormalParameter
                             {
                             if ( state.backtracking==0 ) {
 
                               									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
                               								
                             }
-                            pushFollow(FOLLOW_69);
+                            pushFollow(FOLLOW_15);
                             lv_declaredParam_7_0=ruleJvmFormalParameter();
 
                             state._fsp--;
@@ -12111,7 +13011,7 @@
 
                             }
 
-                            otherlv_8=(Token)match(input,74,FOLLOW_28); if (state.failed) return current;
+                            otherlv_8=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
@@ -12126,18 +13026,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:4398:5: ( (lv_switch_9_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4399:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:4722:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4723:6: (lv_switch_9_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4399:6: (lv_switch_9_0= ruleXExpression )
-                    // InternalSignalDSL.g:4400:7: lv_switch_9_0= ruleXExpression
+                    // InternalSignalDSL.g:4723:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:4724:7: lv_switch_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
                       						
                     }
-                    pushFollow(FOLLOW_11);
+                    pushFollow(FOLLOW_9);
                     lv_switch_9_0=ruleXExpression();
 
                     state._fsp--;
@@ -12170,36 +13070,36 @@
 
             }
 
-            otherlv_10=(Token)match(input,14,FOLLOW_70); if (state.failed) return current;
+            otherlv_10=(Token)match(input,14,FOLLOW_69); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
               		
             }
-            // InternalSignalDSL.g:4423:3: ( (lv_cases_11_0= ruleXCasePart ) )*
-            loop74:
+            // InternalSignalDSL.g:4747:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            loop73:
             do {
-                int alt74=2;
-                int LA74_0 = input.LA(1);
+                int alt73=2;
+                int LA73_0 = input.LA(1);
 
-                if ( (LA74_0==RULE_ID||(LA74_0>=30 && LA74_0<=31)||LA74_0==55||LA74_0==74||LA74_0==76) ) {
-                    alt74=1;
+                if ( (LA73_0==RULE_ID||LA73_0==24||(LA73_0>=36 && LA73_0<=37)||LA73_0==61||LA73_0==81) ) {
+                    alt73=1;
                 }
 
 
-                switch (alt74) {
+                switch (alt73) {
             	case 1 :
-            	    // InternalSignalDSL.g:4424:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalSignalDSL.g:4748:4: (lv_cases_11_0= ruleXCasePart )
             	    {
-            	    // InternalSignalDSL.g:4424:4: (lv_cases_11_0= ruleXCasePart )
-            	    // InternalSignalDSL.g:4425:5: lv_cases_11_0= ruleXCasePart
+            	    // InternalSignalDSL.g:4748:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalSignalDSL.g:4749:5: lv_cases_11_0= ruleXCasePart
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
             	      				
             	    }
-            	    pushFollow(FOLLOW_70);
+            	    pushFollow(FOLLOW_69);
             	    lv_cases_11_0=ruleXCasePart();
 
             	    state._fsp--;
@@ -12225,45 +13125,45 @@
             	    break;
 
             	default :
-            	    break loop74;
+            	    break loop73;
                 }
             } while (true);
 
-            // InternalSignalDSL.g:4442:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
-            int alt75=2;
-            int LA75_0 = input.LA(1);
+            // InternalSignalDSL.g:4766:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
 
-            if ( (LA75_0==75) ) {
-                alt75=1;
+            if ( (LA74_0==80) ) {
+                alt74=1;
             }
-            switch (alt75) {
+            switch (alt74) {
                 case 1 :
-                    // InternalSignalDSL.g:4443:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4767:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
                     {
-                    otherlv_12=(Token)match(input,75,FOLLOW_69); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,80,FOLLOW_15); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
                       			
                     }
-                    otherlv_13=(Token)match(input,74,FOLLOW_28); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
                       			
                     }
-                    // InternalSignalDSL.g:4451:4: ( (lv_default_14_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4452:5: (lv_default_14_0= ruleXExpression )
+                    // InternalSignalDSL.g:4775:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4776:5: (lv_default_14_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4452:5: (lv_default_14_0= ruleXExpression )
-                    // InternalSignalDSL.g:4453:6: lv_default_14_0= ruleXExpression
+                    // InternalSignalDSL.g:4776:5: (lv_default_14_0= ruleXExpression )
+                    // InternalSignalDSL.g:4777:6: lv_default_14_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
                       					
                     }
-                    pushFollow(FOLLOW_71);
+                    pushFollow(FOLLOW_70);
                     lv_default_14_0=ruleXExpression();
 
                     state._fsp--;
@@ -12324,7 +13224,7 @@
 
 
     // $ANTLR start "entryRuleXCasePart"
-    // InternalSignalDSL.g:4479:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    // InternalSignalDSL.g:4803:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
     public final EObject entryRuleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -12332,8 +13232,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4479:50: (iv_ruleXCasePart= ruleXCasePart EOF )
-            // InternalSignalDSL.g:4480:2: iv_ruleXCasePart= ruleXCasePart EOF
+            // InternalSignalDSL.g:4803:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalSignalDSL.g:4804:2: iv_ruleXCasePart= ruleXCasePart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCasePartRule()); 
@@ -12364,7 +13264,7 @@
 
 
     // $ANTLR start "ruleXCasePart"
-    // InternalSignalDSL.g:4486:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
+    // InternalSignalDSL.g:4810:1: ruleXCasePart returns [EObject current=null] : ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) ;
     public final EObject ruleXCasePart() throws RecognitionException {
         EObject current = null;
 
@@ -12382,14 +13282,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4492:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
-            // InternalSignalDSL.g:4493:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalSignalDSL.g:4816:2: ( ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) ) )
+            // InternalSignalDSL.g:4817:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
             {
-            // InternalSignalDSL.g:4493:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
-            // InternalSignalDSL.g:4494:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            // InternalSignalDSL.g:4817:2: ( () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) ) )
+            // InternalSignalDSL.g:4818:3: () ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )? (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )? ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
             {
-            // InternalSignalDSL.g:4494:3: ()
-            // InternalSignalDSL.g:4495:4: 
+            // InternalSignalDSL.g:4818:3: ()
+            // InternalSignalDSL.g:4819:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -12401,26 +13301,26 @@
 
             }
 
-            // InternalSignalDSL.g:4501:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
-            int alt76=2;
-            int LA76_0 = input.LA(1);
+            // InternalSignalDSL.g:4825:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
 
-            if ( (LA76_0==RULE_ID||LA76_0==30||LA76_0==55) ) {
-                alt76=1;
+            if ( (LA75_0==RULE_ID||LA75_0==36||LA75_0==61) ) {
+                alt75=1;
             }
-            switch (alt76) {
+            switch (alt75) {
                 case 1 :
-                    // InternalSignalDSL.g:4502:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:4826:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:4502:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
-                    // InternalSignalDSL.g:4503:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:4826:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:4827:5: lv_typeGuard_1_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
                       					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
                       				
                     }
-                    pushFollow(FOLLOW_72);
+                    pushFollow(FOLLOW_71);
                     lv_typeGuard_1_0=ruleJvmTypeReference();
 
                     state._fsp--;
@@ -12447,35 +13347,35 @@
 
             }
 
-            // InternalSignalDSL.g:4520:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
-            int alt77=2;
-            int LA77_0 = input.LA(1);
+            // InternalSignalDSL.g:4844:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
 
-            if ( (LA77_0==76) ) {
-                alt77=1;
+            if ( (LA76_0==81) ) {
+                alt76=1;
             }
-            switch (alt77) {
+            switch (alt76) {
                 case 1 :
-                    // InternalSignalDSL.g:4521:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4845:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
                     {
-                    otherlv_2=(Token)match(input,76,FOLLOW_28); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,81,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
                       			
                     }
-                    // InternalSignalDSL.g:4525:4: ( (lv_case_3_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4526:5: (lv_case_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4849:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4850:5: (lv_case_3_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4526:5: (lv_case_3_0= ruleXExpression )
-                    // InternalSignalDSL.g:4527:6: lv_case_3_0= ruleXExpression
+                    // InternalSignalDSL.g:4850:5: (lv_case_3_0= ruleXExpression )
+                    // InternalSignalDSL.g:4851:6: lv_case_3_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_73);
+                    pushFollow(FOLLOW_72);
                     lv_case_3_0=ruleXExpression();
 
                     state._fsp--;
@@ -12505,41 +13405,41 @@
 
             }
 
-            // InternalSignalDSL.g:4545:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
-            int alt78=2;
-            int LA78_0 = input.LA(1);
+            // InternalSignalDSL.g:4869:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            int alt77=2;
+            int LA77_0 = input.LA(1);
 
-            if ( (LA78_0==74) ) {
-                alt78=1;
+            if ( (LA77_0==24) ) {
+                alt77=1;
             }
-            else if ( (LA78_0==31) ) {
-                alt78=2;
+            else if ( (LA77_0==37) ) {
+                alt77=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 78, 0, input);
+                    new NoViableAltException("", 77, 0, input);
 
                 throw nvae;
             }
-            switch (alt78) {
+            switch (alt77) {
                 case 1 :
-                    // InternalSignalDSL.g:4546:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:4870:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
                     {
-                    // InternalSignalDSL.g:4546:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
-                    // InternalSignalDSL.g:4547:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4870:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:4871:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
                     {
-                    otherlv_4=(Token)match(input,74,FOLLOW_28); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
                       				
                     }
-                    // InternalSignalDSL.g:4551:5: ( (lv_then_5_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4552:6: (lv_then_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:4875:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:4876:6: (lv_then_5_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4552:6: (lv_then_5_0= ruleXExpression )
-                    // InternalSignalDSL.g:4553:7: lv_then_5_0= ruleXExpression
+                    // InternalSignalDSL.g:4876:6: (lv_then_5_0= ruleXExpression )
+                    // InternalSignalDSL.g:4877:7: lv_then_5_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -12577,15 +13477,15 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:4572:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalSignalDSL.g:4896:4: ( (lv_fallThrough_6_0= ',' ) )
                     {
-                    // InternalSignalDSL.g:4572:4: ( (lv_fallThrough_6_0= ',' ) )
-                    // InternalSignalDSL.g:4573:5: (lv_fallThrough_6_0= ',' )
+                    // InternalSignalDSL.g:4896:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalSignalDSL.g:4897:5: (lv_fallThrough_6_0= ',' )
                     {
-                    // InternalSignalDSL.g:4573:5: (lv_fallThrough_6_0= ',' )
-                    // InternalSignalDSL.g:4574:6: lv_fallThrough_6_0= ','
+                    // InternalSignalDSL.g:4897:5: (lv_fallThrough_6_0= ',' )
+                    // InternalSignalDSL.g:4898:6: lv_fallThrough_6_0= ','
                     {
-                    lv_fallThrough_6_0=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
+                    lv_fallThrough_6_0=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_fallThrough_6_0, grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0());
@@ -12636,7 +13536,7 @@
 
 
     // $ANTLR start "entryRuleXForLoopExpression"
-    // InternalSignalDSL.g:4591:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    // InternalSignalDSL.g:4915:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
     public final EObject entryRuleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12644,8 +13544,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4591:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
-            // InternalSignalDSL.g:4592:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
+            // InternalSignalDSL.g:4915:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalSignalDSL.g:4916:2: iv_ruleXForLoopExpression= ruleXForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXForLoopExpressionRule()); 
@@ -12676,7 +13576,7 @@
 
 
     // $ANTLR start "ruleXForLoopExpression"
-    // InternalSignalDSL.g:4598:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:4922:1: ruleXForLoopExpression returns [EObject current=null] : ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) ;
     public final EObject ruleXForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12695,20 +13595,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4604:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:4605:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:4928:2: ( ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:4929:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:4605:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:4606:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4929:2: ( ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:4930:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_forExpression_5_0= ruleXExpression ) ) otherlv_6= ')' ( (lv_eachExpression_7_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:4606:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
-            // InternalSignalDSL.g:4607:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalSignalDSL.g:4930:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalSignalDSL.g:4931:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
             {
-            // InternalSignalDSL.g:4620:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
-            // InternalSignalDSL.g:4621:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            // InternalSignalDSL.g:4944:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalSignalDSL.g:4945:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
             {
-            // InternalSignalDSL.g:4621:5: ()
-            // InternalSignalDSL.g:4622:6: 
+            // InternalSignalDSL.g:4945:5: ()
+            // InternalSignalDSL.g:4946:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -12720,30 +13620,30 @@
 
             }
 
-            otherlv_1=(Token)match(input,18,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,82,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,30,FOLLOW_41); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
               				
             }
-            // InternalSignalDSL.g:4636:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
-            // InternalSignalDSL.g:4637:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalSignalDSL.g:4960:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalSignalDSL.g:4961:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
             {
-            // InternalSignalDSL.g:4637:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
-            // InternalSignalDSL.g:4638:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            // InternalSignalDSL.g:4961:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalSignalDSL.g:4962:7: lv_declaredParam_3_0= ruleJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
               							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
               						
             }
-            pushFollow(FOLLOW_69);
+            pushFollow(FOLLOW_15);
             lv_declaredParam_3_0=ruleJvmFormalParameter();
 
             state._fsp--;
@@ -12767,7 +13667,7 @@
 
             }
 
-            otherlv_4=(Token)match(input,74,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,24,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
@@ -12779,11 +13679,11 @@
 
             }
 
-            // InternalSignalDSL.g:4661:3: ( (lv_forExpression_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4662:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4985:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:4986:4: (lv_forExpression_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4662:4: (lv_forExpression_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4663:5: lv_forExpression_5_0= ruleXExpression
+            // InternalSignalDSL.g:4986:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:4987:5: lv_forExpression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -12814,17 +13714,17 @@
 
             }
 
-            otherlv_6=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
+            otherlv_6=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:4684:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4685:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalSignalDSL.g:5008:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5009:4: (lv_eachExpression_7_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4685:4: (lv_eachExpression_7_0= ruleXExpression )
-            // InternalSignalDSL.g:4686:5: lv_eachExpression_7_0= ruleXExpression
+            // InternalSignalDSL.g:5009:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalSignalDSL.g:5010:5: lv_eachExpression_7_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -12880,7 +13780,7 @@
 
 
     // $ANTLR start "entryRuleXBasicForLoopExpression"
-    // InternalSignalDSL.g:4707:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    // InternalSignalDSL.g:5031:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
     public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12888,8 +13788,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4707:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
-            // InternalSignalDSL.g:4708:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
+            // InternalSignalDSL.g:5031:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalSignalDSL.g:5032:2: iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBasicForLoopExpressionRule()); 
@@ -12920,7 +13820,7 @@
 
 
     // $ANTLR start "ruleXBasicForLoopExpression"
-    // InternalSignalDSL.g:4714:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:5038:1: ruleXBasicForLoopExpression returns [EObject current=null] : ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) ;
     public final EObject ruleXBasicForLoopExpression() throws RecognitionException {
         EObject current = null;
 
@@ -12948,14 +13848,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4720:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:4721:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5044:2: ( ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:5045:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:4721:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:4722:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5045:2: ( () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5046:3: () otherlv_1= 'for' otherlv_2= '(' ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )? otherlv_6= ';' ( (lv_expression_7_0= ruleXExpression ) )? otherlv_8= ';' ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )? otherlv_12= ')' ( (lv_eachExpression_13_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:4722:3: ()
-            // InternalSignalDSL.g:4723:4: 
+            // InternalSignalDSL.g:5046:3: ()
+            // InternalSignalDSL.g:5047:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -12967,41 +13867,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,18,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,82,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,30,FOLLOW_74); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_73); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:4737:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
-            int alt80=2;
-            int LA80_0 = input.LA(1);
+            // InternalSignalDSL.g:5061:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
 
-            if ( ((LA80_0>=RULE_STRING && LA80_0<=RULE_DECIMAL)||LA80_0==14||LA80_0==18||(LA80_0>=23 && LA80_0<=25)||LA80_0==30||(LA80_0>=34 && LA80_0<=35)||LA80_0==42||(LA80_0>=58 && LA80_0<=59)||LA80_0==63||LA80_0==71||LA80_0==73||(LA80_0>=77 && LA80_0<=90)||LA80_0==92) ) {
-                alt80=1;
+            if ( ((LA79_0>=RULE_STRING && LA79_0<=RULE_DECIMAL)||LA79_0==14||(LA79_0>=29 && LA79_0<=31)||LA79_0==36||(LA79_0>=40 && LA79_0<=41)||LA79_0==48||(LA79_0>=64 && LA79_0<=65)||LA79_0==69||LA79_0==77||LA79_0==79||(LA79_0>=82 && LA79_0<=96)||LA79_0==98) ) {
+                alt79=1;
             }
-            switch (alt80) {
+            switch (alt79) {
                 case 1 :
-                    // InternalSignalDSL.g:4738:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    // InternalSignalDSL.g:5062:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
                     {
-                    // InternalSignalDSL.g:4738:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
-                    // InternalSignalDSL.g:4739:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalSignalDSL.g:5062:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalSignalDSL.g:5063:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
                     {
-                    // InternalSignalDSL.g:4739:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
-                    // InternalSignalDSL.g:4740:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    // InternalSignalDSL.g:5063:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalSignalDSL.g:5064:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
                       					
                     }
-                    pushFollow(FOLLOW_75);
+                    pushFollow(FOLLOW_74);
                     lv_initExpressions_3_0=ruleXExpressionOrVarDeclaration();
 
                     state._fsp--;
@@ -13025,39 +13925,39 @@
 
                     }
 
-                    // InternalSignalDSL.g:4757:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
-                    loop79:
+                    // InternalSignalDSL.g:5081:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    loop78:
                     do {
-                        int alt79=2;
-                        int LA79_0 = input.LA(1);
+                        int alt78=2;
+                        int LA78_0 = input.LA(1);
 
-                        if ( (LA79_0==31) ) {
-                            alt79=1;
+                        if ( (LA78_0==37) ) {
+                            alt78=1;
                         }
 
 
-                        switch (alt79) {
+                        switch (alt78) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:4758:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalSignalDSL.g:5082:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
                     	    {
-                    	    otherlv_4=(Token)match(input,31,FOLLOW_76); if (state.failed) return current;
+                    	    otherlv_4=(Token)match(input,37,FOLLOW_75); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:4762:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
-                    	    // InternalSignalDSL.g:4763:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalSignalDSL.g:5086:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalSignalDSL.g:5087:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
                     	    {
-                    	    // InternalSignalDSL.g:4763:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
-                    	    // InternalSignalDSL.g:4764:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    // InternalSignalDSL.g:5087:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalSignalDSL.g:5088:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_75);
+                    	    pushFollow(FOLLOW_74);
                     	    lv_initExpressions_5_0=ruleXExpressionOrVarDeclaration();
 
                     	    state._fsp--;
@@ -13086,7 +13986,7 @@
                     	    break;
 
                     	default :
-                    	    break loop79;
+                    	    break loop78;
                         }
                     } while (true);
 
@@ -13096,32 +13996,32 @@
 
             }
 
-            otherlv_6=(Token)match(input,28,FOLLOW_77); if (state.failed) return current;
+            otherlv_6=(Token)match(input,34,FOLLOW_76); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
               		
             }
-            // InternalSignalDSL.g:4787:3: ( (lv_expression_7_0= ruleXExpression ) )?
-            int alt81=2;
-            int LA81_0 = input.LA(1);
+            // InternalSignalDSL.g:5111:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
 
-            if ( ((LA81_0>=RULE_STRING && LA81_0<=RULE_DECIMAL)||LA81_0==14||LA81_0==18||(LA81_0>=23 && LA81_0<=25)||LA81_0==30||(LA81_0>=34 && LA81_0<=35)||LA81_0==42||(LA81_0>=58 && LA81_0<=59)||LA81_0==63||LA81_0==71||LA81_0==73||(LA81_0>=77 && LA81_0<=78)||(LA81_0>=81 && LA81_0<=90)||LA81_0==92) ) {
-                alt81=1;
+            if ( ((LA80_0>=RULE_STRING && LA80_0<=RULE_DECIMAL)||LA80_0==14||(LA80_0>=29 && LA80_0<=31)||LA80_0==36||(LA80_0>=40 && LA80_0<=41)||LA80_0==48||(LA80_0>=64 && LA80_0<=65)||LA80_0==69||LA80_0==77||LA80_0==79||(LA80_0>=82 && LA80_0<=84)||(LA80_0>=87 && LA80_0<=96)||LA80_0==98) ) {
+                alt80=1;
             }
-            switch (alt81) {
+            switch (alt80) {
                 case 1 :
-                    // InternalSignalDSL.g:4788:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5112:4: (lv_expression_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4788:4: (lv_expression_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:4789:5: lv_expression_7_0= ruleXExpression
+                    // InternalSignalDSL.g:5112:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5113:5: lv_expression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
                       					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
                       				
                     }
-                    pushFollow(FOLLOW_78);
+                    pushFollow(FOLLOW_77);
                     lv_expression_7_0=ruleXExpression();
 
                     state._fsp--;
@@ -13148,28 +14048,28 @@
 
             }
 
-            otherlv_8=(Token)match(input,28,FOLLOW_24); if (state.failed) return current;
+            otherlv_8=(Token)match(input,34,FOLLOW_24); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
               		
             }
-            // InternalSignalDSL.g:4810:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
-            int alt83=2;
-            int LA83_0 = input.LA(1);
+            // InternalSignalDSL.g:5134:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
 
-            if ( ((LA83_0>=RULE_STRING && LA83_0<=RULE_DECIMAL)||LA83_0==14||LA83_0==18||(LA83_0>=23 && LA83_0<=25)||LA83_0==30||(LA83_0>=34 && LA83_0<=35)||LA83_0==42||(LA83_0>=58 && LA83_0<=59)||LA83_0==63||LA83_0==71||LA83_0==73||(LA83_0>=77 && LA83_0<=78)||(LA83_0>=81 && LA83_0<=90)||LA83_0==92) ) {
-                alt83=1;
+            if ( ((LA82_0>=RULE_STRING && LA82_0<=RULE_DECIMAL)||LA82_0==14||(LA82_0>=29 && LA82_0<=31)||LA82_0==36||(LA82_0>=40 && LA82_0<=41)||LA82_0==48||(LA82_0>=64 && LA82_0<=65)||LA82_0==69||LA82_0==77||LA82_0==79||(LA82_0>=82 && LA82_0<=84)||(LA82_0>=87 && LA82_0<=96)||LA82_0==98) ) {
+                alt82=1;
             }
-            switch (alt83) {
+            switch (alt82) {
                 case 1 :
-                    // InternalSignalDSL.g:4811:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    // InternalSignalDSL.g:5135:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
                     {
-                    // InternalSignalDSL.g:4811:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:4812:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:5135:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5136:5: (lv_updateExpressions_9_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:4812:5: (lv_updateExpressions_9_0= ruleXExpression )
-                    // InternalSignalDSL.g:4813:6: lv_updateExpressions_9_0= ruleXExpression
+                    // InternalSignalDSL.g:5136:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalSignalDSL.g:5137:6: lv_updateExpressions_9_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -13200,32 +14100,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:4830:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
-                    loop82:
+                    // InternalSignalDSL.g:5154:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    loop81:
                     do {
-                        int alt82=2;
-                        int LA82_0 = input.LA(1);
+                        int alt81=2;
+                        int LA81_0 = input.LA(1);
 
-                        if ( (LA82_0==31) ) {
-                            alt82=1;
+                        if ( (LA81_0==37) ) {
+                            alt81=1;
                         }
 
 
-                        switch (alt82) {
+                        switch (alt81) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:4831:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:5155:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
                     	    {
-                    	    otherlv_10=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                    	    otherlv_10=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:4835:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
-                    	    // InternalSignalDSL.g:4836:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:5159:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalSignalDSL.g:5160:6: (lv_updateExpressions_11_0= ruleXExpression )
                     	    {
-                    	    // InternalSignalDSL.g:4836:6: (lv_updateExpressions_11_0= ruleXExpression )
-                    	    // InternalSignalDSL.g:4837:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    // InternalSignalDSL.g:5160:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalSignalDSL.g:5161:7: lv_updateExpressions_11_0= ruleXExpression
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -13261,7 +14161,7 @@
                     	    break;
 
                     	default :
-                    	    break loop82;
+                    	    break loop81;
                         }
                     } while (true);
 
@@ -13271,17 +14171,17 @@
 
             }
 
-            otherlv_12=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
+            otherlv_12=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
               		
             }
-            // InternalSignalDSL.g:4860:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4861:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalSignalDSL.g:5184:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5185:4: (lv_eachExpression_13_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4861:4: (lv_eachExpression_13_0= ruleXExpression )
-            // InternalSignalDSL.g:4862:5: lv_eachExpression_13_0= ruleXExpression
+            // InternalSignalDSL.g:5185:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalSignalDSL.g:5186:5: lv_eachExpression_13_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -13337,7 +14237,7 @@
 
 
     // $ANTLR start "entryRuleXWhileExpression"
-    // InternalSignalDSL.g:4883:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    // InternalSignalDSL.g:5207:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
     public final EObject entryRuleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13345,8 +14245,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4883:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
-            // InternalSignalDSL.g:4884:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
+            // InternalSignalDSL.g:5207:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalSignalDSL.g:5208:2: iv_ruleXWhileExpression= ruleXWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXWhileExpressionRule()); 
@@ -13377,7 +14277,7 @@
 
 
     // $ANTLR start "ruleXWhileExpression"
-    // InternalSignalDSL.g:4890:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:5214:1: ruleXWhileExpression returns [EObject current=null] : ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13393,14 +14293,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4896:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:4897:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5220:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:5221:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:4897:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:4898:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5221:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:5222:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:4898:3: ()
-            // InternalSignalDSL.g:4899:4: 
+            // InternalSignalDSL.g:5222:3: ()
+            // InternalSignalDSL.g:5223:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13412,23 +14312,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,77,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,83,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,30,FOLLOW_28); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:4913:3: ( (lv_predicate_3_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4914:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalSignalDSL.g:5237:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5238:4: (lv_predicate_3_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4914:4: (lv_predicate_3_0= ruleXExpression )
-            // InternalSignalDSL.g:4915:5: lv_predicate_3_0= ruleXExpression
+            // InternalSignalDSL.g:5238:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalSignalDSL.g:5239:5: lv_predicate_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -13459,17 +14359,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
               		
             }
-            // InternalSignalDSL.g:4936:3: ( (lv_body_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4937:4: (lv_body_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5260:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5261:4: (lv_body_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4937:4: (lv_body_5_0= ruleXExpression )
-            // InternalSignalDSL.g:4938:5: lv_body_5_0= ruleXExpression
+            // InternalSignalDSL.g:5261:4: (lv_body_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5262:5: lv_body_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -13525,7 +14425,7 @@
 
 
     // $ANTLR start "entryRuleXDoWhileExpression"
-    // InternalSignalDSL.g:4959:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    // InternalSignalDSL.g:5283:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
     public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13533,8 +14433,8 @@
 
 
         try {
-            // InternalSignalDSL.g:4959:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
-            // InternalSignalDSL.g:4960:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
+            // InternalSignalDSL.g:5283:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalSignalDSL.g:5284:2: iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXDoWhileExpressionRule()); 
@@ -13565,7 +14465,7 @@
 
 
     // $ANTLR start "ruleXDoWhileExpression"
-    // InternalSignalDSL.g:4966:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
+    // InternalSignalDSL.g:5290:1: ruleXDoWhileExpression returns [EObject current=null] : ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) ;
     public final EObject ruleXDoWhileExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13582,14 +14482,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:4972:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
-            // InternalSignalDSL.g:4973:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalSignalDSL.g:5296:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalSignalDSL.g:5297:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
             {
-            // InternalSignalDSL.g:4973:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
-            // InternalSignalDSL.g:4974:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            // InternalSignalDSL.g:5297:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalSignalDSL.g:5298:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
             {
-            // InternalSignalDSL.g:4974:3: ()
-            // InternalSignalDSL.g:4975:4: 
+            // InternalSignalDSL.g:5298:3: ()
+            // InternalSignalDSL.g:5299:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13601,24 +14501,24 @@
 
             }
 
-            otherlv_1=(Token)match(input,78,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,84,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
               		
             }
-            // InternalSignalDSL.g:4985:3: ( (lv_body_2_0= ruleXExpression ) )
-            // InternalSignalDSL.g:4986:4: (lv_body_2_0= ruleXExpression )
+            // InternalSignalDSL.g:5309:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5310:4: (lv_body_2_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:4986:4: (lv_body_2_0= ruleXExpression )
-            // InternalSignalDSL.g:4987:5: lv_body_2_0= ruleXExpression
+            // InternalSignalDSL.g:5310:4: (lv_body_2_0= ruleXExpression )
+            // InternalSignalDSL.g:5311:5: lv_body_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_79);
+            pushFollow(FOLLOW_78);
             lv_body_2_0=ruleXExpression();
 
             state._fsp--;
@@ -13642,23 +14542,23 @@
 
             }
 
-            otherlv_3=(Token)match(input,77,FOLLOW_66); if (state.failed) return current;
+            otherlv_3=(Token)match(input,83,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
               		
             }
-            otherlv_4=(Token)match(input,30,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
               		
             }
-            // InternalSignalDSL.g:5012:3: ( (lv_predicate_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:5013:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5336:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:5337:4: (lv_predicate_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:5013:4: (lv_predicate_5_0= ruleXExpression )
-            // InternalSignalDSL.g:5014:5: lv_predicate_5_0= ruleXExpression
+            // InternalSignalDSL.g:5337:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalSignalDSL.g:5338:5: lv_predicate_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -13689,7 +14589,7 @@
 
             }
 
-            otherlv_6=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
+            otherlv_6=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_6, grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6());
@@ -13720,7 +14620,7 @@
 
 
     // $ANTLR start "entryRuleXBlockExpression"
-    // InternalSignalDSL.g:5039:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    // InternalSignalDSL.g:5363:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
     public final EObject entryRuleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13728,8 +14628,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5039:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
-            // InternalSignalDSL.g:5040:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
+            // InternalSignalDSL.g:5363:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalSignalDSL.g:5364:2: iv_ruleXBlockExpression= ruleXBlockExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBlockExpressionRule()); 
@@ -13760,7 +14660,7 @@
 
 
     // $ANTLR start "ruleXBlockExpression"
-    // InternalSignalDSL.g:5046:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
+    // InternalSignalDSL.g:5370:1: ruleXBlockExpression returns [EObject current=null] : ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) ;
     public final EObject ruleXBlockExpression() throws RecognitionException {
         EObject current = null;
 
@@ -13774,14 +14674,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5052:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
-            // InternalSignalDSL.g:5053:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalSignalDSL.g:5376:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalSignalDSL.g:5377:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
             {
-            // InternalSignalDSL.g:5053:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
-            // InternalSignalDSL.g:5054:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            // InternalSignalDSL.g:5377:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalSignalDSL.g:5378:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
             {
-            // InternalSignalDSL.g:5054:3: ()
-            // InternalSignalDSL.g:5055:4: 
+            // InternalSignalDSL.g:5378:3: ()
+            // InternalSignalDSL.g:5379:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -13793,39 +14693,39 @@
 
             }
 
-            otherlv_1=(Token)match(input,14,FOLLOW_80); if (state.failed) return current;
+            otherlv_1=(Token)match(input,14,FOLLOW_79); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
               		
             }
-            // InternalSignalDSL.g:5065:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
-            loop85:
+            // InternalSignalDSL.g:5389:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            loop84:
             do {
-                int alt85=2;
-                int LA85_0 = input.LA(1);
+                int alt84=2;
+                int LA84_0 = input.LA(1);
 
-                if ( ((LA85_0>=RULE_STRING && LA85_0<=RULE_DECIMAL)||LA85_0==14||LA85_0==18||(LA85_0>=23 && LA85_0<=25)||LA85_0==30||(LA85_0>=34 && LA85_0<=35)||LA85_0==42||(LA85_0>=58 && LA85_0<=59)||LA85_0==63||LA85_0==71||LA85_0==73||(LA85_0>=77 && LA85_0<=90)||LA85_0==92) ) {
-                    alt85=1;
+                if ( ((LA84_0>=RULE_STRING && LA84_0<=RULE_DECIMAL)||LA84_0==14||(LA84_0>=29 && LA84_0<=31)||LA84_0==36||(LA84_0>=40 && LA84_0<=41)||LA84_0==48||(LA84_0>=64 && LA84_0<=65)||LA84_0==69||LA84_0==77||LA84_0==79||(LA84_0>=82 && LA84_0<=96)||LA84_0==98) ) {
+                    alt84=1;
                 }
 
 
-                switch (alt85) {
+                switch (alt84) {
             	case 1 :
-            	    // InternalSignalDSL.g:5066:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    // InternalSignalDSL.g:5390:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
             	    {
-            	    // InternalSignalDSL.g:5066:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
-            	    // InternalSignalDSL.g:5067:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:5390:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalSignalDSL.g:5391:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
             	    {
-            	    // InternalSignalDSL.g:5067:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
-            	    // InternalSignalDSL.g:5068:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    // InternalSignalDSL.g:5391:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalSignalDSL.g:5392:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
             	      					
             	    }
-            	    pushFollow(FOLLOW_81);
+            	    pushFollow(FOLLOW_80);
             	    lv_expressions_2_0=ruleXExpressionOrVarDeclaration();
 
             	    state._fsp--;
@@ -13849,18 +14749,18 @@
 
             	    }
 
-            	    // InternalSignalDSL.g:5085:4: (otherlv_3= ';' )?
-            	    int alt84=2;
-            	    int LA84_0 = input.LA(1);
+            	    // InternalSignalDSL.g:5409:4: (otherlv_3= ';' )?
+            	    int alt83=2;
+            	    int LA83_0 = input.LA(1);
 
-            	    if ( (LA84_0==28) ) {
-            	        alt84=1;
+            	    if ( (LA83_0==34) ) {
+            	        alt83=1;
             	    }
-            	    switch (alt84) {
+            	    switch (alt83) {
             	        case 1 :
-            	            // InternalSignalDSL.g:5086:5: otherlv_3= ';'
+            	            // InternalSignalDSL.g:5410:5: otherlv_3= ';'
             	            {
-            	            otherlv_3=(Token)match(input,28,FOLLOW_80); if (state.failed) return current;
+            	            otherlv_3=(Token)match(input,34,FOLLOW_79); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
             	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
@@ -13877,7 +14777,7 @@
             	    break;
 
             	default :
-            	    break loop85;
+            	    break loop84;
                 }
             } while (true);
 
@@ -13912,7 +14812,7 @@
 
 
     // $ANTLR start "entryRuleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:5100:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    // InternalSignalDSL.g:5424:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
     public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -13920,8 +14820,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5100:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
-            // InternalSignalDSL.g:5101:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
+            // InternalSignalDSL.g:5424:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalSignalDSL.g:5425:2: iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionOrVarDeclarationRule()); 
@@ -13952,7 +14852,7 @@
 
 
     // $ANTLR start "ruleXExpressionOrVarDeclaration"
-    // InternalSignalDSL.g:5107:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
+    // InternalSignalDSL.g:5431:1: ruleXExpressionOrVarDeclaration returns [EObject current=null] : (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXExpressionOrVarDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -13965,29 +14865,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5113:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
-            // InternalSignalDSL.g:5114:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            // InternalSignalDSL.g:5437:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalSignalDSL.g:5438:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
             {
-            // InternalSignalDSL.g:5114:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
-            int alt86=2;
-            int LA86_0 = input.LA(1);
+            // InternalSignalDSL.g:5438:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            int alt85=2;
+            int LA85_0 = input.LA(1);
 
-            if ( ((LA86_0>=79 && LA86_0<=80)) ) {
-                alt86=1;
+            if ( ((LA85_0>=85 && LA85_0<=86)) ) {
+                alt85=1;
             }
-            else if ( ((LA86_0>=RULE_STRING && LA86_0<=RULE_DECIMAL)||LA86_0==14||LA86_0==18||(LA86_0>=23 && LA86_0<=25)||LA86_0==30||(LA86_0>=34 && LA86_0<=35)||LA86_0==42||(LA86_0>=58 && LA86_0<=59)||LA86_0==63||LA86_0==71||LA86_0==73||(LA86_0>=77 && LA86_0<=78)||(LA86_0>=81 && LA86_0<=90)||LA86_0==92) ) {
-                alt86=2;
+            else if ( ((LA85_0>=RULE_STRING && LA85_0<=RULE_DECIMAL)||LA85_0==14||(LA85_0>=29 && LA85_0<=31)||LA85_0==36||(LA85_0>=40 && LA85_0<=41)||LA85_0==48||(LA85_0>=64 && LA85_0<=65)||LA85_0==69||LA85_0==77||LA85_0==79||(LA85_0>=82 && LA85_0<=84)||(LA85_0>=87 && LA85_0<=96)||LA85_0==98) ) {
+                alt85=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 86, 0, input);
+                    new NoViableAltException("", 85, 0, input);
 
                 throw nvae;
             }
-            switch (alt86) {
+            switch (alt85) {
                 case 1 :
-                    // InternalSignalDSL.g:5115:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
+                    // InternalSignalDSL.g:5439:3: this_XVariableDeclaration_0= ruleXVariableDeclaration
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14009,7 +14909,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5124:3: this_XExpression_1= ruleXExpression
+                    // InternalSignalDSL.g:5448:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14055,7 +14955,7 @@
 
 
     // $ANTLR start "entryRuleXVariableDeclaration"
-    // InternalSignalDSL.g:5136:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    // InternalSignalDSL.g:5460:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
     public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -14063,8 +14963,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5136:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
-            // InternalSignalDSL.g:5137:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
+            // InternalSignalDSL.g:5460:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalSignalDSL.g:5461:2: iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXVariableDeclarationRule()); 
@@ -14095,7 +14995,7 @@
 
 
     // $ANTLR start "ruleXVariableDeclaration"
-    // InternalSignalDSL.g:5143:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
+    // InternalSignalDSL.g:5467:1: ruleXVariableDeclaration returns [EObject current=null] : ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) ;
     public final EObject ruleXVariableDeclaration() throws RecognitionException {
         EObject current = null;
 
@@ -14115,14 +15015,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5149:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
-            // InternalSignalDSL.g:5150:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:5473:2: ( ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? ) )
+            // InternalSignalDSL.g:5474:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
             {
-            // InternalSignalDSL.g:5150:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
-            // InternalSignalDSL.g:5151:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            // InternalSignalDSL.g:5474:2: ( () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )? )
+            // InternalSignalDSL.g:5475:3: () ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' ) ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) ) (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
             {
-            // InternalSignalDSL.g:5151:3: ()
-            // InternalSignalDSL.g:5152:4: 
+            // InternalSignalDSL.g:5475:3: ()
+            // InternalSignalDSL.g:5476:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14134,34 +15034,34 @@
 
             }
 
-            // InternalSignalDSL.g:5158:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
-            int alt87=2;
-            int LA87_0 = input.LA(1);
+            // InternalSignalDSL.g:5482:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            int alt86=2;
+            int LA86_0 = input.LA(1);
 
-            if ( (LA87_0==79) ) {
-                alt87=1;
+            if ( (LA86_0==85) ) {
+                alt86=1;
             }
-            else if ( (LA87_0==80) ) {
-                alt87=2;
+            else if ( (LA86_0==86) ) {
+                alt86=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 87, 0, input);
+                    new NoViableAltException("", 86, 0, input);
 
                 throw nvae;
             }
-            switch (alt87) {
+            switch (alt86) {
                 case 1 :
-                    // InternalSignalDSL.g:5159:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalSignalDSL.g:5483:4: ( (lv_writeable_1_0= 'var' ) )
                     {
-                    // InternalSignalDSL.g:5159:4: ( (lv_writeable_1_0= 'var' ) )
-                    // InternalSignalDSL.g:5160:5: (lv_writeable_1_0= 'var' )
+                    // InternalSignalDSL.g:5483:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalSignalDSL.g:5484:5: (lv_writeable_1_0= 'var' )
                     {
-                    // InternalSignalDSL.g:5160:5: (lv_writeable_1_0= 'var' )
-                    // InternalSignalDSL.g:5161:6: lv_writeable_1_0= 'var'
+                    // InternalSignalDSL.g:5484:5: (lv_writeable_1_0= 'var' )
+                    // InternalSignalDSL.g:5485:6: lv_writeable_1_0= 'var'
                     {
-                    lv_writeable_1_0=(Token)match(input,79,FOLLOW_41); if (state.failed) return current;
+                    lv_writeable_1_0=(Token)match(input,85,FOLLOW_41); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_writeable_1_0, grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0());
@@ -14185,9 +15085,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5174:4: otherlv_2= 'val'
+                    // InternalSignalDSL.g:5498:4: otherlv_2= 'val'
                     {
-                    otherlv_2=(Token)match(input,80,FOLLOW_41); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,86,FOLLOW_41); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
@@ -14199,55 +15099,55 @@
 
             }
 
-            // InternalSignalDSL.g:5179:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
-            int alt88=2;
-            int LA88_0 = input.LA(1);
+            // InternalSignalDSL.g:5503:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            int alt87=2;
+            int LA87_0 = input.LA(1);
 
-            if ( (LA88_0==RULE_ID) ) {
-                int LA88_1 = input.LA(2);
+            if ( (LA87_0==RULE_ID) ) {
+                int LA87_1 = input.LA(2);
 
                 if ( (synpred35_InternalSignalDSL()) ) {
-                    alt88=1;
+                    alt87=1;
                 }
                 else if ( (true) ) {
-                    alt88=2;
+                    alt87=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 88, 1, input);
+                        new NoViableAltException("", 87, 1, input);
 
                     throw nvae;
                 }
             }
-            else if ( (LA88_0==30) && (synpred35_InternalSignalDSL())) {
-                alt88=1;
+            else if ( (LA87_0==36) && (synpred35_InternalSignalDSL())) {
+                alt87=1;
             }
-            else if ( (LA88_0==55) && (synpred35_InternalSignalDSL())) {
-                alt88=1;
+            else if ( (LA87_0==61) && (synpred35_InternalSignalDSL())) {
+                alt87=1;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 88, 0, input);
+                    new NoViableAltException("", 87, 0, input);
 
                 throw nvae;
             }
-            switch (alt88) {
+            switch (alt87) {
                 case 1 :
-                    // InternalSignalDSL.g:5180:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:5504:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
                     {
-                    // InternalSignalDSL.g:5180:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
-                    // InternalSignalDSL.g:5181:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalSignalDSL.g:5504:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalSignalDSL.g:5505:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
                     {
-                    // InternalSignalDSL.g:5194:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
-                    // InternalSignalDSL.g:5195:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5518:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalSignalDSL.g:5519:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
                     {
-                    // InternalSignalDSL.g:5195:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
-                    // InternalSignalDSL.g:5196:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5519:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalSignalDSL.g:5520:7: (lv_type_3_0= ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:5196:7: (lv_type_3_0= ruleJvmTypeReference )
-                    // InternalSignalDSL.g:5197:8: lv_type_3_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:5520:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5521:8: lv_type_3_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14278,18 +15178,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:5214:6: ( (lv_name_4_0= ruleValidID ) )
-                    // InternalSignalDSL.g:5215:7: (lv_name_4_0= ruleValidID )
+                    // InternalSignalDSL.g:5538:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5539:7: (lv_name_4_0= ruleValidID )
                     {
-                    // InternalSignalDSL.g:5215:7: (lv_name_4_0= ruleValidID )
-                    // InternalSignalDSL.g:5216:8: lv_name_4_0= ruleValidID
+                    // InternalSignalDSL.g:5539:7: (lv_name_4_0= ruleValidID )
+                    // InternalSignalDSL.g:5540:8: lv_name_4_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
                       								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
                       							
                     }
-                    pushFollow(FOLLOW_82);
+                    pushFollow(FOLLOW_81);
                     lv_name_4_0=ruleValidID();
 
                     state._fsp--;
@@ -14323,20 +15223,20 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5236:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5560:4: ( (lv_name_5_0= ruleValidID ) )
                     {
-                    // InternalSignalDSL.g:5236:4: ( (lv_name_5_0= ruleValidID ) )
-                    // InternalSignalDSL.g:5237:5: (lv_name_5_0= ruleValidID )
+                    // InternalSignalDSL.g:5560:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalSignalDSL.g:5561:5: (lv_name_5_0= ruleValidID )
                     {
-                    // InternalSignalDSL.g:5237:5: (lv_name_5_0= ruleValidID )
-                    // InternalSignalDSL.g:5238:6: lv_name_5_0= ruleValidID
+                    // InternalSignalDSL.g:5561:5: (lv_name_5_0= ruleValidID )
+                    // InternalSignalDSL.g:5562:6: lv_name_5_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
                       						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
                       					
                     }
-                    pushFollow(FOLLOW_82);
+                    pushFollow(FOLLOW_81);
                     lv_name_5_0=ruleValidID();
 
                     state._fsp--;
@@ -14366,28 +15266,28 @@
 
             }
 
-            // InternalSignalDSL.g:5256:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
-            int alt89=2;
-            int LA89_0 = input.LA(1);
+            // InternalSignalDSL.g:5580:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            int alt88=2;
+            int LA88_0 = input.LA(1);
 
-            if ( (LA89_0==33) ) {
-                alt89=1;
+            if ( (LA88_0==39) ) {
+                alt88=1;
             }
-            switch (alt89) {
+            switch (alt88) {
                 case 1 :
-                    // InternalSignalDSL.g:5257:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5581:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,33,FOLLOW_28); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,39,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
                       			
                     }
-                    // InternalSignalDSL.g:5261:4: ( (lv_right_7_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:5262:5: (lv_right_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5585:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:5586:5: (lv_right_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:5262:5: (lv_right_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:5263:6: lv_right_7_0= ruleXExpression
+                    // InternalSignalDSL.g:5586:5: (lv_right_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:5587:6: lv_right_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14449,7 +15349,7 @@
 
 
     // $ANTLR start "entryRuleJvmFormalParameter"
-    // InternalSignalDSL.g:5285:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:5609:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
     public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -14457,8 +15357,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5285:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
-            // InternalSignalDSL.g:5286:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
+            // InternalSignalDSL.g:5609:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalSignalDSL.g:5610:2: iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmFormalParameterRule()); 
@@ -14489,7 +15389,7 @@
 
 
     // $ANTLR start "ruleJvmFormalParameter"
-    // InternalSignalDSL.g:5292:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalSignalDSL.g:5616:1: ruleJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) ;
     public final EObject ruleJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -14502,32 +15402,32 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5298:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalSignalDSL.g:5299:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5622:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalSignalDSL.g:5623:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalSignalDSL.g:5299:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalSignalDSL.g:5300:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5623:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5624:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalSignalDSL.g:5300:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
-            int alt90=2;
-            int LA90_0 = input.LA(1);
+            // InternalSignalDSL.g:5624:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            int alt89=2;
+            int LA89_0 = input.LA(1);
 
-            if ( (LA90_0==RULE_ID) ) {
-                int LA90_1 = input.LA(2);
+            if ( (LA89_0==RULE_ID) ) {
+                int LA89_1 = input.LA(2);
 
-                if ( (LA90_1==RULE_ID||LA90_1==35||LA90_1==42||LA90_1==67) ) {
-                    alt90=1;
+                if ( (LA89_1==RULE_ID||LA89_1==41||LA89_1==48||LA89_1==73) ) {
+                    alt89=1;
                 }
             }
-            else if ( (LA90_0==30||LA90_0==55) ) {
-                alt90=1;
+            else if ( (LA89_0==36||LA89_0==61) ) {
+                alt89=1;
             }
-            switch (alt90) {
+            switch (alt89) {
                 case 1 :
-                    // InternalSignalDSL.g:5301:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5625:4: (lv_parameterType_0_0= ruleJvmTypeReference )
                     {
-                    // InternalSignalDSL.g:5301:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-                    // InternalSignalDSL.g:5302:5: lv_parameterType_0_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:5625:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalSignalDSL.g:5626:5: lv_parameterType_0_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14561,11 +15461,11 @@
 
             }
 
-            // InternalSignalDSL.g:5319:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalSignalDSL.g:5320:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5643:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5644:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalSignalDSL.g:5320:4: (lv_name_1_0= ruleValidID )
-            // InternalSignalDSL.g:5321:5: lv_name_1_0= ruleValidID
+            // InternalSignalDSL.g:5644:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5645:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -14621,7 +15521,7 @@
 
 
     // $ANTLR start "entryRuleFullJvmFormalParameter"
-    // InternalSignalDSL.g:5342:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    // InternalSignalDSL.g:5666:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
     public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -14629,8 +15529,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5342:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
-            // InternalSignalDSL.g:5343:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
+            // InternalSignalDSL.g:5666:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalSignalDSL.g:5667:2: iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFullJvmFormalParameterRule()); 
@@ -14661,7 +15561,7 @@
 
 
     // $ANTLR start "ruleFullJvmFormalParameter"
-    // InternalSignalDSL.g:5349:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
+    // InternalSignalDSL.g:5673:1: ruleFullJvmFormalParameter returns [EObject current=null] : ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) ;
     public final EObject ruleFullJvmFormalParameter() throws RecognitionException {
         EObject current = null;
 
@@ -14674,17 +15574,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5355:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
-            // InternalSignalDSL.g:5356:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5679:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalSignalDSL.g:5680:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
             {
-            // InternalSignalDSL.g:5356:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
-            // InternalSignalDSL.g:5357:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5680:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalSignalDSL.g:5681:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
             {
-            // InternalSignalDSL.g:5357:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:5358:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:5681:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:5682:4: (lv_parameterType_0_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:5358:4: (lv_parameterType_0_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:5359:5: lv_parameterType_0_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:5682:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:5683:5: lv_parameterType_0_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -14715,11 +15615,11 @@
 
             }
 
-            // InternalSignalDSL.g:5376:3: ( (lv_name_1_0= ruleValidID ) )
-            // InternalSignalDSL.g:5377:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5700:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalSignalDSL.g:5701:4: (lv_name_1_0= ruleValidID )
             {
-            // InternalSignalDSL.g:5377:4: (lv_name_1_0= ruleValidID )
-            // InternalSignalDSL.g:5378:5: lv_name_1_0= ruleValidID
+            // InternalSignalDSL.g:5701:4: (lv_name_1_0= ruleValidID )
+            // InternalSignalDSL.g:5702:5: lv_name_1_0= ruleValidID
             {
             if ( state.backtracking==0 ) {
 
@@ -14775,7 +15675,7 @@
 
 
     // $ANTLR start "entryRuleXFeatureCall"
-    // InternalSignalDSL.g:5399:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    // InternalSignalDSL.g:5723:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
     public final EObject entryRuleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -14783,8 +15683,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5399:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
-            // InternalSignalDSL.g:5400:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
+            // InternalSignalDSL.g:5723:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalSignalDSL.g:5724:2: iv_ruleXFeatureCall= ruleXFeatureCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFeatureCallRule()); 
@@ -14815,7 +15715,7 @@
 
 
     // $ANTLR start "ruleXFeatureCall"
-    // InternalSignalDSL.g:5406:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
+    // InternalSignalDSL.g:5730:1: ruleXFeatureCall returns [EObject current=null] : ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) ;
     public final EObject ruleXFeatureCall() throws RecognitionException {
         EObject current = null;
 
@@ -14842,14 +15742,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5412:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
-            // InternalSignalDSL.g:5413:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:5736:2: ( ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? ) )
+            // InternalSignalDSL.g:5737:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
             {
-            // InternalSignalDSL.g:5413:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
-            // InternalSignalDSL.g:5414:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            // InternalSignalDSL.g:5737:2: ( () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:5738:3: () (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )? ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
             {
-            // InternalSignalDSL.g:5414:3: ()
-            // InternalSignalDSL.g:5415:4: 
+            // InternalSignalDSL.g:5738:3: ()
+            // InternalSignalDSL.g:5739:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -14861,28 +15761,28 @@
 
             }
 
-            // InternalSignalDSL.g:5421:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
-            int alt92=2;
-            int LA92_0 = input.LA(1);
+            // InternalSignalDSL.g:5745:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
 
-            if ( (LA92_0==42) ) {
-                alt92=1;
+            if ( (LA91_0==48) ) {
+                alt91=1;
             }
-            switch (alt92) {
+            switch (alt91) {
                 case 1 :
-                    // InternalSignalDSL.g:5422:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    // InternalSignalDSL.g:5746:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
                     {
-                    otherlv_1=(Token)match(input,42,FOLLOW_53); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
                       			
                     }
-                    // InternalSignalDSL.g:5426:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalSignalDSL.g:5427:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:5750:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalSignalDSL.g:5751:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalSignalDSL.g:5427:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalSignalDSL.g:5428:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalSignalDSL.g:5751:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:5752:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -14913,32 +15813,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:5445:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
-                    loop91:
+                    // InternalSignalDSL.g:5769:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop90:
                     do {
-                        int alt91=2;
-                        int LA91_0 = input.LA(1);
+                        int alt90=2;
+                        int LA90_0 = input.LA(1);
 
-                        if ( (LA91_0==31) ) {
-                            alt91=1;
+                        if ( (LA90_0==37) ) {
+                            alt90=1;
                         }
 
 
-                        switch (alt91) {
+                        switch (alt90) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:5446:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:5770:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,31,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:5450:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalSignalDSL.g:5451:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:5774:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:5775:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalSignalDSL.g:5451:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalSignalDSL.g:5452:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalSignalDSL.g:5775:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:5776:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -14974,11 +15874,11 @@
                     	    break;
 
                     	default :
-                    	    break loop91;
+                    	    break loop90;
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,43,FOLLOW_52); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,49,FOLLOW_52); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
@@ -14990,11 +15890,11 @@
 
             }
 
-            // InternalSignalDSL.g:5475:3: ( ( ruleIdOrSuper ) )
-            // InternalSignalDSL.g:5476:4: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:5799:3: ( ( ruleIdOrSuper ) )
+            // InternalSignalDSL.g:5800:4: ( ruleIdOrSuper )
             {
-            // InternalSignalDSL.g:5476:4: ( ruleIdOrSuper )
-            // InternalSignalDSL.g:5477:5: ruleIdOrSuper
+            // InternalSignalDSL.g:5800:4: ( ruleIdOrSuper )
+            // InternalSignalDSL.g:5801:5: ruleIdOrSuper
             {
             if ( state.backtracking==0 ) {
 
@@ -15008,7 +15908,7 @@
               					newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0());
               				
             }
-            pushFollow(FOLLOW_83);
+            pushFollow(FOLLOW_82);
             ruleIdOrSuper();
 
             state._fsp--;
@@ -15024,20 +15924,20 @@
 
             }
 
-            // InternalSignalDSL.g:5491:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
-            int alt95=2;
-            alt95 = dfa95.predict(input);
-            switch (alt95) {
+            // InternalSignalDSL.g:5815:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?
+            int alt94=2;
+            alt94 = dfa94.predict(input);
+            switch (alt94) {
                 case 1 :
-                    // InternalSignalDSL.g:5492:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
+                    // InternalSignalDSL.g:5816:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')'
                     {
-                    // InternalSignalDSL.g:5492:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
-                    // InternalSignalDSL.g:5493:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    // InternalSignalDSL.g:5816:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalSignalDSL.g:5817:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
                     {
-                    // InternalSignalDSL.g:5497:5: (lv_explicitOperationCall_7_0= '(' )
-                    // InternalSignalDSL.g:5498:6: lv_explicitOperationCall_7_0= '('
+                    // InternalSignalDSL.g:5821:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalSignalDSL.g:5822:6: lv_explicitOperationCall_7_0= '('
                     {
-                    lv_explicitOperationCall_7_0=(Token)match(input,30,FOLLOW_56); if (state.failed) return current;
+                    lv_explicitOperationCall_7_0=(Token)match(input,36,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitOperationCall_7_0, grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0());
@@ -15057,18 +15957,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:5510:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
-                    int alt94=3;
-                    alt94 = dfa94.predict(input);
-                    switch (alt94) {
+                    // InternalSignalDSL.g:5834:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    int alt93=3;
+                    alt93 = dfa93.predict(input);
+                    switch (alt93) {
                         case 1 :
-                            // InternalSignalDSL.g:5511:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:5835:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
                             {
-                            // InternalSignalDSL.g:5511:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
-                            // InternalSignalDSL.g:5512:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:5835:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:5836:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
                             {
-                            // InternalSignalDSL.g:5537:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
-                            // InternalSignalDSL.g:5538:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            // InternalSignalDSL.g:5861:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:5862:7: lv_featureCallArguments_8_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
@@ -15103,16 +16003,16 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:5556:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:5880:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
                             {
-                            // InternalSignalDSL.g:5556:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
-                            // InternalSignalDSL.g:5557:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            // InternalSignalDSL.g:5880:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:5881:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:5557:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
-                            // InternalSignalDSL.g:5558:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalSignalDSL.g:5881:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:5882:7: (lv_featureCallArguments_9_0= ruleXExpression )
                             {
-                            // InternalSignalDSL.g:5558:7: (lv_featureCallArguments_9_0= ruleXExpression )
-                            // InternalSignalDSL.g:5559:8: lv_featureCallArguments_9_0= ruleXExpression
+                            // InternalSignalDSL.g:5882:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalSignalDSL.g:5883:8: lv_featureCallArguments_9_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -15143,32 +16043,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:5576:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
-                            loop93:
+                            // InternalSignalDSL.g:5900:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            loop92:
                             do {
-                                int alt93=2;
-                                int LA93_0 = input.LA(1);
+                                int alt92=2;
+                                int LA92_0 = input.LA(1);
 
-                                if ( (LA93_0==31) ) {
-                                    alt93=1;
+                                if ( (LA92_0==37) ) {
+                                    alt92=1;
                                 }
 
 
-                                switch (alt93) {
+                                switch (alt92) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:5577:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:5901:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_10=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_10=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:5581:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
-                            	    // InternalSignalDSL.g:5582:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:5905:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:5906:8: (lv_featureCallArguments_11_0= ruleXExpression )
                             	    {
-                            	    // InternalSignalDSL.g:5582:8: (lv_featureCallArguments_11_0= ruleXExpression )
-                            	    // InternalSignalDSL.g:5583:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    // InternalSignalDSL.g:5906:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:5907:9: lv_featureCallArguments_11_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -15204,7 +16104,7 @@
                             	    break;
 
                             	default :
-                            	    break loop93;
+                            	    break loop92;
                                 }
                             } while (true);
 
@@ -15217,7 +16117,7 @@
 
                     }
 
-                    otherlv_12=(Token)match(input,32,FOLLOW_84); if (state.failed) return current;
+                    otherlv_12=(Token)match(input,38,FOLLOW_83); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
@@ -15229,15 +16129,15 @@
 
             }
 
-            // InternalSignalDSL.g:5608:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
-            int alt96=2;
-            alt96 = dfa96.predict(input);
-            switch (alt96) {
+            // InternalSignalDSL.g:5932:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            int alt95=2;
+            alt95 = dfa95.predict(input);
+            switch (alt95) {
                 case 1 :
-                    // InternalSignalDSL.g:5609:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalSignalDSL.g:5933:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
                     {
-                    // InternalSignalDSL.g:5615:4: (lv_featureCallArguments_13_0= ruleXClosure )
-                    // InternalSignalDSL.g:5616:5: lv_featureCallArguments_13_0= ruleXClosure
+                    // InternalSignalDSL.g:5939:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalSignalDSL.g:5940:5: lv_featureCallArguments_13_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15296,7 +16196,7 @@
 
 
     // $ANTLR start "entryRuleFeatureCallID"
-    // InternalSignalDSL.g:5637:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    // InternalSignalDSL.g:5961:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
     public final String entryRuleFeatureCallID() throws RecognitionException {
         String current = null;
 
@@ -15304,8 +16204,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5637:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
-            // InternalSignalDSL.g:5638:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
+            // InternalSignalDSL.g:5961:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalSignalDSL.g:5962:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
@@ -15336,7 +16236,7 @@
 
 
     // $ANTLR start "ruleFeatureCallID"
-    // InternalSignalDSL.g:5644:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
+    // InternalSignalDSL.g:5968:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) ;
     public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -15348,48 +16248,48 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5650:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
-            // InternalSignalDSL.g:5651:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            // InternalSignalDSL.g:5974:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalSignalDSL.g:5975:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
             {
-            // InternalSignalDSL.g:5651:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
-            int alt97=5;
+            // InternalSignalDSL.g:5975:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            int alt96=5;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                alt97=1;
+                alt96=1;
                 }
                 break;
-            case 81:
+            case 87:
                 {
-                alt97=2;
+                alt96=2;
                 }
                 break;
-            case 24:
+            case 30:
                 {
-                alt97=3;
+                alt96=3;
                 }
                 break;
-            case 23:
+            case 29:
                 {
-                alt97=4;
+                alt96=4;
                 }
                 break;
-            case 25:
+            case 31:
                 {
-                alt97=5;
+                alt96=5;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 97, 0, input);
+                    new NoViableAltException("", 96, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt97) {
+            switch (alt96) {
                 case 1 :
-                    // InternalSignalDSL.g:5652:3: this_ValidID_0= ruleValidID
+                    // InternalSignalDSL.g:5976:3: this_ValidID_0= ruleValidID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15415,9 +16315,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5663:3: kw= 'extends'
+                    // InternalSignalDSL.g:5987:3: kw= 'extends'
                     {
-                    kw=(Token)match(input,81,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -15428,9 +16328,9 @@
                     }
                     break;
                 case 3 :
-                    // InternalSignalDSL.g:5669:3: kw= 'static'
+                    // InternalSignalDSL.g:5993:3: kw= 'static'
                     {
-                    kw=(Token)match(input,24,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,30,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -15441,9 +16341,9 @@
                     }
                     break;
                 case 4 :
-                    // InternalSignalDSL.g:5675:3: kw= 'import'
+                    // InternalSignalDSL.g:5999:3: kw= 'import'
                     {
-                    kw=(Token)match(input,23,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,29,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -15454,9 +16354,9 @@
                     }
                     break;
                 case 5 :
-                    // InternalSignalDSL.g:5681:3: kw= 'extension'
+                    // InternalSignalDSL.g:6005:3: kw= 'extension'
                     {
-                    kw=(Token)match(input,25,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,31,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -15491,7 +16391,7 @@
 
 
     // $ANTLR start "entryRuleIdOrSuper"
-    // InternalSignalDSL.g:5690:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    // InternalSignalDSL.g:6014:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
     public final String entryRuleIdOrSuper() throws RecognitionException {
         String current = null;
 
@@ -15499,8 +16399,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5690:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
-            // InternalSignalDSL.g:5691:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
+            // InternalSignalDSL.g:6014:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalSignalDSL.g:6015:2: iv_ruleIdOrSuper= ruleIdOrSuper EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getIdOrSuperRule()); 
@@ -15531,7 +16431,7 @@
 
 
     // $ANTLR start "ruleIdOrSuper"
-    // InternalSignalDSL.g:5697:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
+    // InternalSignalDSL.g:6021:1: ruleIdOrSuper returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) ;
     public final AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -15543,29 +16443,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5703:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
-            // InternalSignalDSL.g:5704:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            // InternalSignalDSL.g:6027:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalSignalDSL.g:6028:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
             {
-            // InternalSignalDSL.g:5704:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
-            int alt98=2;
-            int LA98_0 = input.LA(1);
+            // InternalSignalDSL.g:6028:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            int alt97=2;
+            int LA97_0 = input.LA(1);
 
-            if ( (LA98_0==RULE_ID||(LA98_0>=23 && LA98_0<=25)||LA98_0==81) ) {
-                alt98=1;
+            if ( (LA97_0==RULE_ID||(LA97_0>=29 && LA97_0<=31)||LA97_0==87) ) {
+                alt97=1;
             }
-            else if ( (LA98_0==82) ) {
-                alt98=2;
+            else if ( (LA97_0==88) ) {
+                alt97=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 98, 0, input);
+                    new NoViableAltException("", 97, 0, input);
 
                 throw nvae;
             }
-            switch (alt98) {
+            switch (alt97) {
                 case 1 :
-                    // InternalSignalDSL.g:5705:3: this_FeatureCallID_0= ruleFeatureCallID
+                    // InternalSignalDSL.g:6029:3: this_FeatureCallID_0= ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15591,9 +16491,9 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5716:3: kw= 'super'
+                    // InternalSignalDSL.g:6040:3: kw= 'super'
                     {
-                    kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
+                    kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       			current.merge(kw);
@@ -15628,7 +16528,7 @@
 
 
     // $ANTLR start "entryRuleXConstructorCall"
-    // InternalSignalDSL.g:5725:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    // InternalSignalDSL.g:6049:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
     public final EObject entryRuleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -15636,8 +16536,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5725:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
-            // InternalSignalDSL.g:5726:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
+            // InternalSignalDSL.g:6049:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalSignalDSL.g:6050:2: iv_ruleXConstructorCall= ruleXConstructorCall EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXConstructorCallRule()); 
@@ -15668,7 +16568,7 @@
 
 
     // $ANTLR start "ruleXConstructorCall"
-    // InternalSignalDSL.g:5732:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
+    // InternalSignalDSL.g:6056:1: ruleXConstructorCall returns [EObject current=null] : ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) ;
     public final EObject ruleXConstructorCall() throws RecognitionException {
         EObject current = null;
 
@@ -15696,14 +16596,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5738:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
-            // InternalSignalDSL.g:5739:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:6062:2: ( ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? ) )
+            // InternalSignalDSL.g:6063:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
             {
-            // InternalSignalDSL.g:5739:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
-            // InternalSignalDSL.g:5740:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            // InternalSignalDSL.g:6063:2: ( () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )? )
+            // InternalSignalDSL.g:6064:3: () otherlv_1= 'new' ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )? ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )? ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
             {
-            // InternalSignalDSL.g:5740:3: ()
-            // InternalSignalDSL.g:5741:4: 
+            // InternalSignalDSL.g:6064:3: ()
+            // InternalSignalDSL.g:6065:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -15715,17 +16615,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,83,FOLLOW_4); if (state.failed) return current;
+            otherlv_1=(Token)match(input,89,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
               		
             }
-            // InternalSignalDSL.g:5751:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:5752:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6075:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:6076:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:5752:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:5753:5: ruleQualifiedName
+            // InternalSignalDSL.g:6076:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6077:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -15739,7 +16639,7 @@
               					newCompositeNode(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0());
               				
             }
-            pushFollow(FOLLOW_85);
+            pushFollow(FOLLOW_84);
             ruleQualifiedName();
 
             state._fsp--;
@@ -15755,17 +16655,17 @@
 
             }
 
-            // InternalSignalDSL.g:5767:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
-            int alt100=2;
-            alt100 = dfa100.predict(input);
-            switch (alt100) {
+            // InternalSignalDSL.g:6091:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            int alt99=2;
+            alt99 = dfa99.predict(input);
+            switch (alt99) {
                 case 1 :
-                    // InternalSignalDSL.g:5768:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    // InternalSignalDSL.g:6092:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
                     {
-                    // InternalSignalDSL.g:5768:4: ( ( '<' )=>otherlv_3= '<' )
-                    // InternalSignalDSL.g:5769:5: ( '<' )=>otherlv_3= '<'
+                    // InternalSignalDSL.g:6092:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalSignalDSL.g:6093:5: ( '<' )=>otherlv_3= '<'
                     {
-                    otherlv_3=(Token)match(input,42,FOLLOW_53); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
@@ -15774,11 +16674,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:5775:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
-                    // InternalSignalDSL.g:5776:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:6099:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalSignalDSL.g:6100:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalSignalDSL.g:5776:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
-                    // InternalSignalDSL.g:5777:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    // InternalSignalDSL.g:6100:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:6101:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -15809,32 +16709,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:5794:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
-                    loop99:
+                    // InternalSignalDSL.g:6118:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop98:
                     do {
-                        int alt99=2;
-                        int LA99_0 = input.LA(1);
+                        int alt98=2;
+                        int LA98_0 = input.LA(1);
 
-                        if ( (LA99_0==31) ) {
-                            alt99=1;
+                        if ( (LA98_0==37) ) {
+                            alt98=1;
                         }
 
 
-                        switch (alt99) {
+                        switch (alt98) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:5795:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:6119:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_5=(Token)match(input,31,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_5=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:5799:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalSignalDSL.g:5800:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:6123:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:6124:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalSignalDSL.g:5800:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
-                    	    // InternalSignalDSL.g:5801:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    // InternalSignalDSL.g:6124:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:6125:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -15870,11 +16770,11 @@
                     	    break;
 
                     	default :
-                    	    break loop99;
+                    	    break loop98;
                         }
                     } while (true);
 
-                    otherlv_7=(Token)match(input,43,FOLLOW_83); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,49,FOLLOW_82); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
@@ -15886,20 +16786,20 @@
 
             }
 
-            // InternalSignalDSL.g:5824:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
-            int alt103=2;
-            alt103 = dfa103.predict(input);
-            switch (alt103) {
+            // InternalSignalDSL.g:6148:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?
+            int alt102=2;
+            alt102 = dfa102.predict(input);
+            switch (alt102) {
                 case 1 :
-                    // InternalSignalDSL.g:5825:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
+                    // InternalSignalDSL.g:6149:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')'
                     {
-                    // InternalSignalDSL.g:5825:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
-                    // InternalSignalDSL.g:5826:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalSignalDSL.g:6149:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalSignalDSL.g:6150:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
                     {
-                    // InternalSignalDSL.g:5830:5: (lv_explicitConstructorCall_8_0= '(' )
-                    // InternalSignalDSL.g:5831:6: lv_explicitConstructorCall_8_0= '('
+                    // InternalSignalDSL.g:6154:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalSignalDSL.g:6155:6: lv_explicitConstructorCall_8_0= '('
                     {
-                    lv_explicitConstructorCall_8_0=(Token)match(input,30,FOLLOW_56); if (state.failed) return current;
+                    lv_explicitConstructorCall_8_0=(Token)match(input,36,FOLLOW_56); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_explicitConstructorCall_8_0, grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0());
@@ -15919,18 +16819,18 @@
 
                     }
 
-                    // InternalSignalDSL.g:5843:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
-                    int alt102=3;
-                    alt102 = dfa102.predict(input);
-                    switch (alt102) {
+                    // InternalSignalDSL.g:6167:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    int alt101=3;
+                    alt101 = dfa101.predict(input);
+                    switch (alt101) {
                         case 1 :
-                            // InternalSignalDSL.g:5844:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:6168:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
                             {
-                            // InternalSignalDSL.g:5844:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
-                            // InternalSignalDSL.g:5845:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:6168:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalSignalDSL.g:6169:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
                             {
-                            // InternalSignalDSL.g:5870:6: (lv_arguments_9_0= ruleXShortClosure )
-                            // InternalSignalDSL.g:5871:7: lv_arguments_9_0= ruleXShortClosure
+                            // InternalSignalDSL.g:6194:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalSignalDSL.g:6195:7: lv_arguments_9_0= ruleXShortClosure
                             {
                             if ( state.backtracking==0 ) {
 
@@ -15965,16 +16865,16 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:5889:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:6213:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
                             {
-                            // InternalSignalDSL.g:5889:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
-                            // InternalSignalDSL.g:5890:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            // InternalSignalDSL.g:6213:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalSignalDSL.g:6214:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
                             {
-                            // InternalSignalDSL.g:5890:6: ( (lv_arguments_10_0= ruleXExpression ) )
-                            // InternalSignalDSL.g:5891:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalSignalDSL.g:6214:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6215:7: (lv_arguments_10_0= ruleXExpression )
                             {
-                            // InternalSignalDSL.g:5891:7: (lv_arguments_10_0= ruleXExpression )
-                            // InternalSignalDSL.g:5892:8: lv_arguments_10_0= ruleXExpression
+                            // InternalSignalDSL.g:6215:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalSignalDSL.g:6216:8: lv_arguments_10_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -16005,32 +16905,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:5909:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
-                            loop101:
+                            // InternalSignalDSL.g:6233:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            loop100:
                             do {
-                                int alt101=2;
-                                int LA101_0 = input.LA(1);
+                                int alt100=2;
+                                int LA100_0 = input.LA(1);
 
-                                if ( (LA101_0==31) ) {
-                                    alt101=1;
+                                if ( (LA100_0==37) ) {
+                                    alt100=1;
                                 }
 
 
-                                switch (alt101) {
+                                switch (alt100) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:5910:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:6234:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
                             	    {
-                            	    otherlv_11=(Token)match(input,31,FOLLOW_28); if (state.failed) return current;
+                            	    otherlv_11=(Token)match(input,37,FOLLOW_28); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
                             	      						
                             	    }
-                            	    // InternalSignalDSL.g:5914:7: ( (lv_arguments_12_0= ruleXExpression ) )
-                            	    // InternalSignalDSL.g:5915:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:6238:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalSignalDSL.g:6239:8: (lv_arguments_12_0= ruleXExpression )
                             	    {
-                            	    // InternalSignalDSL.g:5915:8: (lv_arguments_12_0= ruleXExpression )
-                            	    // InternalSignalDSL.g:5916:9: lv_arguments_12_0= ruleXExpression
+                            	    // InternalSignalDSL.g:6239:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalSignalDSL.g:6240:9: lv_arguments_12_0= ruleXExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -16066,7 +16966,7 @@
                             	    break;
 
                             	default :
-                            	    break loop101;
+                            	    break loop100;
                                 }
                             } while (true);
 
@@ -16079,7 +16979,7 @@
 
                     }
 
-                    otherlv_13=(Token)match(input,32,FOLLOW_84); if (state.failed) return current;
+                    otherlv_13=(Token)match(input,38,FOLLOW_83); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
@@ -16091,15 +16991,15 @@
 
             }
 
-            // InternalSignalDSL.g:5941:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
-            int alt104=2;
-            alt104 = dfa104.predict(input);
-            switch (alt104) {
+            // InternalSignalDSL.g:6265:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            int alt103=2;
+            alt103 = dfa103.predict(input);
+            switch (alt103) {
                 case 1 :
-                    // InternalSignalDSL.g:5942:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    // InternalSignalDSL.g:6266:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
                     {
-                    // InternalSignalDSL.g:5948:4: (lv_arguments_14_0= ruleXClosure )
-                    // InternalSignalDSL.g:5949:5: lv_arguments_14_0= ruleXClosure
+                    // InternalSignalDSL.g:6272:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalSignalDSL.g:6273:5: lv_arguments_14_0= ruleXClosure
                     {
                     if ( state.backtracking==0 ) {
 
@@ -16158,7 +17058,7 @@
 
 
     // $ANTLR start "entryRuleXBooleanLiteral"
-    // InternalSignalDSL.g:5970:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    // InternalSignalDSL.g:6294:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
     public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16166,8 +17066,8 @@
 
 
         try {
-            // InternalSignalDSL.g:5970:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
-            // InternalSignalDSL.g:5971:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
+            // InternalSignalDSL.g:6294:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalSignalDSL.g:6295:2: iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXBooleanLiteralRule()); 
@@ -16198,7 +17098,7 @@
 
 
     // $ANTLR start "ruleXBooleanLiteral"
-    // InternalSignalDSL.g:5977:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
+    // InternalSignalDSL.g:6301:1: ruleXBooleanLiteral returns [EObject current=null] : ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) ;
     public final EObject ruleXBooleanLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16209,14 +17109,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:5983:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
-            // InternalSignalDSL.g:5984:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalSignalDSL.g:6307:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalSignalDSL.g:6308:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
             {
-            // InternalSignalDSL.g:5984:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
-            // InternalSignalDSL.g:5985:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            // InternalSignalDSL.g:6308:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalSignalDSL.g:6309:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
             {
-            // InternalSignalDSL.g:5985:3: ()
-            // InternalSignalDSL.g:5986:4: 
+            // InternalSignalDSL.g:6309:3: ()
+            // InternalSignalDSL.g:6310:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16228,28 +17128,28 @@
 
             }
 
-            // InternalSignalDSL.g:5992:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
-            int alt105=2;
-            int LA105_0 = input.LA(1);
+            // InternalSignalDSL.g:6316:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            int alt104=2;
+            int LA104_0 = input.LA(1);
 
-            if ( (LA105_0==84) ) {
-                alt105=1;
+            if ( (LA104_0==90) ) {
+                alt104=1;
             }
-            else if ( (LA105_0==85) ) {
-                alt105=2;
+            else if ( (LA104_0==91) ) {
+                alt104=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 105, 0, input);
+                    new NoViableAltException("", 104, 0, input);
 
                 throw nvae;
             }
-            switch (alt105) {
+            switch (alt104) {
                 case 1 :
-                    // InternalSignalDSL.g:5993:4: otherlv_1= 'false'
+                    // InternalSignalDSL.g:6317:4: otherlv_1= 'false'
                     {
-                    otherlv_1=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
@@ -16259,15 +17159,15 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:5998:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalSignalDSL.g:6322:4: ( (lv_isTrue_2_0= 'true' ) )
                     {
-                    // InternalSignalDSL.g:5998:4: ( (lv_isTrue_2_0= 'true' ) )
-                    // InternalSignalDSL.g:5999:5: (lv_isTrue_2_0= 'true' )
+                    // InternalSignalDSL.g:6322:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalSignalDSL.g:6323:5: (lv_isTrue_2_0= 'true' )
                     {
-                    // InternalSignalDSL.g:5999:5: (lv_isTrue_2_0= 'true' )
-                    // InternalSignalDSL.g:6000:6: lv_isTrue_2_0= 'true'
+                    // InternalSignalDSL.g:6323:5: (lv_isTrue_2_0= 'true' )
+                    // InternalSignalDSL.g:6324:6: lv_isTrue_2_0= 'true'
                     {
-                    lv_isTrue_2_0=(Token)match(input,85,FOLLOW_2); if (state.failed) return current;
+                    lv_isTrue_2_0=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       						newLeafNode(lv_isTrue_2_0, grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0());
@@ -16318,7 +17218,7 @@
 
 
     // $ANTLR start "entryRuleXNullLiteral"
-    // InternalSignalDSL.g:6017:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    // InternalSignalDSL.g:6341:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
     public final EObject entryRuleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16326,8 +17226,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6017:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
-            // InternalSignalDSL.g:6018:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
+            // InternalSignalDSL.g:6341:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalSignalDSL.g:6342:2: iv_ruleXNullLiteral= ruleXNullLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNullLiteralRule()); 
@@ -16358,7 +17258,7 @@
 
 
     // $ANTLR start "ruleXNullLiteral"
-    // InternalSignalDSL.g:6024:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    // InternalSignalDSL.g:6348:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
     public final EObject ruleXNullLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16368,14 +17268,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6030:2: ( ( () otherlv_1= 'null' ) )
-            // InternalSignalDSL.g:6031:2: ( () otherlv_1= 'null' )
+            // InternalSignalDSL.g:6354:2: ( ( () otherlv_1= 'null' ) )
+            // InternalSignalDSL.g:6355:2: ( () otherlv_1= 'null' )
             {
-            // InternalSignalDSL.g:6031:2: ( () otherlv_1= 'null' )
-            // InternalSignalDSL.g:6032:3: () otherlv_1= 'null'
+            // InternalSignalDSL.g:6355:2: ( () otherlv_1= 'null' )
+            // InternalSignalDSL.g:6356:3: () otherlv_1= 'null'
             {
-            // InternalSignalDSL.g:6032:3: ()
-            // InternalSignalDSL.g:6033:4: 
+            // InternalSignalDSL.g:6356:3: ()
+            // InternalSignalDSL.g:6357:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16387,7 +17287,7 @@
 
             }
 
-            otherlv_1=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
+            otherlv_1=(Token)match(input,92,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXNullLiteralAccess().getNullKeyword_1());
@@ -16418,7 +17318,7 @@
 
 
     // $ANTLR start "entryRuleXNumberLiteral"
-    // InternalSignalDSL.g:6047:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    // InternalSignalDSL.g:6371:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
     public final EObject entryRuleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16426,8 +17326,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6047:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
-            // InternalSignalDSL.g:6048:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
+            // InternalSignalDSL.g:6371:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalSignalDSL.g:6372:2: iv_ruleXNumberLiteral= ruleXNumberLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXNumberLiteralRule()); 
@@ -16458,7 +17358,7 @@
 
 
     // $ANTLR start "ruleXNumberLiteral"
-    // InternalSignalDSL.g:6054:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
+    // InternalSignalDSL.g:6378:1: ruleXNumberLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
     public final EObject ruleXNumberLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16469,14 +17369,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6060:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
-            // InternalSignalDSL.g:6061:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalSignalDSL.g:6384:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalSignalDSL.g:6385:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
             {
-            // InternalSignalDSL.g:6061:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
-            // InternalSignalDSL.g:6062:3: () ( (lv_value_1_0= ruleNumber ) )
+            // InternalSignalDSL.g:6385:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalSignalDSL.g:6386:3: () ( (lv_value_1_0= ruleNumber ) )
             {
-            // InternalSignalDSL.g:6062:3: ()
-            // InternalSignalDSL.g:6063:4: 
+            // InternalSignalDSL.g:6386:3: ()
+            // InternalSignalDSL.g:6387:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16488,11 +17388,11 @@
 
             }
 
-            // InternalSignalDSL.g:6069:3: ( (lv_value_1_0= ruleNumber ) )
-            // InternalSignalDSL.g:6070:4: (lv_value_1_0= ruleNumber )
+            // InternalSignalDSL.g:6393:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalSignalDSL.g:6394:4: (lv_value_1_0= ruleNumber )
             {
-            // InternalSignalDSL.g:6070:4: (lv_value_1_0= ruleNumber )
-            // InternalSignalDSL.g:6071:5: lv_value_1_0= ruleNumber
+            // InternalSignalDSL.g:6394:4: (lv_value_1_0= ruleNumber )
+            // InternalSignalDSL.g:6395:5: lv_value_1_0= ruleNumber
             {
             if ( state.backtracking==0 ) {
 
@@ -16548,7 +17448,7 @@
 
 
     // $ANTLR start "entryRuleXStringLiteral"
-    // InternalSignalDSL.g:6092:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    // InternalSignalDSL.g:6416:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
     public final EObject entryRuleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16556,8 +17456,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6092:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
-            // InternalSignalDSL.g:6093:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
+            // InternalSignalDSL.g:6416:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalSignalDSL.g:6417:2: iv_ruleXStringLiteral= ruleXStringLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXStringLiteralRule()); 
@@ -16588,7 +17488,7 @@
 
 
     // $ANTLR start "ruleXStringLiteral"
-    // InternalSignalDSL.g:6099:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
+    // InternalSignalDSL.g:6423:1: ruleXStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
     public final EObject ruleXStringLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16598,14 +17498,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6105:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
-            // InternalSignalDSL.g:6106:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:6429:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalSignalDSL.g:6430:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
             {
-            // InternalSignalDSL.g:6106:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
-            // InternalSignalDSL.g:6107:3: () ( (lv_value_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:6430:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalSignalDSL.g:6431:3: () ( (lv_value_1_0= RULE_STRING ) )
             {
-            // InternalSignalDSL.g:6107:3: ()
-            // InternalSignalDSL.g:6108:4: 
+            // InternalSignalDSL.g:6431:3: ()
+            // InternalSignalDSL.g:6432:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16617,11 +17517,11 @@
 
             }
 
-            // InternalSignalDSL.g:6114:3: ( (lv_value_1_0= RULE_STRING ) )
-            // InternalSignalDSL.g:6115:4: (lv_value_1_0= RULE_STRING )
+            // InternalSignalDSL.g:6438:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalSignalDSL.g:6439:4: (lv_value_1_0= RULE_STRING )
             {
-            // InternalSignalDSL.g:6115:4: (lv_value_1_0= RULE_STRING )
-            // InternalSignalDSL.g:6116:5: lv_value_1_0= RULE_STRING
+            // InternalSignalDSL.g:6439:4: (lv_value_1_0= RULE_STRING )
+            // InternalSignalDSL.g:6440:5: lv_value_1_0= RULE_STRING
             {
             lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -16672,7 +17572,7 @@
 
 
     // $ANTLR start "entryRuleXTypeLiteral"
-    // InternalSignalDSL.g:6136:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    // InternalSignalDSL.g:6460:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
     public final EObject entryRuleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16680,8 +17580,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6136:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
-            // InternalSignalDSL.g:6137:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
+            // InternalSignalDSL.g:6460:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalSignalDSL.g:6461:2: iv_ruleXTypeLiteral= ruleXTypeLiteral EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTypeLiteralRule()); 
@@ -16712,7 +17612,7 @@
 
 
     // $ANTLR start "ruleXTypeLiteral"
-    // InternalSignalDSL.g:6143:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
+    // InternalSignalDSL.g:6467:1: ruleXTypeLiteral returns [EObject current=null] : ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) ;
     public final EObject ruleXTypeLiteral() throws RecognitionException {
         EObject current = null;
 
@@ -16726,14 +17626,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6149:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
-            // InternalSignalDSL.g:6150:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalSignalDSL.g:6473:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalSignalDSL.g:6474:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
             {
-            // InternalSignalDSL.g:6150:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
-            // InternalSignalDSL.g:6151:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            // InternalSignalDSL.g:6474:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalSignalDSL.g:6475:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
             {
-            // InternalSignalDSL.g:6151:3: ()
-            // InternalSignalDSL.g:6152:4: 
+            // InternalSignalDSL.g:6475:3: ()
+            // InternalSignalDSL.g:6476:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16745,23 +17645,23 @@
 
             }
 
-            otherlv_1=(Token)match(input,87,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,93,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
               		
             }
-            otherlv_2=(Token)match(input,30,FOLLOW_4); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:6166:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:6167:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6490:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:6491:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:6167:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:6168:5: ruleQualifiedName
+            // InternalSignalDSL.g:6491:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:6492:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -16775,7 +17675,7 @@
               					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0());
               				
             }
-            pushFollow(FOLLOW_86);
+            pushFollow(FOLLOW_85);
             ruleQualifiedName();
 
             state._fsp--;
@@ -16791,30 +17691,30 @@
 
             }
 
-            // InternalSignalDSL.g:6182:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
-            loop106:
+            // InternalSignalDSL.g:6506:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            loop105:
             do {
-                int alt106=2;
-                int LA106_0 = input.LA(1);
+                int alt105=2;
+                int LA105_0 = input.LA(1);
 
-                if ( (LA106_0==35) ) {
-                    alt106=1;
+                if ( (LA105_0==41) ) {
+                    alt105=1;
                 }
 
 
-                switch (alt106) {
+                switch (alt105) {
             	case 1 :
-            	    // InternalSignalDSL.g:6183:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalSignalDSL.g:6507:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
             	    {
-            	    // InternalSignalDSL.g:6183:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
-            	    // InternalSignalDSL.g:6184:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    // InternalSignalDSL.g:6507:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalSignalDSL.g:6508:5: lv_arrayDimensions_4_0= ruleArrayBrackets
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
             	      				
             	    }
-            	    pushFollow(FOLLOW_86);
+            	    pushFollow(FOLLOW_85);
             	    lv_arrayDimensions_4_0=ruleArrayBrackets();
 
             	    state._fsp--;
@@ -16840,11 +17740,11 @@
             	    break;
 
             	default :
-            	    break loop106;
+            	    break loop105;
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
+            otherlv_5=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
@@ -16875,7 +17775,7 @@
 
 
     // $ANTLR start "entryRuleXThrowExpression"
-    // InternalSignalDSL.g:6209:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    // InternalSignalDSL.g:6533:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
     public final EObject entryRuleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16883,8 +17783,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6209:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
-            // InternalSignalDSL.g:6210:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
+            // InternalSignalDSL.g:6533:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalSignalDSL.g:6534:2: iv_ruleXThrowExpression= ruleXThrowExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXThrowExpressionRule()); 
@@ -16915,7 +17815,7 @@
 
 
     // $ANTLR start "ruleXThrowExpression"
-    // InternalSignalDSL.g:6216:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:6540:1: ruleXThrowExpression returns [EObject current=null] : ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) ;
     public final EObject ruleXThrowExpression() throws RecognitionException {
         EObject current = null;
 
@@ -16927,14 +17827,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6222:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:6223:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6546:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6547:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:6223:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:6224:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6547:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6548:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:6224:3: ()
-            // InternalSignalDSL.g:6225:4: 
+            // InternalSignalDSL.g:6548:3: ()
+            // InternalSignalDSL.g:6549:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -16946,17 +17846,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,88,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,94,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6235:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6236:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6559:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6560:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6236:4: (lv_expression_2_0= ruleXExpression )
-            // InternalSignalDSL.g:6237:5: lv_expression_2_0= ruleXExpression
+            // InternalSignalDSL.g:6560:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6561:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17012,7 +17912,7 @@
 
 
     // $ANTLR start "entryRuleXReturnExpression"
-    // InternalSignalDSL.g:6258:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    // InternalSignalDSL.g:6582:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
     public final EObject entryRuleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17020,8 +17920,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6258:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
-            // InternalSignalDSL.g:6259:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
+            // InternalSignalDSL.g:6582:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalSignalDSL.g:6583:2: iv_ruleXReturnExpression= ruleXReturnExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXReturnExpressionRule()); 
@@ -17052,7 +17952,7 @@
 
 
     // $ANTLR start "ruleXReturnExpression"
-    // InternalSignalDSL.g:6265:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
+    // InternalSignalDSL.g:6589:1: ruleXReturnExpression returns [EObject current=null] : ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) ;
     public final EObject ruleXReturnExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17064,14 +17964,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6271:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
-            // InternalSignalDSL.g:6272:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalSignalDSL.g:6595:2: ( ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? ) )
+            // InternalSignalDSL.g:6596:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
             {
-            // InternalSignalDSL.g:6272:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
-            // InternalSignalDSL.g:6273:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            // InternalSignalDSL.g:6596:2: ( () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )? )
+            // InternalSignalDSL.g:6597:3: () otherlv_1= 'return' ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
             {
-            // InternalSignalDSL.g:6273:3: ()
-            // InternalSignalDSL.g:6274:4: 
+            // InternalSignalDSL.g:6597:3: ()
+            // InternalSignalDSL.g:6598:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17083,21 +17983,21 @@
 
             }
 
-            otherlv_1=(Token)match(input,89,FOLLOW_87); if (state.failed) return current;
+            otherlv_1=(Token)match(input,95,FOLLOW_86); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6284:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
-            int alt107=2;
-            alt107 = dfa107.predict(input);
-            switch (alt107) {
+            // InternalSignalDSL.g:6608:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?
+            int alt106=2;
+            alt106 = dfa106.predict(input);
+            switch (alt106) {
                 case 1 :
-                    // InternalSignalDSL.g:6285:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
+                    // InternalSignalDSL.g:6609:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:6286:4: (lv_expression_2_0= ruleXExpression )
-                    // InternalSignalDSL.g:6287:5: lv_expression_2_0= ruleXExpression
+                    // InternalSignalDSL.g:6610:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalSignalDSL.g:6611:5: lv_expression_2_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17156,7 +18056,7 @@
 
 
     // $ANTLR start "entryRuleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:6308:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    // InternalSignalDSL.g:6632:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
     public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17164,8 +18064,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6308:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
-            // InternalSignalDSL.g:6309:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
+            // InternalSignalDSL.g:6632:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalSignalDSL.g:6633:2: iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); 
@@ -17196,7 +18096,7 @@
 
 
     // $ANTLR start "ruleXTryCatchFinallyExpression"
-    // InternalSignalDSL.g:6315:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
+    // InternalSignalDSL.g:6639:1: ruleXTryCatchFinallyExpression returns [EObject current=null] : ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) ;
     public final EObject ruleXTryCatchFinallyExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17216,14 +18116,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6321:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
-            // InternalSignalDSL.g:6322:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalSignalDSL.g:6645:2: ( ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) ) )
+            // InternalSignalDSL.g:6646:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
             {
-            // InternalSignalDSL.g:6322:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
-            // InternalSignalDSL.g:6323:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6646:2: ( () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) ) )
+            // InternalSignalDSL.g:6647:3: () otherlv_1= 'try' ( (lv_expression_2_0= ruleXExpression ) ) ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
             {
-            // InternalSignalDSL.g:6323:3: ()
-            // InternalSignalDSL.g:6324:4: 
+            // InternalSignalDSL.g:6647:3: ()
+            // InternalSignalDSL.g:6648:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17235,24 +18135,24 @@
 
             }
 
-            otherlv_1=(Token)match(input,90,FOLLOW_28); if (state.failed) return current;
+            otherlv_1=(Token)match(input,96,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6334:3: ( (lv_expression_2_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6335:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6658:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6659:4: (lv_expression_2_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6335:4: (lv_expression_2_0= ruleXExpression )
-            // InternalSignalDSL.g:6336:5: lv_expression_2_0= ruleXExpression
+            // InternalSignalDSL.g:6659:4: (lv_expression_2_0= ruleXExpression )
+            // InternalSignalDSL.g:6660:5: lv_expression_2_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
               					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
               				
             }
-            pushFollow(FOLLOW_88);
+            pushFollow(FOLLOW_87);
             lv_expression_2_0=ruleXExpression();
 
             state._fsp--;
@@ -17276,61 +18176,61 @@
 
             }
 
-            // InternalSignalDSL.g:6353:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
-            int alt110=2;
-            int LA110_0 = input.LA(1);
+            // InternalSignalDSL.g:6677:3: ( ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? ) | (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) ) )
+            int alt109=2;
+            int LA109_0 = input.LA(1);
 
-            if ( (LA110_0==93) ) {
-                alt110=1;
+            if ( (LA109_0==99) ) {
+                alt109=1;
             }
-            else if ( (LA110_0==91) ) {
-                alt110=2;
+            else if ( (LA109_0==97) ) {
+                alt109=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 110, 0, input);
+                    new NoViableAltException("", 109, 0, input);
 
                 throw nvae;
             }
-            switch (alt110) {
+            switch (alt109) {
                 case 1 :
-                    // InternalSignalDSL.g:6354:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalSignalDSL.g:6678:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
                     {
-                    // InternalSignalDSL.g:6354:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
-                    // InternalSignalDSL.g:6355:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    // InternalSignalDSL.g:6678:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalSignalDSL.g:6679:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
                     {
-                    // InternalSignalDSL.g:6355:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
-                    int cnt108=0;
-                    loop108:
+                    // InternalSignalDSL.g:6679:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    int cnt107=0;
+                    loop107:
                     do {
-                        int alt108=2;
-                        int LA108_0 = input.LA(1);
+                        int alt107=2;
+                        int LA107_0 = input.LA(1);
 
-                        if ( (LA108_0==93) ) {
-                            int LA108_2 = input.LA(2);
+                        if ( (LA107_0==99) ) {
+                            int LA107_2 = input.LA(2);
 
                             if ( (synpred44_InternalSignalDSL()) ) {
-                                alt108=1;
+                                alt107=1;
                             }
 
 
                         }
 
 
-                        switch (alt108) {
+                        switch (alt107) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:6356:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalSignalDSL.g:6680:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
                     	    {
-                    	    // InternalSignalDSL.g:6357:6: (lv_catchClauses_3_0= ruleXCatchClause )
-                    	    // InternalSignalDSL.g:6358:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    // InternalSignalDSL.g:6681:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalSignalDSL.g:6682:7: lv_catchClauses_3_0= ruleXCatchClause
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_89);
+                    	    pushFollow(FOLLOW_88);
                     	    lv_catchClauses_3_0=ruleXCatchClause();
 
                     	    state._fsp--;
@@ -17356,34 +18256,34 @@
                     	    break;
 
                     	default :
-                    	    if ( cnt108 >= 1 ) break loop108;
+                    	    if ( cnt107 >= 1 ) break loop107;
                     	    if (state.backtracking>0) {state.failed=true; return current;}
                                 EarlyExitException eee =
-                                    new EarlyExitException(108, input);
+                                    new EarlyExitException(107, input);
                                 throw eee;
                         }
-                        cnt108++;
+                        cnt107++;
                     } while (true);
 
-                    // InternalSignalDSL.g:6375:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
-                    int alt109=2;
-                    int LA109_0 = input.LA(1);
+                    // InternalSignalDSL.g:6699:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    int alt108=2;
+                    int LA108_0 = input.LA(1);
 
-                    if ( (LA109_0==91) ) {
-                        int LA109_1 = input.LA(2);
+                    if ( (LA108_0==97) ) {
+                        int LA108_1 = input.LA(2);
 
                         if ( (synpred45_InternalSignalDSL()) ) {
-                            alt109=1;
+                            alt108=1;
                         }
                     }
-                    switch (alt109) {
+                    switch (alt108) {
                         case 1 :
-                            // InternalSignalDSL.g:6376:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6700:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
                             {
-                            // InternalSignalDSL.g:6376:6: ( ( 'finally' )=>otherlv_4= 'finally' )
-                            // InternalSignalDSL.g:6377:7: ( 'finally' )=>otherlv_4= 'finally'
+                            // InternalSignalDSL.g:6700:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalSignalDSL.g:6701:7: ( 'finally' )=>otherlv_4= 'finally'
                             {
-                            otherlv_4=(Token)match(input,91,FOLLOW_28); if (state.failed) return current;
+                            otherlv_4=(Token)match(input,97,FOLLOW_28); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
@@ -17392,11 +18292,11 @@
 
                             }
 
-                            // InternalSignalDSL.g:6383:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
-                            // InternalSignalDSL.g:6384:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalSignalDSL.g:6707:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalSignalDSL.g:6708:7: (lv_finallyExpression_5_0= ruleXExpression )
                             {
-                            // InternalSignalDSL.g:6384:7: (lv_finallyExpression_5_0= ruleXExpression )
-                            // InternalSignalDSL.g:6385:8: lv_finallyExpression_5_0= ruleXExpression
+                            // InternalSignalDSL.g:6708:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalSignalDSL.g:6709:8: lv_finallyExpression_5_0= ruleXExpression
                             {
                             if ( state.backtracking==0 ) {
 
@@ -17440,22 +18340,22 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6405:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:6729:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
                     {
-                    // InternalSignalDSL.g:6405:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
-                    // InternalSignalDSL.g:6406:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:6729:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalSignalDSL.g:6730:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
                     {
-                    otherlv_6=(Token)match(input,91,FOLLOW_28); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,97,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
                       				
                     }
-                    // InternalSignalDSL.g:6410:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
-                    // InternalSignalDSL.g:6411:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:6734:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalSignalDSL.g:6735:6: (lv_finallyExpression_7_0= ruleXExpression )
                     {
-                    // InternalSignalDSL.g:6411:6: (lv_finallyExpression_7_0= ruleXExpression )
-                    // InternalSignalDSL.g:6412:7: lv_finallyExpression_7_0= ruleXExpression
+                    // InternalSignalDSL.g:6735:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalSignalDSL.g:6736:7: lv_finallyExpression_7_0= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
 
@@ -17520,7 +18420,7 @@
 
 
     // $ANTLR start "entryRuleXSynchronizedExpression"
-    // InternalSignalDSL.g:6435:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    // InternalSignalDSL.g:6759:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
     public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17528,8 +18428,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6435:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
-            // InternalSignalDSL.g:6436:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
+            // InternalSignalDSL.g:6759:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalSignalDSL.g:6760:2: iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); 
@@ -17560,7 +18460,7 @@
 
 
     // $ANTLR start "ruleXSynchronizedExpression"
-    // InternalSignalDSL.g:6442:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:6766:1: ruleXSynchronizedExpression returns [EObject current=null] : ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) ;
     public final EObject ruleXSynchronizedExpression() throws RecognitionException {
         EObject current = null;
 
@@ -17576,20 +18476,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6448:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:6449:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6772:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6773:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:6449:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:6450:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6773:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6774:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:6450:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
-            // InternalSignalDSL.g:6451:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalSignalDSL.g:6774:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalSignalDSL.g:6775:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
             {
-            // InternalSignalDSL.g:6458:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
-            // InternalSignalDSL.g:6459:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            // InternalSignalDSL.g:6782:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalSignalDSL.g:6783:5: () otherlv_1= 'synchronized' otherlv_2= '('
             {
-            // InternalSignalDSL.g:6459:5: ()
-            // InternalSignalDSL.g:6460:6: 
+            // InternalSignalDSL.g:6783:5: ()
+            // InternalSignalDSL.g:6784:6: 
             {
             if ( state.backtracking==0 ) {
 
@@ -17601,13 +18501,13 @@
 
             }
 
-            otherlv_1=(Token)match(input,92,FOLLOW_66); if (state.failed) return current;
+            otherlv_1=(Token)match(input,98,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
               				
             }
-            otherlv_2=(Token)match(input,30,FOLLOW_28); if (state.failed) return current;
+            otherlv_2=(Token)match(input,36,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
@@ -17619,11 +18519,11 @@
 
             }
 
-            // InternalSignalDSL.g:6476:3: ( (lv_param_3_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6477:4: (lv_param_3_0= ruleXExpression )
+            // InternalSignalDSL.g:6800:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6801:4: (lv_param_3_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6477:4: (lv_param_3_0= ruleXExpression )
-            // InternalSignalDSL.g:6478:5: lv_param_3_0= ruleXExpression
+            // InternalSignalDSL.g:6801:4: (lv_param_3_0= ruleXExpression )
+            // InternalSignalDSL.g:6802:5: lv_param_3_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17654,17 +18554,17 @@
 
             }
 
-            otherlv_4=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
+            otherlv_4=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
               		
             }
-            // InternalSignalDSL.g:6499:3: ( (lv_expression_5_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6500:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:6823:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6824:4: (lv_expression_5_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6500:4: (lv_expression_5_0= ruleXExpression )
-            // InternalSignalDSL.g:6501:5: lv_expression_5_0= ruleXExpression
+            // InternalSignalDSL.g:6824:4: (lv_expression_5_0= ruleXExpression )
+            // InternalSignalDSL.g:6825:5: lv_expression_5_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17720,7 +18620,7 @@
 
 
     // $ANTLR start "entryRuleXCatchClause"
-    // InternalSignalDSL.g:6522:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    // InternalSignalDSL.g:6846:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
     public final EObject entryRuleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -17728,8 +18628,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6522:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
-            // InternalSignalDSL.g:6523:2: iv_ruleXCatchClause= ruleXCatchClause EOF
+            // InternalSignalDSL.g:6846:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalSignalDSL.g:6847:2: iv_ruleXCatchClause= ruleXCatchClause EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXCatchClauseRule()); 
@@ -17760,7 +18660,7 @@
 
 
     // $ANTLR start "ruleXCatchClause"
-    // InternalSignalDSL.g:6529:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
+    // InternalSignalDSL.g:6853:1: ruleXCatchClause returns [EObject current=null] : ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) ;
     public final EObject ruleXCatchClause() throws RecognitionException {
         EObject current = null;
 
@@ -17776,16 +18676,16 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6535:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
-            // InternalSignalDSL.g:6536:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6859:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalSignalDSL.g:6860:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
             {
-            // InternalSignalDSL.g:6536:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
-            // InternalSignalDSL.g:6537:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6860:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalSignalDSL.g:6861:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
             {
-            // InternalSignalDSL.g:6537:3: ( ( 'catch' )=>otherlv_0= 'catch' )
-            // InternalSignalDSL.g:6538:4: ( 'catch' )=>otherlv_0= 'catch'
+            // InternalSignalDSL.g:6861:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalSignalDSL.g:6862:4: ( 'catch' )=>otherlv_0= 'catch'
             {
-            otherlv_0=(Token)match(input,93,FOLLOW_66); if (state.failed) return current;
+            otherlv_0=(Token)match(input,99,FOLLOW_66); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
@@ -17794,17 +18694,17 @@
 
             }
 
-            otherlv_1=(Token)match(input,30,FOLLOW_41); if (state.failed) return current;
+            otherlv_1=(Token)match(input,36,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6548:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
-            // InternalSignalDSL.g:6549:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:6872:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalSignalDSL.g:6873:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
             {
-            // InternalSignalDSL.g:6549:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
-            // InternalSignalDSL.g:6550:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            // InternalSignalDSL.g:6873:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalSignalDSL.g:6874:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
             {
             if ( state.backtracking==0 ) {
 
@@ -17835,17 +18735,17 @@
 
             }
 
-            otherlv_3=(Token)match(input,32,FOLLOW_28); if (state.failed) return current;
+            otherlv_3=(Token)match(input,38,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
               		
             }
-            // InternalSignalDSL.g:6571:3: ( (lv_expression_4_0= ruleXExpression ) )
-            // InternalSignalDSL.g:6572:4: (lv_expression_4_0= ruleXExpression )
+            // InternalSignalDSL.g:6895:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalSignalDSL.g:6896:4: (lv_expression_4_0= ruleXExpression )
             {
-            // InternalSignalDSL.g:6572:4: (lv_expression_4_0= ruleXExpression )
-            // InternalSignalDSL.g:6573:5: lv_expression_4_0= ruleXExpression
+            // InternalSignalDSL.g:6896:4: (lv_expression_4_0= ruleXExpression )
+            // InternalSignalDSL.g:6897:5: lv_expression_4_0= ruleXExpression
             {
             if ( state.backtracking==0 ) {
 
@@ -17901,7 +18801,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedName"
-    // InternalSignalDSL.g:6594:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    // InternalSignalDSL.g:6918:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
     public final String entryRuleQualifiedName() throws RecognitionException {
         String current = null;
 
@@ -17909,8 +18809,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6594:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // InternalSignalDSL.g:6595:2: iv_ruleQualifiedName= ruleQualifiedName EOF
+            // InternalSignalDSL.g:6918:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalSignalDSL.g:6919:2: iv_ruleQualifiedName= ruleQualifiedName EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameRule()); 
@@ -17941,7 +18841,7 @@
 
 
     // $ANTLR start "ruleQualifiedName"
-    // InternalSignalDSL.g:6601:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
+    // InternalSignalDSL.g:6925:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -17955,18 +18855,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6607:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // InternalSignalDSL.g:6608:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalSignalDSL.g:6931:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalSignalDSL.g:6932:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
             {
-            // InternalSignalDSL.g:6608:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // InternalSignalDSL.g:6609:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            // InternalSignalDSL.g:6932:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalSignalDSL.g:6933:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_90);
+            pushFollow(FOLLOW_89);
             this_ValidID_0=ruleValidID();
 
             state._fsp--;
@@ -17981,20 +18881,20 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            // InternalSignalDSL.g:6619:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            loop111:
+            // InternalSignalDSL.g:6943:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop110:
             do {
-                int alt111=2;
-                int LA111_0 = input.LA(1);
+                int alt110=2;
+                int LA110_0 = input.LA(1);
 
-                if ( (LA111_0==67) ) {
-                    int LA111_2 = input.LA(2);
+                if ( (LA110_0==73) ) {
+                    int LA110_2 = input.LA(2);
 
-                    if ( (LA111_2==RULE_ID) ) {
-                        int LA111_3 = input.LA(3);
+                    if ( (LA110_2==RULE_ID) ) {
+                        int LA110_3 = input.LA(3);
 
                         if ( (synpred48_InternalSignalDSL()) ) {
-                            alt111=1;
+                            alt110=1;
                         }
 
 
@@ -18004,14 +18904,14 @@
                 }
 
 
-                switch (alt111) {
+                switch (alt110) {
             	case 1 :
-            	    // InternalSignalDSL.g:6620:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    // InternalSignalDSL.g:6944:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
             	    {
-            	    // InternalSignalDSL.g:6620:4: ( ( '.' )=>kw= '.' )
-            	    // InternalSignalDSL.g:6621:5: ( '.' )=>kw= '.'
+            	    // InternalSignalDSL.g:6944:4: ( ( '.' )=>kw= '.' )
+            	    // InternalSignalDSL.g:6945:5: ( '.' )=>kw= '.'
             	    {
-            	    kw=(Token)match(input,67,FOLLOW_4); if (state.failed) return current;
+            	    kw=(Token)match(input,73,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
             	      					current.merge(kw);
@@ -18026,7 +18926,7 @@
             	      				newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_1_1());
             	      			
             	    }
-            	    pushFollow(FOLLOW_90);
+            	    pushFollow(FOLLOW_89);
             	    this_ValidID_2=ruleValidID();
 
             	    state._fsp--;
@@ -18046,7 +18946,7 @@
             	    break;
 
             	default :
-            	    break loop111;
+            	    break loop110;
                 }
             } while (true);
 
@@ -18075,7 +18975,7 @@
 
 
     // $ANTLR start "entryRuleNumber"
-    // InternalSignalDSL.g:6643:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
+    // InternalSignalDSL.g:6967:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
     public final String entryRuleNumber() throws RecognitionException {
         String current = null;
 
@@ -18086,8 +18986,8 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalSignalDSL.g:6645:2: (iv_ruleNumber= ruleNumber EOF )
-            // InternalSignalDSL.g:6646:2: iv_ruleNumber= ruleNumber EOF
+            // InternalSignalDSL.g:6969:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalSignalDSL.g:6970:2: iv_ruleNumber= ruleNumber EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getNumberRule()); 
@@ -18121,7 +19021,7 @@
 
 
     // $ANTLR start "ruleNumber"
-    // InternalSignalDSL.g:6655:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
+    // InternalSignalDSL.g:6979:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) ;
     public final AntlrDatatypeRuleToken ruleNumber() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -18137,29 +19037,29 @@
         	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
 
         try {
-            // InternalSignalDSL.g:6662:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
-            // InternalSignalDSL.g:6663:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            // InternalSignalDSL.g:6986:2: ( (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) ) )
+            // InternalSignalDSL.g:6987:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
             {
-            // InternalSignalDSL.g:6663:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
-            int alt115=2;
-            int LA115_0 = input.LA(1);
+            // InternalSignalDSL.g:6987:2: (this_HEX_0= RULE_HEX | ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? ) )
+            int alt114=2;
+            int LA114_0 = input.LA(1);
 
-            if ( (LA115_0==RULE_HEX) ) {
-                alt115=1;
+            if ( (LA114_0==RULE_HEX) ) {
+                alt114=1;
             }
-            else if ( ((LA115_0>=RULE_INT && LA115_0<=RULE_DECIMAL)) ) {
-                alt115=2;
+            else if ( (LA114_0==RULE_INT||LA114_0==RULE_DECIMAL) ) {
+                alt114=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 115, 0, input);
+                    new NoViableAltException("", 114, 0, input);
 
                 throw nvae;
             }
-            switch (alt115) {
+            switch (alt114) {
                 case 1 :
-                    // InternalSignalDSL.g:6664:3: this_HEX_0= RULE_HEX
+                    // InternalSignalDSL.g:6988:3: this_HEX_0= RULE_HEX
                     {
                     this_HEX_0=(Token)match(input,RULE_HEX,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
@@ -18176,33 +19076,33 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6672:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalSignalDSL.g:6996:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
                     {
-                    // InternalSignalDSL.g:6672:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
-                    // InternalSignalDSL.g:6673:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    // InternalSignalDSL.g:6996:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalSignalDSL.g:6997:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
                     {
-                    // InternalSignalDSL.g:6673:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
-                    int alt112=2;
-                    int LA112_0 = input.LA(1);
+                    // InternalSignalDSL.g:6997:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    int alt111=2;
+                    int LA111_0 = input.LA(1);
 
-                    if ( (LA112_0==RULE_INT) ) {
-                        alt112=1;
+                    if ( (LA111_0==RULE_INT) ) {
+                        alt111=1;
                     }
-                    else if ( (LA112_0==RULE_DECIMAL) ) {
-                        alt112=2;
+                    else if ( (LA111_0==RULE_DECIMAL) ) {
+                        alt111=2;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 112, 0, input);
+                            new NoViableAltException("", 111, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt112) {
+                    switch (alt111) {
                         case 1 :
-                            // InternalSignalDSL.g:6674:5: this_INT_1= RULE_INT
+                            // InternalSignalDSL.g:6998:5: this_INT_1= RULE_INT
                             {
-                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_90); if (state.failed) return current;
+                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_89); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(this_INT_1);
@@ -18217,9 +19117,9 @@
                             }
                             break;
                         case 2 :
-                            // InternalSignalDSL.g:6682:5: this_DECIMAL_2= RULE_DECIMAL
+                            // InternalSignalDSL.g:7006:5: this_DECIMAL_2= RULE_DECIMAL
                             {
-                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_90); if (state.failed) return current;
+                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_89); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(this_DECIMAL_2);
@@ -18236,48 +19136,48 @@
 
                     }
 
-                    // InternalSignalDSL.g:6690:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
-                    int alt114=2;
-                    int LA114_0 = input.LA(1);
+                    // InternalSignalDSL.g:7014:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    int alt113=2;
+                    int LA113_0 = input.LA(1);
 
-                    if ( (LA114_0==67) ) {
-                        int LA114_1 = input.LA(2);
+                    if ( (LA113_0==73) ) {
+                        int LA113_1 = input.LA(2);
 
-                        if ( ((LA114_1>=RULE_INT && LA114_1<=RULE_DECIMAL)) ) {
-                            alt114=1;
+                        if ( (LA113_1==RULE_INT||LA113_1==RULE_DECIMAL) ) {
+                            alt113=1;
                         }
                     }
-                    switch (alt114) {
+                    switch (alt113) {
                         case 1 :
-                            // InternalSignalDSL.g:6691:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            // InternalSignalDSL.g:7015:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
                             {
-                            kw=(Token)match(input,67,FOLLOW_91); if (state.failed) return current;
+                            kw=(Token)match(input,73,FOLLOW_90); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
                               					current.merge(kw);
                               					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
                               				
                             }
-                            // InternalSignalDSL.g:6696:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
-                            int alt113=2;
-                            int LA113_0 = input.LA(1);
+                            // InternalSignalDSL.g:7020:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            int alt112=2;
+                            int LA112_0 = input.LA(1);
 
-                            if ( (LA113_0==RULE_INT) ) {
-                                alt113=1;
+                            if ( (LA112_0==RULE_INT) ) {
+                                alt112=1;
                             }
-                            else if ( (LA113_0==RULE_DECIMAL) ) {
-                                alt113=2;
+                            else if ( (LA112_0==RULE_DECIMAL) ) {
+                                alt112=2;
                             }
                             else {
                                 if (state.backtracking>0) {state.failed=true; return current;}
                                 NoViableAltException nvae =
-                                    new NoViableAltException("", 113, 0, input);
+                                    new NoViableAltException("", 112, 0, input);
 
                                 throw nvae;
                             }
-                            switch (alt113) {
+                            switch (alt112) {
                                 case 1 :
-                                    // InternalSignalDSL.g:6697:6: this_INT_4= RULE_INT
+                                    // InternalSignalDSL.g:7021:6: this_INT_4= RULE_INT
                                     {
                                     this_INT_4=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
@@ -18294,7 +19194,7 @@
                                     }
                                     break;
                                 case 2 :
-                                    // InternalSignalDSL.g:6705:6: this_DECIMAL_5= RULE_DECIMAL
+                                    // InternalSignalDSL.g:7029:6: this_DECIMAL_5= RULE_DECIMAL
                                     {
                                     this_DECIMAL_5=(Token)match(input,RULE_DECIMAL,FOLLOW_2); if (state.failed) return current;
                                     if ( state.backtracking==0 ) {
@@ -18353,7 +19253,7 @@
 
 
     // $ANTLR start "entryRuleJvmTypeReference"
-    // InternalSignalDSL.g:6722:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    // InternalSignalDSL.g:7046:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
     public final EObject entryRuleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -18361,8 +19261,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6722:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
-            // InternalSignalDSL.g:6723:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
+            // InternalSignalDSL.g:7046:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalSignalDSL.g:7047:2: iv_ruleJvmTypeReference= ruleJvmTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); 
@@ -18393,7 +19293,7 @@
 
 
     // $ANTLR start "ruleJvmTypeReference"
-    // InternalSignalDSL.g:6729:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
+    // InternalSignalDSL.g:7053:1: ruleJvmTypeReference returns [EObject current=null] : ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) ;
     public final EObject ruleJvmTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -18406,39 +19306,39 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6735:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
-            // InternalSignalDSL.g:6736:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            // InternalSignalDSL.g:7059:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalSignalDSL.g:7060:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
             {
-            // InternalSignalDSL.g:6736:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
-            int alt117=2;
-            int LA117_0 = input.LA(1);
+            // InternalSignalDSL.g:7060:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            int alt116=2;
+            int LA116_0 = input.LA(1);
 
-            if ( (LA117_0==RULE_ID) ) {
-                alt117=1;
+            if ( (LA116_0==RULE_ID) ) {
+                alt116=1;
             }
-            else if ( (LA117_0==30||LA117_0==55) ) {
-                alt117=2;
+            else if ( (LA116_0==36||LA116_0==61) ) {
+                alt116=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 117, 0, input);
+                    new NoViableAltException("", 116, 0, input);
 
                 throw nvae;
             }
-            switch (alt117) {
+            switch (alt116) {
                 case 1 :
-                    // InternalSignalDSL.g:6737:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalSignalDSL.g:7061:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
                     {
-                    // InternalSignalDSL.g:6737:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
-                    // InternalSignalDSL.g:6738:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    // InternalSignalDSL.g:7061:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalSignalDSL.g:7062:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
                     {
                     if ( state.backtracking==0 ) {
 
                       				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
                       			
                     }
-                    pushFollow(FOLLOW_84);
+                    pushFollow(FOLLOW_83);
                     this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
 
                     state._fsp--;
@@ -18449,20 +19349,20 @@
                       				afterParserOrEnumRuleCall();
                       			
                     }
-                    // InternalSignalDSL.g:6746:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
-                    loop116:
+                    // InternalSignalDSL.g:7070:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    loop115:
                     do {
-                        int alt116=2;
-                        int LA116_0 = input.LA(1);
+                        int alt115=2;
+                        int LA115_0 = input.LA(1);
 
-                        if ( (LA116_0==35) ) {
-                            int LA116_2 = input.LA(2);
+                        if ( (LA115_0==41) ) {
+                            int LA115_2 = input.LA(2);
 
-                            if ( (LA116_2==36) ) {
-                                int LA116_3 = input.LA(3);
+                            if ( (LA115_2==42) ) {
+                                int LA115_3 = input.LA(3);
 
                                 if ( (synpred49_InternalSignalDSL()) ) {
-                                    alt116=1;
+                                    alt115=1;
                                 }
 
 
@@ -18472,15 +19372,15 @@
                         }
 
 
-                        switch (alt116) {
+                        switch (alt115) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:6747:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    // InternalSignalDSL.g:7071:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
                     	    {
-                    	    // InternalSignalDSL.g:6753:5: ( () ruleArrayBrackets )
-                    	    // InternalSignalDSL.g:6754:6: () ruleArrayBrackets
+                    	    // InternalSignalDSL.g:7077:5: ( () ruleArrayBrackets )
+                    	    // InternalSignalDSL.g:7078:6: () ruleArrayBrackets
                     	    {
-                    	    // InternalSignalDSL.g:6754:6: ()
-                    	    // InternalSignalDSL.g:6755:7: 
+                    	    // InternalSignalDSL.g:7078:6: ()
+                    	    // InternalSignalDSL.g:7079:7: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -18497,7 +19397,7 @@
                     	      						newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1());
                     	      					
                     	    }
-                    	    pushFollow(FOLLOW_84);
+                    	    pushFollow(FOLLOW_83);
                     	    ruleArrayBrackets();
 
                     	    state._fsp--;
@@ -18515,7 +19415,7 @@
                     	    break;
 
                     	default :
-                    	    break loop116;
+                    	    break loop115;
                         }
                     } while (true);
 
@@ -18526,7 +19426,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:6772:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
+                    // InternalSignalDSL.g:7096:3: this_XFunctionTypeRef_3= ruleXFunctionTypeRef
                     {
                     if ( state.backtracking==0 ) {
 
@@ -18572,7 +19472,7 @@
 
 
     // $ANTLR start "entryRuleArrayBrackets"
-    // InternalSignalDSL.g:6784:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    // InternalSignalDSL.g:7108:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
     public final String entryRuleArrayBrackets() throws RecognitionException {
         String current = null;
 
@@ -18580,8 +19480,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6784:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
-            // InternalSignalDSL.g:6785:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
+            // InternalSignalDSL.g:7108:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalSignalDSL.g:7109:2: iv_ruleArrayBrackets= ruleArrayBrackets EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getArrayBracketsRule()); 
@@ -18612,7 +19512,7 @@
 
 
     // $ANTLR start "ruleArrayBrackets"
-    // InternalSignalDSL.g:6791:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    // InternalSignalDSL.g:7115:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
     public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -18622,20 +19522,20 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6797:2: ( (kw= '[' kw= ']' ) )
-            // InternalSignalDSL.g:6798:2: (kw= '[' kw= ']' )
+            // InternalSignalDSL.g:7121:2: ( (kw= '[' kw= ']' ) )
+            // InternalSignalDSL.g:7122:2: (kw= '[' kw= ']' )
             {
-            // InternalSignalDSL.g:6798:2: (kw= '[' kw= ']' )
-            // InternalSignalDSL.g:6799:3: kw= '[' kw= ']'
+            // InternalSignalDSL.g:7122:2: (kw= '[' kw= ']' )
+            // InternalSignalDSL.g:7123:3: kw= '[' kw= ']'
             {
-            kw=(Token)match(input,35,FOLLOW_63); if (state.failed) return current;
+            kw=(Token)match(input,41,FOLLOW_63); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
               			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
               		
             }
-            kw=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -18667,7 +19567,7 @@
 
 
     // $ANTLR start "entryRuleXFunctionTypeRef"
-    // InternalSignalDSL.g:6813:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    // InternalSignalDSL.g:7137:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
     public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -18675,8 +19575,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6813:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
-            // InternalSignalDSL.g:6814:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
+            // InternalSignalDSL.g:7137:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalSignalDSL.g:7138:2: iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); 
@@ -18707,7 +19607,7 @@
 
 
     // $ANTLR start "ruleXFunctionTypeRef"
-    // InternalSignalDSL.g:6820:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7144:1: ruleXFunctionTypeRef returns [EObject current=null] : ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleXFunctionTypeRef() throws RecognitionException {
         EObject current = null;
 
@@ -18726,45 +19626,45 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6826:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:6827:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7150:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7151:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:6827:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:6828:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7151:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7152:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
             {
-            // InternalSignalDSL.g:6828:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
-            int alt120=2;
-            int LA120_0 = input.LA(1);
+            // InternalSignalDSL.g:7152:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            int alt119=2;
+            int LA119_0 = input.LA(1);
 
-            if ( (LA120_0==30) ) {
-                alt120=1;
+            if ( (LA119_0==36) ) {
+                alt119=1;
             }
-            switch (alt120) {
+            switch (alt119) {
                 case 1 :
-                    // InternalSignalDSL.g:6829:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    // InternalSignalDSL.g:7153:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
                     {
-                    otherlv_0=(Token)match(input,30,FOLLOW_92); if (state.failed) return current;
+                    otherlv_0=(Token)match(input,36,FOLLOW_91); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
                       			
                     }
-                    // InternalSignalDSL.g:6833:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
-                    int alt119=2;
-                    int LA119_0 = input.LA(1);
+                    // InternalSignalDSL.g:7157:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    int alt118=2;
+                    int LA118_0 = input.LA(1);
 
-                    if ( (LA119_0==RULE_ID||LA119_0==30||LA119_0==55) ) {
-                        alt119=1;
+                    if ( (LA118_0==RULE_ID||LA118_0==36||LA118_0==61) ) {
+                        alt118=1;
                     }
-                    switch (alt119) {
+                    switch (alt118) {
                         case 1 :
-                            // InternalSignalDSL.g:6834:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            // InternalSignalDSL.g:7158:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
                             {
-                            // InternalSignalDSL.g:6834:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
-                            // InternalSignalDSL.g:6835:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalSignalDSL.g:7158:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalSignalDSL.g:7159:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
                             {
-                            // InternalSignalDSL.g:6835:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
-                            // InternalSignalDSL.g:6836:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            // InternalSignalDSL.g:7159:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalSignalDSL.g:7160:7: lv_paramTypes_1_0= ruleJvmTypeReference
                             {
                             if ( state.backtracking==0 ) {
 
@@ -18795,32 +19695,32 @@
 
                             }
 
-                            // InternalSignalDSL.g:6853:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
-                            loop118:
+                            // InternalSignalDSL.g:7177:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            loop117:
                             do {
-                                int alt118=2;
-                                int LA118_0 = input.LA(1);
+                                int alt117=2;
+                                int LA117_0 = input.LA(1);
 
-                                if ( (LA118_0==31) ) {
-                                    alt118=1;
+                                if ( (LA117_0==37) ) {
+                                    alt117=1;
                                 }
 
 
-                                switch (alt118) {
+                                switch (alt117) {
                             	case 1 :
-                            	    // InternalSignalDSL.g:6854:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalSignalDSL.g:7178:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
                             	    {
-                            	    otherlv_2=(Token)match(input,31,FOLLOW_41); if (state.failed) return current;
+                            	    otherlv_2=(Token)match(input,37,FOLLOW_41); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
                             	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
                             	      					
                             	    }
-                            	    // InternalSignalDSL.g:6858:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
-                            	    // InternalSignalDSL.g:6859:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalSignalDSL.g:7182:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalSignalDSL.g:7183:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
                             	    {
-                            	    // InternalSignalDSL.g:6859:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
-                            	    // InternalSignalDSL.g:6860:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    // InternalSignalDSL.g:7183:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalSignalDSL.g:7184:8: lv_paramTypes_3_0= ruleJvmTypeReference
                             	    {
                             	    if ( state.backtracking==0 ) {
 
@@ -18856,7 +19756,7 @@
                             	    break;
 
                             	default :
-                            	    break loop118;
+                            	    break loop117;
                                 }
                             } while (true);
 
@@ -18866,7 +19766,7 @@
 
                     }
 
-                    otherlv_4=(Token)match(input,32,FOLLOW_93); if (state.failed) return current;
+                    otherlv_4=(Token)match(input,38,FOLLOW_92); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
@@ -18878,17 +19778,17 @@
 
             }
 
-            otherlv_5=(Token)match(input,55,FOLLOW_41); if (state.failed) return current;
+            otherlv_5=(Token)match(input,61,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
               		
             }
-            // InternalSignalDSL.g:6888:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:6889:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7212:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7213:4: (lv_returnType_6_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:6889:4: (lv_returnType_6_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:6890:5: lv_returnType_6_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7213:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7214:5: lv_returnType_6_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -18944,7 +19844,7 @@
 
 
     // $ANTLR start "entryRuleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:6911:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    // InternalSignalDSL.g:7235:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
     public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -18952,8 +19852,8 @@
 
 
         try {
-            // InternalSignalDSL.g:6911:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
-            // InternalSignalDSL.g:6912:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
+            // InternalSignalDSL.g:7235:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalSignalDSL.g:7236:2: iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
@@ -18984,7 +19884,7 @@
 
 
     // $ANTLR start "ruleJvmParameterizedTypeReference"
-    // InternalSignalDSL.g:6918:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
+    // InternalSignalDSL.g:7242:1: ruleJvmParameterizedTypeReference returns [EObject current=null] : ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) ;
     public final EObject ruleJvmParameterizedTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19008,17 +19908,17 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:6924:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
-            // InternalSignalDSL.g:6925:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalSignalDSL.g:7248:2: ( ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? ) )
+            // InternalSignalDSL.g:7249:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
             {
-            // InternalSignalDSL.g:6925:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
-            // InternalSignalDSL.g:6926:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            // InternalSignalDSL.g:7249:2: ( ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )? )
+            // InternalSignalDSL.g:7250:3: ( ( ruleQualifiedName ) ) ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
             {
-            // InternalSignalDSL.g:6926:3: ( ( ruleQualifiedName ) )
-            // InternalSignalDSL.g:6927:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:7250:3: ( ( ruleQualifiedName ) )
+            // InternalSignalDSL.g:7251:4: ( ruleQualifiedName )
             {
-            // InternalSignalDSL.g:6927:4: ( ruleQualifiedName )
-            // InternalSignalDSL.g:6928:5: ruleQualifiedName
+            // InternalSignalDSL.g:7251:4: ( ruleQualifiedName )
+            // InternalSignalDSL.g:7252:5: ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
 
@@ -19032,7 +19932,7 @@
               					newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0());
               				
             }
-            pushFollow(FOLLOW_94);
+            pushFollow(FOLLOW_93);
             ruleQualifiedName();
 
             state._fsp--;
@@ -19048,17 +19948,17 @@
 
             }
 
-            // InternalSignalDSL.g:6942:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
-            int alt125=2;
-            alt125 = dfa125.predict(input);
-            switch (alt125) {
+            // InternalSignalDSL.g:7266:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?
+            int alt124=2;
+            alt124 = dfa124.predict(input);
+            switch (alt124) {
                 case 1 :
-                    // InternalSignalDSL.g:6943:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    // InternalSignalDSL.g:7267:4: ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
                     {
-                    // InternalSignalDSL.g:6943:4: ( ( '<' )=>otherlv_1= '<' )
-                    // InternalSignalDSL.g:6944:5: ( '<' )=>otherlv_1= '<'
+                    // InternalSignalDSL.g:7267:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalSignalDSL.g:7268:5: ( '<' )=>otherlv_1= '<'
                     {
-                    otherlv_1=(Token)match(input,42,FOLLOW_53); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
@@ -19067,11 +19967,11 @@
 
                     }
 
-                    // InternalSignalDSL.g:6950:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
-                    // InternalSignalDSL.g:6951:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:7274:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalSignalDSL.g:7275:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
                     {
-                    // InternalSignalDSL.g:6951:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
-                    // InternalSignalDSL.g:6952:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    // InternalSignalDSL.g:7275:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalSignalDSL.g:7276:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19102,32 +20002,32 @@
 
                     }
 
-                    // InternalSignalDSL.g:6969:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
-                    loop121:
+                    // InternalSignalDSL.g:7293:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop120:
                     do {
-                        int alt121=2;
-                        int LA121_0 = input.LA(1);
+                        int alt120=2;
+                        int LA120_0 = input.LA(1);
 
-                        if ( (LA121_0==31) ) {
-                            alt121=1;
+                        if ( (LA120_0==37) ) {
+                            alt120=1;
                         }
 
 
-                        switch (alt121) {
+                        switch (alt120) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:6970:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:7294:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
                     	    {
-                    	    otherlv_3=(Token)match(input,31,FOLLOW_53); if (state.failed) return current;
+                    	    otherlv_3=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
                     	      				
                     	    }
-                    	    // InternalSignalDSL.g:6974:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
-                    	    // InternalSignalDSL.g:6975:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:7298:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalSignalDSL.g:7299:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
                     	    {
-                    	    // InternalSignalDSL.g:6975:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
-                    	    // InternalSignalDSL.g:6976:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    // InternalSignalDSL.g:7299:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalSignalDSL.g:7300:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -19163,30 +20063,30 @@
                     	    break;
 
                     	default :
-                    	    break loop121;
+                    	    break loop120;
                         }
                     } while (true);
 
-                    otherlv_5=(Token)match(input,43,FOLLOW_90); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,49,FOLLOW_89); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
                       			
                     }
-                    // InternalSignalDSL.g:6998:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
-                    loop124:
+                    // InternalSignalDSL.g:7322:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    loop123:
                     do {
-                        int alt124=2;
-                        int LA124_0 = input.LA(1);
+                        int alt123=2;
+                        int LA123_0 = input.LA(1);
 
-                        if ( (LA124_0==67) ) {
-                            int LA124_2 = input.LA(2);
+                        if ( (LA123_0==73) ) {
+                            int LA123_2 = input.LA(2);
 
-                            if ( (LA124_2==RULE_ID) ) {
-                                int LA124_3 = input.LA(3);
+                            if ( (LA123_2==RULE_ID) ) {
+                                int LA123_3 = input.LA(3);
 
                                 if ( (synpred51_InternalSignalDSL()) ) {
-                                    alt124=1;
+                                    alt123=1;
                                 }
 
 
@@ -19196,18 +20096,18 @@
                         }
 
 
-                        switch (alt124) {
+                        switch (alt123) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:6999:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    // InternalSignalDSL.g:7323:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
                     	    {
-                    	    // InternalSignalDSL.g:6999:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
-                    	    // InternalSignalDSL.g:7000:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    // InternalSignalDSL.g:7323:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalSignalDSL.g:7324:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
                     	    {
-                    	    // InternalSignalDSL.g:7006:6: ( () otherlv_7= '.' )
-                    	    // InternalSignalDSL.g:7007:7: () otherlv_7= '.'
+                    	    // InternalSignalDSL.g:7330:6: ( () otherlv_7= '.' )
+                    	    // InternalSignalDSL.g:7331:7: () otherlv_7= '.'
                     	    {
-                    	    // InternalSignalDSL.g:7007:7: ()
-                    	    // InternalSignalDSL.g:7008:8: 
+                    	    // InternalSignalDSL.g:7331:7: ()
+                    	    // InternalSignalDSL.g:7332:8: 
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -19219,7 +20119,7 @@
 
                     	    }
 
-                    	    otherlv_7=(Token)match(input,67,FOLLOW_4); if (state.failed) return current;
+                    	    otherlv_7=(Token)match(input,73,FOLLOW_4); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
                     	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
@@ -19231,11 +20131,11 @@
 
                     	    }
 
-                    	    // InternalSignalDSL.g:7020:5: ( ( ruleValidID ) )
-                    	    // InternalSignalDSL.g:7021:6: ( ruleValidID )
+                    	    // InternalSignalDSL.g:7344:5: ( ( ruleValidID ) )
+                    	    // InternalSignalDSL.g:7345:6: ( ruleValidID )
                     	    {
-                    	    // InternalSignalDSL.g:7021:6: ( ruleValidID )
-                    	    // InternalSignalDSL.g:7022:7: ruleValidID
+                    	    // InternalSignalDSL.g:7345:6: ( ruleValidID )
+                    	    // InternalSignalDSL.g:7346:7: ruleValidID
                     	    {
                     	    if ( state.backtracking==0 ) {
 
@@ -19249,7 +20149,7 @@
                     	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_95);
+                    	    pushFollow(FOLLOW_94);
                     	    ruleValidID();
 
                     	    state._fsp--;
@@ -19265,17 +20165,17 @@
 
                     	    }
 
-                    	    // InternalSignalDSL.g:7036:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
-                    	    int alt123=2;
-                    	    alt123 = dfa123.predict(input);
-                    	    switch (alt123) {
+                    	    // InternalSignalDSL.g:7360:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    int alt122=2;
+                    	    alt122 = dfa122.predict(input);
+                    	    switch (alt122) {
                     	        case 1 :
-                    	            // InternalSignalDSL.g:7037:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            // InternalSignalDSL.g:7361:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
                     	            {
-                    	            // InternalSignalDSL.g:7037:6: ( ( '<' )=>otherlv_9= '<' )
-                    	            // InternalSignalDSL.g:7038:7: ( '<' )=>otherlv_9= '<'
+                    	            // InternalSignalDSL.g:7361:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalSignalDSL.g:7362:7: ( '<' )=>otherlv_9= '<'
                     	            {
-                    	            otherlv_9=(Token)match(input,42,FOLLOW_53); if (state.failed) return current;
+                    	            otherlv_9=(Token)match(input,48,FOLLOW_53); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
@@ -19284,11 +20184,11 @@
 
                     	            }
 
-                    	            // InternalSignalDSL.g:7044:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
-                    	            // InternalSignalDSL.g:7045:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalSignalDSL.g:7368:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalSignalDSL.g:7369:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
                     	            {
-                    	            // InternalSignalDSL.g:7045:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
-                    	            // InternalSignalDSL.g:7046:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            // InternalSignalDSL.g:7369:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalSignalDSL.g:7370:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
                     	            {
                     	            if ( state.backtracking==0 ) {
 
@@ -19319,32 +20219,32 @@
 
                     	            }
 
-                    	            // InternalSignalDSL.g:7063:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
-                    	            loop122:
+                    	            // InternalSignalDSL.g:7387:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            loop121:
                     	            do {
-                    	                int alt122=2;
-                    	                int LA122_0 = input.LA(1);
+                    	                int alt121=2;
+                    	                int LA121_0 = input.LA(1);
 
-                    	                if ( (LA122_0==31) ) {
-                    	                    alt122=1;
+                    	                if ( (LA121_0==37) ) {
+                    	                    alt121=1;
                     	                }
 
 
-                    	                switch (alt122) {
+                    	                switch (alt121) {
                     	            	case 1 :
-                    	            	    // InternalSignalDSL.g:7064:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalSignalDSL.g:7388:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
                     	            	    {
-                    	            	    otherlv_11=(Token)match(input,31,FOLLOW_53); if (state.failed) return current;
+                    	            	    otherlv_11=(Token)match(input,37,FOLLOW_53); if (state.failed) return current;
                     	            	    if ( state.backtracking==0 ) {
 
                     	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
                     	            	      						
                     	            	    }
-                    	            	    // InternalSignalDSL.g:7068:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
-                    	            	    // InternalSignalDSL.g:7069:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalSignalDSL.g:7392:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalSignalDSL.g:7393:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
                     	            	    {
-                    	            	    // InternalSignalDSL.g:7069:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
-                    	            	    // InternalSignalDSL.g:7070:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    // InternalSignalDSL.g:7393:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalSignalDSL.g:7394:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
                     	            	    {
                     	            	    if ( state.backtracking==0 ) {
 
@@ -19380,11 +20280,11 @@
                     	            	    break;
 
                     	            	default :
-                    	            	    break loop122;
+                    	            	    break loop121;
                     	                }
                     	            } while (true);
 
-                    	            otherlv_13=(Token)match(input,43,FOLLOW_90); if (state.failed) return current;
+                    	            otherlv_13=(Token)match(input,49,FOLLOW_89); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
                     	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
@@ -19401,7 +20301,7 @@
                     	    break;
 
                     	default :
-                    	    break loop124;
+                    	    break loop123;
                         }
                     } while (true);
 
@@ -19436,7 +20336,7 @@
 
 
     // $ANTLR start "entryRuleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:7099:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    // InternalSignalDSL.g:7423:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
     public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19444,8 +20344,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7099:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
-            // InternalSignalDSL.g:7100:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
+            // InternalSignalDSL.g:7423:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalSignalDSL.g:7424:2: iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); 
@@ -19476,7 +20376,7 @@
 
 
     // $ANTLR start "ruleJvmArgumentTypeReference"
-    // InternalSignalDSL.g:7106:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
+    // InternalSignalDSL.g:7430:1: ruleJvmArgumentTypeReference returns [EObject current=null] : (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) ;
     public final EObject ruleJvmArgumentTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19489,29 +20389,29 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7112:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
-            // InternalSignalDSL.g:7113:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            // InternalSignalDSL.g:7436:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalSignalDSL.g:7437:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
             {
-            // InternalSignalDSL.g:7113:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
-            int alt126=2;
-            int LA126_0 = input.LA(1);
+            // InternalSignalDSL.g:7437:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            int alt125=2;
+            int LA125_0 = input.LA(1);
 
-            if ( (LA126_0==RULE_ID||LA126_0==30||LA126_0==55) ) {
-                alt126=1;
+            if ( (LA125_0==RULE_ID||LA125_0==36||LA125_0==61) ) {
+                alt125=1;
             }
-            else if ( (LA126_0==94) ) {
-                alt126=2;
+            else if ( (LA125_0==100) ) {
+                alt125=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 126, 0, input);
+                    new NoViableAltException("", 125, 0, input);
 
                 throw nvae;
             }
-            switch (alt126) {
+            switch (alt125) {
                 case 1 :
-                    // InternalSignalDSL.g:7114:3: this_JvmTypeReference_0= ruleJvmTypeReference
+                    // InternalSignalDSL.g:7438:3: this_JvmTypeReference_0= ruleJvmTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19533,7 +20433,7 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7123:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
+                    // InternalSignalDSL.g:7447:3: this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference
                     {
                     if ( state.backtracking==0 ) {
 
@@ -19579,7 +20479,7 @@
 
 
     // $ANTLR start "entryRuleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:7135:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    // InternalSignalDSL.g:7459:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
     public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19587,8 +20487,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7135:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
-            // InternalSignalDSL.g:7136:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
+            // InternalSignalDSL.g:7459:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalSignalDSL.g:7460:2: iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); 
@@ -19619,7 +20519,7 @@
 
 
     // $ANTLR start "ruleJvmWildcardTypeReference"
-    // InternalSignalDSL.g:7142:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
+    // InternalSignalDSL.g:7466:1: ruleJvmWildcardTypeReference returns [EObject current=null] : ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) ;
     public final EObject ruleJvmWildcardTypeReference() throws RecognitionException {
         EObject current = null;
 
@@ -19637,14 +20537,14 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7148:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
-            // InternalSignalDSL.g:7149:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalSignalDSL.g:7472:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalSignalDSL.g:7473:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
             {
-            // InternalSignalDSL.g:7149:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
-            // InternalSignalDSL.g:7150:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            // InternalSignalDSL.g:7473:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalSignalDSL.g:7474:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
             {
-            // InternalSignalDSL.g:7150:3: ()
-            // InternalSignalDSL.g:7151:4: 
+            // InternalSignalDSL.g:7474:3: ()
+            // InternalSignalDSL.g:7475:4: 
             {
             if ( state.backtracking==0 ) {
 
@@ -19656,41 +20556,41 @@
 
             }
 
-            otherlv_1=(Token)match(input,94,FOLLOW_96); if (state.failed) return current;
+            otherlv_1=(Token)match(input,100,FOLLOW_95); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
               		
             }
-            // InternalSignalDSL.g:7161:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
-            int alt129=3;
-            int LA129_0 = input.LA(1);
+            // InternalSignalDSL.g:7485:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            int alt128=3;
+            int LA128_0 = input.LA(1);
 
-            if ( (LA129_0==81) ) {
-                alt129=1;
+            if ( (LA128_0==87) ) {
+                alt128=1;
             }
-            else if ( (LA129_0==82) ) {
-                alt129=2;
+            else if ( (LA128_0==88) ) {
+                alt128=2;
             }
-            switch (alt129) {
+            switch (alt128) {
                 case 1 :
-                    // InternalSignalDSL.g:7162:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalSignalDSL.g:7486:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
                     {
-                    // InternalSignalDSL.g:7162:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
-                    // InternalSignalDSL.g:7163:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    // InternalSignalDSL.g:7486:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalSignalDSL.g:7487:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
                     {
-                    // InternalSignalDSL.g:7163:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
-                    // InternalSignalDSL.g:7164:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalSignalDSL.g:7487:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalSignalDSL.g:7488:6: (lv_constraints_2_0= ruleJvmUpperBound )
                     {
-                    // InternalSignalDSL.g:7164:6: (lv_constraints_2_0= ruleJvmUpperBound )
-                    // InternalSignalDSL.g:7165:7: lv_constraints_2_0= ruleJvmUpperBound
+                    // InternalSignalDSL.g:7488:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalSignalDSL.g:7489:7: lv_constraints_2_0= ruleJvmUpperBound
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
                       						
                     }
-                    pushFollow(FOLLOW_97);
+                    pushFollow(FOLLOW_96);
                     lv_constraints_2_0=ruleJvmUpperBound();
 
                     state._fsp--;
@@ -19714,30 +20614,30 @@
 
                     }
 
-                    // InternalSignalDSL.g:7182:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
-                    loop127:
+                    // InternalSignalDSL.g:7506:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    loop126:
                     do {
-                        int alt127=2;
-                        int LA127_0 = input.LA(1);
+                        int alt126=2;
+                        int LA126_0 = input.LA(1);
 
-                        if ( (LA127_0==95) ) {
-                            alt127=1;
+                        if ( (LA126_0==101) ) {
+                            alt126=1;
                         }
 
 
-                        switch (alt127) {
+                        switch (alt126) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7183:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalSignalDSL.g:7507:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
                     	    {
-                    	    // InternalSignalDSL.g:7183:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
-                    	    // InternalSignalDSL.g:7184:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    // InternalSignalDSL.g:7507:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalSignalDSL.g:7508:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_97);
+                    	    pushFollow(FOLLOW_96);
                     	    lv_constraints_3_0=ruleJvmUpperBoundAnded();
 
                     	    state._fsp--;
@@ -19763,7 +20663,7 @@
                     	    break;
 
                     	default :
-                    	    break loop127;
+                    	    break loop126;
                         }
                     } while (true);
 
@@ -19774,23 +20674,23 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7203:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalSignalDSL.g:7527:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
                     {
-                    // InternalSignalDSL.g:7203:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
-                    // InternalSignalDSL.g:7204:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    // InternalSignalDSL.g:7527:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalSignalDSL.g:7528:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
                     {
-                    // InternalSignalDSL.g:7204:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
-                    // InternalSignalDSL.g:7205:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalSignalDSL.g:7528:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalSignalDSL.g:7529:6: (lv_constraints_4_0= ruleJvmLowerBound )
                     {
-                    // InternalSignalDSL.g:7205:6: (lv_constraints_4_0= ruleJvmLowerBound )
-                    // InternalSignalDSL.g:7206:7: lv_constraints_4_0= ruleJvmLowerBound
+                    // InternalSignalDSL.g:7529:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalSignalDSL.g:7530:7: lv_constraints_4_0= ruleJvmLowerBound
                     {
                     if ( state.backtracking==0 ) {
 
                       							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
                       						
                     }
-                    pushFollow(FOLLOW_97);
+                    pushFollow(FOLLOW_96);
                     lv_constraints_4_0=ruleJvmLowerBound();
 
                     state._fsp--;
@@ -19814,30 +20714,30 @@
 
                     }
 
-                    // InternalSignalDSL.g:7223:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
-                    loop128:
+                    // InternalSignalDSL.g:7547:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    loop127:
                     do {
-                        int alt128=2;
-                        int LA128_0 = input.LA(1);
+                        int alt127=2;
+                        int LA127_0 = input.LA(1);
 
-                        if ( (LA128_0==95) ) {
-                            alt128=1;
+                        if ( (LA127_0==101) ) {
+                            alt127=1;
                         }
 
 
-                        switch (alt128) {
+                        switch (alt127) {
                     	case 1 :
-                    	    // InternalSignalDSL.g:7224:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalSignalDSL.g:7548:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
                     	    {
-                    	    // InternalSignalDSL.g:7224:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
-                    	    // InternalSignalDSL.g:7225:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    // InternalSignalDSL.g:7548:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalSignalDSL.g:7549:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
                     	    {
                     	    if ( state.backtracking==0 ) {
 
                     	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
                     	      						
                     	    }
-                    	    pushFollow(FOLLOW_97);
+                    	    pushFollow(FOLLOW_96);
                     	    lv_constraints_5_0=ruleJvmLowerBoundAnded();
 
                     	    state._fsp--;
@@ -19863,7 +20763,7 @@
                     	    break;
 
                     	default :
-                    	    break loop128;
+                    	    break loop127;
                         }
                     } while (true);
 
@@ -19901,7 +20801,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBound"
-    // InternalSignalDSL.g:7248:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    // InternalSignalDSL.g:7572:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
     public final EObject entryRuleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -19909,8 +20809,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7248:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
-            // InternalSignalDSL.g:7249:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
+            // InternalSignalDSL.g:7572:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalSignalDSL.g:7573:2: iv_ruleJvmUpperBound= ruleJvmUpperBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundRule()); 
@@ -19941,7 +20841,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBound"
-    // InternalSignalDSL.g:7255:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7579:1: ruleJvmUpperBound returns [EObject current=null] : (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBound() throws RecognitionException {
         EObject current = null;
 
@@ -19953,23 +20853,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7261:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7262:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7585:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7586:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7262:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7263:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7586:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7587:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,81,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,87,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7267:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7268:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7591:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7592:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7268:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7269:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7592:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7593:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -20025,7 +20925,7 @@
 
 
     // $ANTLR start "entryRuleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:7290:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    // InternalSignalDSL.g:7614:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
     public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -20033,8 +20933,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7290:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
-            // InternalSignalDSL.g:7291:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
+            // InternalSignalDSL.g:7614:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalSignalDSL.g:7615:2: iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmUpperBoundAndedRule()); 
@@ -20065,7 +20965,7 @@
 
 
     // $ANTLR start "ruleJvmUpperBoundAnded"
-    // InternalSignalDSL.g:7297:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7621:1: ruleJvmUpperBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmUpperBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -20077,23 +20977,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7303:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7304:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7627:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7628:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7304:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7305:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7628:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7629:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,95,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,101,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7309:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7310:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7633:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7634:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7310:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7311:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7634:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7635:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -20149,7 +21049,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBound"
-    // InternalSignalDSL.g:7332:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    // InternalSignalDSL.g:7656:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
     public final EObject entryRuleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -20157,8 +21057,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7332:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
-            // InternalSignalDSL.g:7333:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
+            // InternalSignalDSL.g:7656:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalSignalDSL.g:7657:2: iv_ruleJvmLowerBound= ruleJvmLowerBound EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundRule()); 
@@ -20189,7 +21089,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBound"
-    // InternalSignalDSL.g:7339:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7663:1: ruleJvmLowerBound returns [EObject current=null] : (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBound() throws RecognitionException {
         EObject current = null;
 
@@ -20201,23 +21101,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7345:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7346:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7669:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7670:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7346:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7347:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7670:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7671:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,82,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,88,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7351:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7352:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7675:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7676:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7352:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7353:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7676:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7677:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -20273,7 +21173,7 @@
 
 
     // $ANTLR start "entryRuleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:7374:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    // InternalSignalDSL.g:7698:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
     public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -20281,8 +21181,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7374:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
-            // InternalSignalDSL.g:7375:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
+            // InternalSignalDSL.g:7698:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalSignalDSL.g:7699:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); 
@@ -20313,7 +21213,7 @@
 
 
     // $ANTLR start "ruleJvmLowerBoundAnded"
-    // InternalSignalDSL.g:7381:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
+    // InternalSignalDSL.g:7705:1: ruleJvmLowerBoundAnded returns [EObject current=null] : (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) ;
     public final EObject ruleJvmLowerBoundAnded() throws RecognitionException {
         EObject current = null;
 
@@ -20325,23 +21225,23 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7387:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
-            // InternalSignalDSL.g:7388:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7711:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalSignalDSL.g:7712:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
             {
-            // InternalSignalDSL.g:7388:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
-            // InternalSignalDSL.g:7389:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7712:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalSignalDSL.g:7713:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
             {
-            otherlv_0=(Token)match(input,95,FOLLOW_41); if (state.failed) return current;
+            otherlv_0=(Token)match(input,101,FOLLOW_41); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
               		
             }
-            // InternalSignalDSL.g:7393:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
-            // InternalSignalDSL.g:7394:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7717:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalSignalDSL.g:7718:4: (lv_typeReference_1_0= ruleJvmTypeReference )
             {
-            // InternalSignalDSL.g:7394:4: (lv_typeReference_1_0= ruleJvmTypeReference )
-            // InternalSignalDSL.g:7395:5: lv_typeReference_1_0= ruleJvmTypeReference
+            // InternalSignalDSL.g:7718:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalSignalDSL.g:7719:5: lv_typeReference_1_0= ruleJvmTypeReference
             {
             if ( state.backtracking==0 ) {
 
@@ -20397,7 +21297,7 @@
 
 
     // $ANTLR start "entryRuleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:7416:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    // InternalSignalDSL.g:7740:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
     public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
         String current = null;
 
@@ -20405,8 +21305,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7416:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
-            // InternalSignalDSL.g:7417:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
+            // InternalSignalDSL.g:7740:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalSignalDSL.g:7741:2: iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getQualifiedNameWithWildcardRule()); 
@@ -20437,7 +21337,7 @@
 
 
     // $ANTLR start "ruleQualifiedNameWithWildcard"
-    // InternalSignalDSL.g:7423:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
+    // InternalSignalDSL.g:7747:1: ruleQualifiedNameWithWildcard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) ;
     public final AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -20449,18 +21349,18 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7429:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
-            // InternalSignalDSL.g:7430:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalSignalDSL.g:7753:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalSignalDSL.g:7754:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
             {
-            // InternalSignalDSL.g:7430:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
-            // InternalSignalDSL.g:7431:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            // InternalSignalDSL.g:7754:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalSignalDSL.g:7755:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
             {
             if ( state.backtracking==0 ) {
 
               			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
               		
             }
-            pushFollow(FOLLOW_98);
+            pushFollow(FOLLOW_97);
             this_QualifiedName_0=ruleQualifiedName();
 
             state._fsp--;
@@ -20475,14 +21375,14 @@
               			afterParserOrEnumRuleCall();
               		
             }
-            kw=(Token)match(input,67,FOLLOW_99); if (state.failed) return current;
+            kw=(Token)match(input,73,FOLLOW_98); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
               			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
               		
             }
-            kw=(Token)match(input,26,FOLLOW_2); if (state.failed) return current;
+            kw=(Token)match(input,32,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
               			current.merge(kw);
@@ -20514,7 +21414,7 @@
 
 
     // $ANTLR start "entryRuleValidID"
-    // InternalSignalDSL.g:7455:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    // InternalSignalDSL.g:7779:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
     public final String entryRuleValidID() throws RecognitionException {
         String current = null;
 
@@ -20522,8 +21422,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7455:47: (iv_ruleValidID= ruleValidID EOF )
-            // InternalSignalDSL.g:7456:2: iv_ruleValidID= ruleValidID EOF
+            // InternalSignalDSL.g:7779:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalSignalDSL.g:7780:2: iv_ruleValidID= ruleValidID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getValidIDRule()); 
@@ -20554,7 +21454,7 @@
 
 
     // $ANTLR start "ruleValidID"
-    // InternalSignalDSL.g:7462:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalSignalDSL.g:7786:1: ruleValidID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
     public final AntlrDatatypeRuleToken ruleValidID() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -20564,8 +21464,8 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7468:2: (this_ID_0= RULE_ID )
-            // InternalSignalDSL.g:7469:2: this_ID_0= RULE_ID
+            // InternalSignalDSL.g:7792:2: (this_ID_0= RULE_ID )
+            // InternalSignalDSL.g:7793:2: this_ID_0= RULE_ID
             {
             this_ID_0=(Token)match(input,RULE_ID,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
@@ -20600,7 +21500,7 @@
 
 
     // $ANTLR start "entryRuleXImportSection"
-    // InternalSignalDSL.g:7479:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    // InternalSignalDSL.g:7803:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
     public final EObject entryRuleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -20608,8 +21508,8 @@
 
 
         try {
-            // InternalSignalDSL.g:7479:55: (iv_ruleXImportSection= ruleXImportSection EOF )
-            // InternalSignalDSL.g:7480:2: iv_ruleXImportSection= ruleXImportSection EOF
+            // InternalSignalDSL.g:7803:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalSignalDSL.g:7804:2: iv_ruleXImportSection= ruleXImportSection EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXImportSectionRule()); 
@@ -20640,7 +21540,7 @@
 
 
     // $ANTLR start "ruleXImportSection"
-    // InternalSignalDSL.g:7486:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
+    // InternalSignalDSL.g:7810:1: ruleXImportSection returns [EObject current=null] : ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ ;
     public final EObject ruleXImportSection() throws RecognitionException {
         EObject current = null;
 
@@ -20651,34 +21551,34 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7492:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
-            // InternalSignalDSL.g:7493:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            // InternalSignalDSL.g:7816:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalSignalDSL.g:7817:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
             {
-            // InternalSignalDSL.g:7493:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
-            int cnt130=0;
-            loop130:
+            // InternalSignalDSL.g:7817:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            int cnt129=0;
+            loop129:
             do {
-                int alt130=2;
-                int LA130_0 = input.LA(1);
+                int alt129=2;
+                int LA129_0 = input.LA(1);
 
-                if ( (LA130_0==23) ) {
-                    alt130=1;
+                if ( (LA129_0==29) ) {
+                    alt129=1;
                 }
 
 
-                switch (alt130) {
+                switch (alt129) {
             	case 1 :
-            	    // InternalSignalDSL.g:7494:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalSignalDSL.g:7818:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
             	    {
-            	    // InternalSignalDSL.g:7494:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
-            	    // InternalSignalDSL.g:7495:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    // InternalSignalDSL.g:7818:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalSignalDSL.g:7819:4: lv_importDeclarations_0_0= ruleXImportDeclaration
             	    {
             	    if ( state.backtracking==0 ) {
 
             	      				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
             	      			
             	    }
-            	    pushFollow(FOLLOW_100);
+            	    pushFollow(FOLLOW_99);
             	    lv_importDeclarations_0_0=ruleXImportDeclaration();
 
             	    state._fsp--;
@@ -20704,6 +21604,146 @@
             	    break;
 
             	default :
+            	    if ( cnt129 >= 1 ) break loop129;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(129, input);
+                        throw eee;
+                }
+                cnt129++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalSignalDSL.g:7839:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
+
+
+        try {
+            // InternalSignalDSL.g:7839:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalSignalDSL.g:7840:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleQualifiedNameInStaticImport.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleQualifiedNameInStaticImport"
+    // InternalSignalDSL.g:7846:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
+    public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+        AntlrDatatypeRuleToken this_ValidID_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:7852:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalSignalDSL.g:7853:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            {
+            // InternalSignalDSL.g:7853:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            int cnt130=0;
+            loop130:
+            do {
+                int alt130=2;
+                int LA130_0 = input.LA(1);
+
+                if ( (LA130_0==RULE_ID) ) {
+                    int LA130_2 = input.LA(2);
+
+                    if ( (LA130_2==73) ) {
+                        alt130=1;
+                    }
+
+
+                }
+
+
+                switch (alt130) {
+            	case 1 :
+            	    // InternalSignalDSL.g:7854:3: this_ValidID_0= ruleValidID kw= '.'
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+            	      		
+            	    }
+            	    pushFollow(FOLLOW_97);
+            	    this_ValidID_0=ruleValidID();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(this_ValidID_0);
+            	      		
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      			afterParserOrEnumRuleCall();
+            	      		
+            	    }
+            	    kw=(Token)match(input,73,FOLLOW_100); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(kw);
+            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+            	      		
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
             	    if ( cnt130 >= 1 ) break loop130;
             	    if (state.backtracking>0) {state.failed=true; return current;}
                         EarlyExitException eee =
@@ -20731,151 +21771,11 @@
         }
         return current;
     }
-    // $ANTLR end "ruleXImportSection"
-
-
-    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:7515:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
-    public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
-
-
-        try {
-            // InternalSignalDSL.g:7515:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
-            // InternalSignalDSL.g:7516:2: iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getQualifiedNameInStaticImportRule()); 
-            }
-            pushFollow(FOLLOW_1);
-            iv_ruleQualifiedNameInStaticImport=ruleQualifiedNameInStaticImport();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleQualifiedNameInStaticImport.getText(); 
-            }
-            match(input,EOF,FOLLOW_2); if (state.failed) return current;
-
-            }
-
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleQualifiedNameInStaticImport"
-
-
-    // $ANTLR start "ruleQualifiedNameInStaticImport"
-    // InternalSignalDSL.g:7522:1: ruleQualifiedNameInStaticImport returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ValidID_0= ruleValidID kw= '.' )+ ;
-    public final AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-        AntlrDatatypeRuleToken this_ValidID_0 = null;
-
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:7528:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
-            // InternalSignalDSL.g:7529:2: (this_ValidID_0= ruleValidID kw= '.' )+
-            {
-            // InternalSignalDSL.g:7529:2: (this_ValidID_0= ruleValidID kw= '.' )+
-            int cnt131=0;
-            loop131:
-            do {
-                int alt131=2;
-                int LA131_0 = input.LA(1);
-
-                if ( (LA131_0==RULE_ID) ) {
-                    int LA131_2 = input.LA(2);
-
-                    if ( (LA131_2==67) ) {
-                        alt131=1;
-                    }
-
-
-                }
-
-
-                switch (alt131) {
-            	case 1 :
-            	    // InternalSignalDSL.g:7530:3: this_ValidID_0= ruleValidID kw= '.'
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
-            	      		
-            	    }
-            	    pushFollow(FOLLOW_98);
-            	    this_ValidID_0=ruleValidID();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      			current.merge(this_ValidID_0);
-            	      		
-            	    }
-            	    if ( state.backtracking==0 ) {
-
-            	      			afterParserOrEnumRuleCall();
-            	      		
-            	    }
-            	    kw=(Token)match(input,67,FOLLOW_101); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      			current.merge(kw);
-            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
-            	      		
-            	    }
-
-            	    }
-            	    break;
-
-            	default :
-            	    if ( cnt131 >= 1 ) break loop131;
-            	    if (state.backtracking>0) {state.failed=true; return current;}
-                        EarlyExitException eee =
-                            new EarlyExitException(131, input);
-                        throw eee;
-                }
-                cnt131++;
-            } while (true);
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
     // $ANTLR end "ruleQualifiedNameInStaticImport"
 
 
     // $ANTLR start "ruleSignalActionEnum"
-    // InternalSignalDSL.g:7549:1: ruleSignalActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) ;
+    // InternalSignalDSL.g:7873:1: ruleSignalActionEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) ;
     public final Enumerator ruleSignalActionEnum() throws RecognitionException {
         Enumerator current = null;
 
@@ -20886,34 +21786,34 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7555:2: ( ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) )
-            // InternalSignalDSL.g:7556:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
+            // InternalSignalDSL.g:7879:2: ( ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) ) )
+            // InternalSignalDSL.g:7880:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
             {
-            // InternalSignalDSL.g:7556:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
-            int alt132=2;
-            int LA132_0 = input.LA(1);
+            // InternalSignalDSL.g:7880:2: ( (enumLiteral_0= 'Import' ) | (enumLiteral_1= 'Export' ) )
+            int alt131=2;
+            int LA131_0 = input.LA(1);
 
-            if ( (LA132_0==96) ) {
-                alt132=1;
+            if ( (LA131_0==102) ) {
+                alt131=1;
             }
-            else if ( (LA132_0==97) ) {
-                alt132=2;
+            else if ( (LA131_0==103) ) {
+                alt131=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 132, 0, input);
+                    new NoViableAltException("", 131, 0, input);
 
                 throw nvae;
             }
-            switch (alt132) {
+            switch (alt131) {
                 case 1 :
-                    // InternalSignalDSL.g:7557:3: (enumLiteral_0= 'Import' )
+                    // InternalSignalDSL.g:7881:3: (enumLiteral_0= 'Import' )
                     {
-                    // InternalSignalDSL.g:7557:3: (enumLiteral_0= 'Import' )
-                    // InternalSignalDSL.g:7558:4: enumLiteral_0= 'Import'
+                    // InternalSignalDSL.g:7881:3: (enumLiteral_0= 'Import' )
+                    // InternalSignalDSL.g:7882:4: enumLiteral_0= 'Import'
                     {
-                    enumLiteral_0=(Token)match(input,96,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,102,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSignalActionEnumAccess().getDATAIMPORTEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
@@ -20927,12 +21827,12 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7565:3: (enumLiteral_1= 'Export' )
+                    // InternalSignalDSL.g:7889:3: (enumLiteral_1= 'Export' )
                     {
-                    // InternalSignalDSL.g:7565:3: (enumLiteral_1= 'Export' )
-                    // InternalSignalDSL.g:7566:4: enumLiteral_1= 'Export'
+                    // InternalSignalDSL.g:7889:3: (enumLiteral_1= 'Export' )
+                    // InternalSignalDSL.g:7890:4: enumLiteral_1= 'Export'
                     {
-                    enumLiteral_1=(Token)match(input,97,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
                       				current = grammarAccess.getSignalActionEnumAccess().getDATAEXPORTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
@@ -20969,198 +21869,8 @@
     // $ANTLR end "ruleSignalActionEnum"
 
 
-    // $ANTLR start "ruleSignalTypeEnum"
-    // InternalSignalDSL.g:7576:1: ruleSignalTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'createSignals' ) | (enumLiteral_1= 'modifySignals' ) ) ;
-    public final Enumerator ruleSignalTypeEnum() throws RecognitionException {
-        Enumerator current = null;
-
-        Token enumLiteral_0=null;
-        Token enumLiteral_1=null;
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:7582:2: ( ( (enumLiteral_0= 'createSignals' ) | (enumLiteral_1= 'modifySignals' ) ) )
-            // InternalSignalDSL.g:7583:2: ( (enumLiteral_0= 'createSignals' ) | (enumLiteral_1= 'modifySignals' ) )
-            {
-            // InternalSignalDSL.g:7583:2: ( (enumLiteral_0= 'createSignals' ) | (enumLiteral_1= 'modifySignals' ) )
-            int alt133=2;
-            int LA133_0 = input.LA(1);
-
-            if ( (LA133_0==98) ) {
-                alt133=1;
-            }
-            else if ( (LA133_0==99) ) {
-                alt133=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 133, 0, input);
-
-                throw nvae;
-            }
-            switch (alt133) {
-                case 1 :
-                    // InternalSignalDSL.g:7584:3: (enumLiteral_0= 'createSignals' )
-                    {
-                    // InternalSignalDSL.g:7584:3: (enumLiteral_0= 'createSignals' )
-                    // InternalSignalDSL.g:7585:4: enumLiteral_0= 'createSignals'
-                    {
-                    enumLiteral_0=(Token)match(input,98,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      				current = grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-                      				newLeafNode(enumLiteral_0, grammarAccess.getSignalTypeEnumAccess().getCreatesignalsEnumLiteralDeclaration_0());
-                      			
-                    }
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // InternalSignalDSL.g:7592:3: (enumLiteral_1= 'modifySignals' )
-                    {
-                    // InternalSignalDSL.g:7592:3: (enumLiteral_1= 'modifySignals' )
-                    // InternalSignalDSL.g:7593:4: enumLiteral_1= 'modifySignals'
-                    {
-                    enumLiteral_1=(Token)match(input,99,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      				current = grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-                      				newLeafNode(enumLiteral_1, grammarAccess.getSignalTypeEnumAccess().getModifysignalsEnumLiteralDeclaration_1());
-                      			
-                    }
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleSignalTypeEnum"
-
-
-    // $ANTLR start "ruleSignalHandlerTypeEnum"
-    // InternalSignalDSL.g:7603:1: ruleSignalHandlerTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'doAfterModify' ) | (enumLiteral_1= 'doAfterCreate' ) ) ;
-    public final Enumerator ruleSignalHandlerTypeEnum() throws RecognitionException {
-        Enumerator current = null;
-
-        Token enumLiteral_0=null;
-        Token enumLiteral_1=null;
-
-
-        	enterRule();
-
-        try {
-            // InternalSignalDSL.g:7609:2: ( ( (enumLiteral_0= 'doAfterModify' ) | (enumLiteral_1= 'doAfterCreate' ) ) )
-            // InternalSignalDSL.g:7610:2: ( (enumLiteral_0= 'doAfterModify' ) | (enumLiteral_1= 'doAfterCreate' ) )
-            {
-            // InternalSignalDSL.g:7610:2: ( (enumLiteral_0= 'doAfterModify' ) | (enumLiteral_1= 'doAfterCreate' ) )
-            int alt134=2;
-            int LA134_0 = input.LA(1);
-
-            if ( (LA134_0==100) ) {
-                alt134=1;
-            }
-            else if ( (LA134_0==101) ) {
-                alt134=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 134, 0, input);
-
-                throw nvae;
-            }
-            switch (alt134) {
-                case 1 :
-                    // InternalSignalDSL.g:7611:3: (enumLiteral_0= 'doAfterModify' )
-                    {
-                    // InternalSignalDSL.g:7611:3: (enumLiteral_0= 'doAfterModify' )
-                    // InternalSignalDSL.g:7612:4: enumLiteral_0= 'doAfterModify'
-                    {
-                    enumLiteral_0=(Token)match(input,100,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      				current = grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-                      				newLeafNode(enumLiteral_0, grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftermodifyEnumLiteralDeclaration_0());
-                      			
-                    }
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // InternalSignalDSL.g:7619:3: (enumLiteral_1= 'doAfterCreate' )
-                    {
-                    // InternalSignalDSL.g:7619:3: (enumLiteral_1= 'doAfterCreate' )
-                    // InternalSignalDSL.g:7620:4: enumLiteral_1= 'doAfterCreate'
-                    {
-                    enumLiteral_1=(Token)match(input,101,FOLLOW_2); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                      				current = grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-                      				newLeafNode(enumLiteral_1, grammarAccess.getSignalHandlerTypeEnumAccess().getDoaftercreateEnumLiteralDeclaration_1());
-                      			
-                    }
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-
-              	leaveRule();
-
-            }
-        }
-
-            catch (RecognitionException re) {
-                recover(input,re);
-                appendSkippedTokens();
-            }
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleSignalHandlerTypeEnum"
-
-
     // $ANTLR start "ruleSignalExecutionTypeEnum"
-    // InternalSignalDSL.g:7630:1: ruleSignalExecutionTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'synch' ) | (enumLiteral_1= 'asynch' ) ) ;
+    // InternalSignalDSL.g:7900:1: ruleSignalExecutionTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) ) ;
     public final Enumerator ruleSignalExecutionTypeEnum() throws RecognitionException {
         Enumerator current = null;
 
@@ -21171,38 +21881,38 @@
         	enterRule();
 
         try {
-            // InternalSignalDSL.g:7636:2: ( ( (enumLiteral_0= 'synch' ) | (enumLiteral_1= 'asynch' ) ) )
-            // InternalSignalDSL.g:7637:2: ( (enumLiteral_0= 'synch' ) | (enumLiteral_1= 'asynch' ) )
+            // InternalSignalDSL.g:7906:2: ( ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) ) )
+            // InternalSignalDSL.g:7907:2: ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) )
             {
-            // InternalSignalDSL.g:7637:2: ( (enumLiteral_0= 'synch' ) | (enumLiteral_1= 'asynch' ) )
-            int alt135=2;
-            int LA135_0 = input.LA(1);
+            // InternalSignalDSL.g:7907:2: ( (enumLiteral_0= 'sequential' ) | (enumLiteral_1= 'parallel' ) )
+            int alt132=2;
+            int LA132_0 = input.LA(1);
 
-            if ( (LA135_0==102) ) {
-                alt135=1;
+            if ( (LA132_0==104) ) {
+                alt132=1;
             }
-            else if ( (LA135_0==103) ) {
-                alt135=2;
+            else if ( (LA132_0==105) ) {
+                alt132=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 135, 0, input);
+                    new NoViableAltException("", 132, 0, input);
 
                 throw nvae;
             }
-            switch (alt135) {
+            switch (alt132) {
                 case 1 :
-                    // InternalSignalDSL.g:7638:3: (enumLiteral_0= 'synch' )
+                    // InternalSignalDSL.g:7908:3: (enumLiteral_0= 'sequential' )
                     {
-                    // InternalSignalDSL.g:7638:3: (enumLiteral_0= 'synch' )
-                    // InternalSignalDSL.g:7639:4: enumLiteral_0= 'synch'
+                    // InternalSignalDSL.g:7908:3: (enumLiteral_0= 'sequential' )
+                    // InternalSignalDSL.g:7909:4: enumLiteral_0= 'sequential'
                     {
-                    enumLiteral_0=(Token)match(input,102,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_0=(Token)match(input,104,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      				current = grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-                      				newLeafNode(enumLiteral_0, grammarAccess.getSignalExecutionTypeEnumAccess().getSYNCEnumLiteralDeclaration_0());
+                      				current = grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getSignalExecutionTypeEnumAccess().getSEQEnumLiteralDeclaration_0());
                       			
                     }
 
@@ -21212,16 +21922,16 @@
                     }
                     break;
                 case 2 :
-                    // InternalSignalDSL.g:7646:3: (enumLiteral_1= 'asynch' )
+                    // InternalSignalDSL.g:7916:3: (enumLiteral_1= 'parallel' )
                     {
-                    // InternalSignalDSL.g:7646:3: (enumLiteral_1= 'asynch' )
-                    // InternalSignalDSL.g:7647:4: enumLiteral_1= 'asynch'
+                    // InternalSignalDSL.g:7916:3: (enumLiteral_1= 'parallel' )
+                    // InternalSignalDSL.g:7917:4: enumLiteral_1= 'parallel'
                     {
-                    enumLiteral_1=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
+                    enumLiteral_1=(Token)match(input,105,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      				current = grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-                      				newLeafNode(enumLiteral_1, grammarAccess.getSignalExecutionTypeEnumAccess().getASYNCEnumLiteralDeclaration_1());
+                      				current = grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getSignalExecutionTypeEnumAccess().getNOSEQEnumLiteralDeclaration_1());
                       			
                     }
 
@@ -21253,12 +21963,236 @@
     }
     // $ANTLR end "ruleSignalExecutionTypeEnum"
 
+
+    // $ANTLR start "ruleDayOfWeekEnum"
+    // InternalSignalDSL.g:7927:1: ruleDayOfWeekEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) ) ;
+    public final Enumerator ruleDayOfWeekEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+        Token enumLiteral_4=null;
+        Token enumLiteral_5=null;
+        Token enumLiteral_6=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalSignalDSL.g:7933:2: ( ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) ) )
+            // InternalSignalDSL.g:7934:2: ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) )
+            {
+            // InternalSignalDSL.g:7934:2: ( (enumLiteral_0= 'sunday' ) | (enumLiteral_1= 'monday' ) | (enumLiteral_2= 'tuesday' ) | (enumLiteral_3= 'wednesday' ) | (enumLiteral_4= 'thursday' ) | (enumLiteral_5= 'friday' ) | (enumLiteral_6= 'saturday' ) )
+            int alt133=7;
+            switch ( input.LA(1) ) {
+            case 106:
+                {
+                alt133=1;
+                }
+                break;
+            case 107:
+                {
+                alt133=2;
+                }
+                break;
+            case 108:
+                {
+                alt133=3;
+                }
+                break;
+            case 109:
+                {
+                alt133=4;
+                }
+                break;
+            case 110:
+                {
+                alt133=5;
+                }
+                break;
+            case 111:
+                {
+                alt133=6;
+                }
+                break;
+            case 112:
+                {
+                alt133=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 133, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt133) {
+                case 1 :
+                    // InternalSignalDSL.g:7935:3: (enumLiteral_0= 'sunday' )
+                    {
+                    // InternalSignalDSL.g:7935:3: (enumLiteral_0= 'sunday' )
+                    // InternalSignalDSL.g:7936:4: enumLiteral_0= 'sunday'
+                    {
+                    enumLiteral_0=(Token)match(input,106,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getDayOfWeekEnumAccess().getSUNDAYEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalSignalDSL.g:7943:3: (enumLiteral_1= 'monday' )
+                    {
+                    // InternalSignalDSL.g:7943:3: (enumLiteral_1= 'monday' )
+                    // InternalSignalDSL.g:7944:4: enumLiteral_1= 'monday'
+                    {
+                    enumLiteral_1=(Token)match(input,107,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getDayOfWeekEnumAccess().getMONDAYEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalSignalDSL.g:7951:3: (enumLiteral_2= 'tuesday' )
+                    {
+                    // InternalSignalDSL.g:7951:3: (enumLiteral_2= 'tuesday' )
+                    // InternalSignalDSL.g:7952:4: enumLiteral_2= 'tuesday'
+                    {
+                    enumLiteral_2=(Token)match(input,108,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getDayOfWeekEnumAccess().getTUESDAYEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalSignalDSL.g:7959:3: (enumLiteral_3= 'wednesday' )
+                    {
+                    // InternalSignalDSL.g:7959:3: (enumLiteral_3= 'wednesday' )
+                    // InternalSignalDSL.g:7960:4: enumLiteral_3= 'wednesday'
+                    {
+                    enumLiteral_3=(Token)match(input,109,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getDayOfWeekEnumAccess().getWEDNESDAYEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalSignalDSL.g:7967:3: (enumLiteral_4= 'thursday' )
+                    {
+                    // InternalSignalDSL.g:7967:3: (enumLiteral_4= 'thursday' )
+                    // InternalSignalDSL.g:7968:4: enumLiteral_4= 'thursday'
+                    {
+                    enumLiteral_4=(Token)match(input,110,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getDayOfWeekEnumAccess().getTHURSDAYEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalSignalDSL.g:7975:3: (enumLiteral_5= 'friday' )
+                    {
+                    // InternalSignalDSL.g:7975:3: (enumLiteral_5= 'friday' )
+                    // InternalSignalDSL.g:7976:4: enumLiteral_5= 'friday'
+                    {
+                    enumLiteral_5=(Token)match(input,111,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_5, grammarAccess.getDayOfWeekEnumAccess().getFRIDAYEnumLiteralDeclaration_5());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalSignalDSL.g:7983:3: (enumLiteral_6= 'saturday' )
+                    {
+                    // InternalSignalDSL.g:7983:3: (enumLiteral_6= 'saturday' )
+                    // InternalSignalDSL.g:7984:4: enumLiteral_6= 'saturday'
+                    {
+                    enumLiteral_6=(Token)match(input,112,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_6, grammarAccess.getDayOfWeekEnumAccess().getSATURDAYEnumLiteralDeclaration_6());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDayOfWeekEnum"
+
     // $ANTLR start synpred1_InternalSignalDSL
     public final void synpred1_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:925:5: ( '(' )
-        // InternalSignalDSL.g:925:6: '('
+        // InternalSignalDSL.g:1249:5: ( '(' )
+        // InternalSignalDSL.g:1249:6: '('
         {
-        match(input,30,FOLLOW_2); if (state.failed) return ;
+        match(input,36,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -21266,17 +22200,17 @@
 
     // $ANTLR start synpred2_InternalSignalDSL
     public final void synpred2_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:934:7: ( ( ( ( ruleValidID ) ) '=' ) )
-        // InternalSignalDSL.g:934:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalSignalDSL.g:1258:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalSignalDSL.g:1258:8: ( ( ( ruleValidID ) ) '=' )
         {
-        // InternalSignalDSL.g:934:8: ( ( ( ruleValidID ) ) '=' )
-        // InternalSignalDSL.g:935:8: ( ( ruleValidID ) ) '='
+        // InternalSignalDSL.g:1258:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalSignalDSL.g:1259:8: ( ( ruleValidID ) ) '='
         {
-        // InternalSignalDSL.g:935:8: ( ( ruleValidID ) )
-        // InternalSignalDSL.g:936:9: ( ruleValidID )
+        // InternalSignalDSL.g:1259:8: ( ( ruleValidID ) )
+        // InternalSignalDSL.g:1260:9: ( ruleValidID )
         {
-        // InternalSignalDSL.g:936:9: ( ruleValidID )
-        // InternalSignalDSL.g:937:10: ruleValidID
+        // InternalSignalDSL.g:1260:9: ( ruleValidID )
+        // InternalSignalDSL.g:1261:10: ruleValidID
         {
         pushFollow(FOLLOW_27);
         ruleValidID();
@@ -21289,7 +22223,7 @@
 
         }
 
-        match(input,33,FOLLOW_2); if (state.failed) return ;
+        match(input,39,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21300,19 +22234,19 @@
 
     // $ANTLR start synpred5_InternalSignalDSL
     public final void synpred5_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1114:5: ( ( () '#' '[' ) )
-        // InternalSignalDSL.g:1114:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1438:5: ( ( () '#' '[' ) )
+        // InternalSignalDSL.g:1438:6: ( () '#' '[' )
         {
-        // InternalSignalDSL.g:1114:6: ( () '#' '[' )
-        // InternalSignalDSL.g:1115:6: () '#' '['
+        // InternalSignalDSL.g:1438:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1439:6: () '#' '['
         {
-        // InternalSignalDSL.g:1115:6: ()
-        // InternalSignalDSL.g:1116:6: 
+        // InternalSignalDSL.g:1439:6: ()
+        // InternalSignalDSL.g:1440:6: 
         {
         }
 
-        match(input,34,FOLLOW_29); if (state.failed) return ;
-        match(input,35,FOLLOW_2); if (state.failed) return ;
+        match(input,40,FOLLOW_29); if (state.failed) return ;
+        match(input,41,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21323,19 +22257,19 @@
 
     // $ANTLR start synpred6_InternalSignalDSL
     public final void synpred6_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1256:5: ( ( () '#' '[' ) )
-        // InternalSignalDSL.g:1256:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1580:5: ( ( () '#' '[' ) )
+        // InternalSignalDSL.g:1580:6: ( () '#' '[' )
         {
-        // InternalSignalDSL.g:1256:6: ( () '#' '[' )
-        // InternalSignalDSL.g:1257:6: () '#' '['
+        // InternalSignalDSL.g:1580:6: ( () '#' '[' )
+        // InternalSignalDSL.g:1581:6: () '#' '['
         {
-        // InternalSignalDSL.g:1257:6: ()
-        // InternalSignalDSL.g:1258:6: 
+        // InternalSignalDSL.g:1581:6: ()
+        // InternalSignalDSL.g:1582:6: 
         {
         }
 
-        match(input,34,FOLLOW_29); if (state.failed) return ;
-        match(input,35,FOLLOW_2); if (state.failed) return ;
+        match(input,40,FOLLOW_29); if (state.failed) return ;
+        match(input,41,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21346,22 +22280,22 @@
 
     // $ANTLR start synpred7_InternalSignalDSL
     public final void synpred7_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1484:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
-        // InternalSignalDSL.g:1484:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalSignalDSL.g:1808:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalSignalDSL.g:1808:7: ( () ( ( ruleOpMultiAssign ) ) )
         {
-        // InternalSignalDSL.g:1484:7: ( () ( ( ruleOpMultiAssign ) ) )
-        // InternalSignalDSL.g:1485:7: () ( ( ruleOpMultiAssign ) )
+        // InternalSignalDSL.g:1808:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalSignalDSL.g:1809:7: () ( ( ruleOpMultiAssign ) )
         {
-        // InternalSignalDSL.g:1485:7: ()
-        // InternalSignalDSL.g:1486:7: 
+        // InternalSignalDSL.g:1809:7: ()
+        // InternalSignalDSL.g:1810:7: 
         {
         }
 
-        // InternalSignalDSL.g:1487:7: ( ( ruleOpMultiAssign ) )
-        // InternalSignalDSL.g:1488:8: ( ruleOpMultiAssign )
+        // InternalSignalDSL.g:1811:7: ( ( ruleOpMultiAssign ) )
+        // InternalSignalDSL.g:1812:8: ( ruleOpMultiAssign )
         {
-        // InternalSignalDSL.g:1488:8: ( ruleOpMultiAssign )
-        // InternalSignalDSL.g:1489:9: ruleOpMultiAssign
+        // InternalSignalDSL.g:1812:8: ( ruleOpMultiAssign )
+        // InternalSignalDSL.g:1813:9: ruleOpMultiAssign
         {
         pushFollow(FOLLOW_2);
         ruleOpMultiAssign();
@@ -21384,22 +22318,22 @@
 
     // $ANTLR start synpred8_InternalSignalDSL
     public final void synpred8_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1678:5: ( ( () ( ( ruleOpOr ) ) ) )
-        // InternalSignalDSL.g:1678:6: ( () ( ( ruleOpOr ) ) )
+        // InternalSignalDSL.g:2002:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalSignalDSL.g:2002:6: ( () ( ( ruleOpOr ) ) )
         {
-        // InternalSignalDSL.g:1678:6: ( () ( ( ruleOpOr ) ) )
-        // InternalSignalDSL.g:1679:6: () ( ( ruleOpOr ) )
+        // InternalSignalDSL.g:2002:6: ( () ( ( ruleOpOr ) ) )
+        // InternalSignalDSL.g:2003:6: () ( ( ruleOpOr ) )
         {
-        // InternalSignalDSL.g:1679:6: ()
-        // InternalSignalDSL.g:1680:6: 
+        // InternalSignalDSL.g:2003:6: ()
+        // InternalSignalDSL.g:2004:6: 
         {
         }
 
-        // InternalSignalDSL.g:1681:6: ( ( ruleOpOr ) )
-        // InternalSignalDSL.g:1682:7: ( ruleOpOr )
+        // InternalSignalDSL.g:2005:6: ( ( ruleOpOr ) )
+        // InternalSignalDSL.g:2006:7: ( ruleOpOr )
         {
-        // InternalSignalDSL.g:1682:7: ( ruleOpOr )
-        // InternalSignalDSL.g:1683:8: ruleOpOr
+        // InternalSignalDSL.g:2006:7: ( ruleOpOr )
+        // InternalSignalDSL.g:2007:8: ruleOpOr
         {
         pushFollow(FOLLOW_2);
         ruleOpOr();
@@ -21422,22 +22356,22 @@
 
     // $ANTLR start synpred9_InternalSignalDSL
     public final void synpred9_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1785:5: ( ( () ( ( ruleOpAnd ) ) ) )
-        // InternalSignalDSL.g:1785:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalSignalDSL.g:2109:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalSignalDSL.g:2109:6: ( () ( ( ruleOpAnd ) ) )
         {
-        // InternalSignalDSL.g:1785:6: ( () ( ( ruleOpAnd ) ) )
-        // InternalSignalDSL.g:1786:6: () ( ( ruleOpAnd ) )
+        // InternalSignalDSL.g:2109:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalSignalDSL.g:2110:6: () ( ( ruleOpAnd ) )
         {
-        // InternalSignalDSL.g:1786:6: ()
-        // InternalSignalDSL.g:1787:6: 
+        // InternalSignalDSL.g:2110:6: ()
+        // InternalSignalDSL.g:2111:6: 
         {
         }
 
-        // InternalSignalDSL.g:1788:6: ( ( ruleOpAnd ) )
-        // InternalSignalDSL.g:1789:7: ( ruleOpAnd )
+        // InternalSignalDSL.g:2112:6: ( ( ruleOpAnd ) )
+        // InternalSignalDSL.g:2113:7: ( ruleOpAnd )
         {
-        // InternalSignalDSL.g:1789:7: ( ruleOpAnd )
-        // InternalSignalDSL.g:1790:8: ruleOpAnd
+        // InternalSignalDSL.g:2113:7: ( ruleOpAnd )
+        // InternalSignalDSL.g:2114:8: ruleOpAnd
         {
         pushFollow(FOLLOW_2);
         ruleOpAnd();
@@ -21460,22 +22394,22 @@
 
     // $ANTLR start synpred10_InternalSignalDSL
     public final void synpred10_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:1892:5: ( ( () ( ( ruleOpEquality ) ) ) )
-        // InternalSignalDSL.g:1892:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalSignalDSL.g:2216:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalSignalDSL.g:2216:6: ( () ( ( ruleOpEquality ) ) )
         {
-        // InternalSignalDSL.g:1892:6: ( () ( ( ruleOpEquality ) ) )
-        // InternalSignalDSL.g:1893:6: () ( ( ruleOpEquality ) )
+        // InternalSignalDSL.g:2216:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalSignalDSL.g:2217:6: () ( ( ruleOpEquality ) )
         {
-        // InternalSignalDSL.g:1893:6: ()
-        // InternalSignalDSL.g:1894:6: 
+        // InternalSignalDSL.g:2217:6: ()
+        // InternalSignalDSL.g:2218:6: 
         {
         }
 
-        // InternalSignalDSL.g:1895:6: ( ( ruleOpEquality ) )
-        // InternalSignalDSL.g:1896:7: ( ruleOpEquality )
+        // InternalSignalDSL.g:2219:6: ( ( ruleOpEquality ) )
+        // InternalSignalDSL.g:2220:7: ( ruleOpEquality )
         {
-        // InternalSignalDSL.g:1896:7: ( ruleOpEquality )
-        // InternalSignalDSL.g:1897:8: ruleOpEquality
+        // InternalSignalDSL.g:2220:7: ( ruleOpEquality )
+        // InternalSignalDSL.g:2221:8: ruleOpEquality
         {
         pushFollow(FOLLOW_2);
         ruleOpEquality();
@@ -21498,18 +22432,18 @@
 
     // $ANTLR start synpred11_InternalSignalDSL
     public final void synpred11_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2020:6: ( ( () 'instanceof' ) )
-        // InternalSignalDSL.g:2020:7: ( () 'instanceof' )
+        // InternalSignalDSL.g:2344:6: ( ( () 'instanceof' ) )
+        // InternalSignalDSL.g:2344:7: ( () 'instanceof' )
         {
-        // InternalSignalDSL.g:2020:7: ( () 'instanceof' )
-        // InternalSignalDSL.g:2021:7: () 'instanceof'
+        // InternalSignalDSL.g:2344:7: ( () 'instanceof' )
+        // InternalSignalDSL.g:2345:7: () 'instanceof'
         {
-        // InternalSignalDSL.g:2021:7: ()
-        // InternalSignalDSL.g:2022:7: 
+        // InternalSignalDSL.g:2345:7: ()
+        // InternalSignalDSL.g:2346:7: 
         {
         }
 
-        match(input,51,FOLLOW_2); if (state.failed) return ;
+        match(input,57,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21520,22 +22454,22 @@
 
     // $ANTLR start synpred12_InternalSignalDSL
     public final void synpred12_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2063:6: ( ( () ( ( ruleOpCompare ) ) ) )
-        // InternalSignalDSL.g:2063:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalSignalDSL.g:2387:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalSignalDSL.g:2387:7: ( () ( ( ruleOpCompare ) ) )
         {
-        // InternalSignalDSL.g:2063:7: ( () ( ( ruleOpCompare ) ) )
-        // InternalSignalDSL.g:2064:7: () ( ( ruleOpCompare ) )
+        // InternalSignalDSL.g:2387:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalSignalDSL.g:2388:7: () ( ( ruleOpCompare ) )
         {
-        // InternalSignalDSL.g:2064:7: ()
-        // InternalSignalDSL.g:2065:7: 
+        // InternalSignalDSL.g:2388:7: ()
+        // InternalSignalDSL.g:2389:7: 
         {
         }
 
-        // InternalSignalDSL.g:2066:7: ( ( ruleOpCompare ) )
-        // InternalSignalDSL.g:2067:8: ( ruleOpCompare )
+        // InternalSignalDSL.g:2390:7: ( ( ruleOpCompare ) )
+        // InternalSignalDSL.g:2391:8: ( ruleOpCompare )
         {
-        // InternalSignalDSL.g:2067:8: ( ruleOpCompare )
-        // InternalSignalDSL.g:2068:9: ruleOpCompare
+        // InternalSignalDSL.g:2391:8: ( ruleOpCompare )
+        // InternalSignalDSL.g:2392:9: ruleOpCompare
         {
         pushFollow(FOLLOW_2);
         ruleOpCompare();
@@ -21558,22 +22492,22 @@
 
     // $ANTLR start synpred13_InternalSignalDSL
     public final void synpred13_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2198:5: ( ( () ( ( ruleOpOther ) ) ) )
-        // InternalSignalDSL.g:2198:6: ( () ( ( ruleOpOther ) ) )
+        // InternalSignalDSL.g:2522:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalSignalDSL.g:2522:6: ( () ( ( ruleOpOther ) ) )
         {
-        // InternalSignalDSL.g:2198:6: ( () ( ( ruleOpOther ) ) )
-        // InternalSignalDSL.g:2199:6: () ( ( ruleOpOther ) )
+        // InternalSignalDSL.g:2522:6: ( () ( ( ruleOpOther ) ) )
+        // InternalSignalDSL.g:2523:6: () ( ( ruleOpOther ) )
         {
-        // InternalSignalDSL.g:2199:6: ()
-        // InternalSignalDSL.g:2200:6: 
+        // InternalSignalDSL.g:2523:6: ()
+        // InternalSignalDSL.g:2524:6: 
         {
         }
 
-        // InternalSignalDSL.g:2201:6: ( ( ruleOpOther ) )
-        // InternalSignalDSL.g:2202:7: ( ruleOpOther )
+        // InternalSignalDSL.g:2525:6: ( ( ruleOpOther ) )
+        // InternalSignalDSL.g:2526:7: ( ruleOpOther )
         {
-        // InternalSignalDSL.g:2202:7: ( ruleOpOther )
-        // InternalSignalDSL.g:2203:8: ruleOpOther
+        // InternalSignalDSL.g:2526:7: ( ruleOpOther )
+        // InternalSignalDSL.g:2527:8: ruleOpOther
         {
         pushFollow(FOLLOW_2);
         ruleOpOther();
@@ -21596,14 +22530,14 @@
 
     // $ANTLR start synpred14_InternalSignalDSL
     public final void synpred14_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2318:6: ( ( '>' '>' ) )
-        // InternalSignalDSL.g:2318:7: ( '>' '>' )
+        // InternalSignalDSL.g:2642:6: ( ( '>' '>' ) )
+        // InternalSignalDSL.g:2642:7: ( '>' '>' )
         {
-        // InternalSignalDSL.g:2318:7: ( '>' '>' )
-        // InternalSignalDSL.g:2319:7: '>' '>'
+        // InternalSignalDSL.g:2642:7: ( '>' '>' )
+        // InternalSignalDSL.g:2643:7: '>' '>'
         {
-        match(input,43,FOLLOW_44); if (state.failed) return ;
-        match(input,43,FOLLOW_2); if (state.failed) return ;
+        match(input,49,FOLLOW_44); if (state.failed) return ;
+        match(input,49,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21614,14 +22548,14 @@
 
     // $ANTLR start synpred15_InternalSignalDSL
     public final void synpred15_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2353:6: ( ( '<' '<' ) )
-        // InternalSignalDSL.g:2353:7: ( '<' '<' )
+        // InternalSignalDSL.g:2677:6: ( ( '<' '<' ) )
+        // InternalSignalDSL.g:2677:7: ( '<' '<' )
         {
-        // InternalSignalDSL.g:2353:7: ( '<' '<' )
-        // InternalSignalDSL.g:2354:7: '<' '<'
+        // InternalSignalDSL.g:2677:7: ( '<' '<' )
+        // InternalSignalDSL.g:2678:7: '<' '<'
         {
-        match(input,42,FOLLOW_34); if (state.failed) return ;
-        match(input,42,FOLLOW_2); if (state.failed) return ;
+        match(input,48,FOLLOW_34); if (state.failed) return ;
+        match(input,48,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21632,22 +22566,22 @@
 
     // $ANTLR start synpred16_InternalSignalDSL
     public final void synpred16_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2426:5: ( ( () ( ( ruleOpAdd ) ) ) )
-        // InternalSignalDSL.g:2426:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalSignalDSL.g:2750:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalSignalDSL.g:2750:6: ( () ( ( ruleOpAdd ) ) )
         {
-        // InternalSignalDSL.g:2426:6: ( () ( ( ruleOpAdd ) ) )
-        // InternalSignalDSL.g:2427:6: () ( ( ruleOpAdd ) )
+        // InternalSignalDSL.g:2750:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalSignalDSL.g:2751:6: () ( ( ruleOpAdd ) )
         {
-        // InternalSignalDSL.g:2427:6: ()
-        // InternalSignalDSL.g:2428:6: 
+        // InternalSignalDSL.g:2751:6: ()
+        // InternalSignalDSL.g:2752:6: 
         {
         }
 
-        // InternalSignalDSL.g:2429:6: ( ( ruleOpAdd ) )
-        // InternalSignalDSL.g:2430:7: ( ruleOpAdd )
+        // InternalSignalDSL.g:2753:6: ( ( ruleOpAdd ) )
+        // InternalSignalDSL.g:2754:7: ( ruleOpAdd )
         {
-        // InternalSignalDSL.g:2430:7: ( ruleOpAdd )
-        // InternalSignalDSL.g:2431:8: ruleOpAdd
+        // InternalSignalDSL.g:2754:7: ( ruleOpAdd )
+        // InternalSignalDSL.g:2755:8: ruleOpAdd
         {
         pushFollow(FOLLOW_2);
         ruleOpAdd();
@@ -21670,22 +22604,22 @@
 
     // $ANTLR start synpred17_InternalSignalDSL
     public final void synpred17_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2541:5: ( ( () ( ( ruleOpMulti ) ) ) )
-        // InternalSignalDSL.g:2541:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalSignalDSL.g:2865:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalSignalDSL.g:2865:6: ( () ( ( ruleOpMulti ) ) )
         {
-        // InternalSignalDSL.g:2541:6: ( () ( ( ruleOpMulti ) ) )
-        // InternalSignalDSL.g:2542:6: () ( ( ruleOpMulti ) )
+        // InternalSignalDSL.g:2865:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalSignalDSL.g:2866:6: () ( ( ruleOpMulti ) )
         {
-        // InternalSignalDSL.g:2542:6: ()
-        // InternalSignalDSL.g:2543:6: 
+        // InternalSignalDSL.g:2866:6: ()
+        // InternalSignalDSL.g:2867:6: 
         {
         }
 
-        // InternalSignalDSL.g:2544:6: ( ( ruleOpMulti ) )
-        // InternalSignalDSL.g:2545:7: ( ruleOpMulti )
+        // InternalSignalDSL.g:2868:6: ( ( ruleOpMulti ) )
+        // InternalSignalDSL.g:2869:7: ( ruleOpMulti )
         {
-        // InternalSignalDSL.g:2545:7: ( ruleOpMulti )
-        // InternalSignalDSL.g:2546:8: ruleOpMulti
+        // InternalSignalDSL.g:2869:7: ( ruleOpMulti )
+        // InternalSignalDSL.g:2870:8: ruleOpMulti
         {
         pushFollow(FOLLOW_2);
         ruleOpMulti();
@@ -21708,18 +22642,18 @@
 
     // $ANTLR start synpred18_InternalSignalDSL
     public final void synpred18_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2776:5: ( ( () 'as' ) )
-        // InternalSignalDSL.g:2776:6: ( () 'as' )
+        // InternalSignalDSL.g:3100:5: ( ( () 'as' ) )
+        // InternalSignalDSL.g:3100:6: ( () 'as' )
         {
-        // InternalSignalDSL.g:2776:6: ( () 'as' )
-        // InternalSignalDSL.g:2777:6: () 'as'
+        // InternalSignalDSL.g:3100:6: ( () 'as' )
+        // InternalSignalDSL.g:3101:6: () 'as'
         {
-        // InternalSignalDSL.g:2777:6: ()
-        // InternalSignalDSL.g:2778:6: 
+        // InternalSignalDSL.g:3101:6: ()
+        // InternalSignalDSL.g:3102:6: 
         {
         }
 
-        match(input,64,FOLLOW_2); if (state.failed) return ;
+        match(input,70,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21730,22 +22664,22 @@
 
     // $ANTLR start synpred19_InternalSignalDSL
     public final void synpred19_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2844:4: ( ( () ( ( ruleOpPostfix ) ) ) )
-        // InternalSignalDSL.g:2844:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalSignalDSL.g:3168:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalSignalDSL.g:3168:5: ( () ( ( ruleOpPostfix ) ) )
         {
-        // InternalSignalDSL.g:2844:5: ( () ( ( ruleOpPostfix ) ) )
-        // InternalSignalDSL.g:2845:5: () ( ( ruleOpPostfix ) )
+        // InternalSignalDSL.g:3168:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalSignalDSL.g:3169:5: () ( ( ruleOpPostfix ) )
         {
-        // InternalSignalDSL.g:2845:5: ()
-        // InternalSignalDSL.g:2846:5: 
+        // InternalSignalDSL.g:3169:5: ()
+        // InternalSignalDSL.g:3170:5: 
         {
         }
 
-        // InternalSignalDSL.g:2847:5: ( ( ruleOpPostfix ) )
-        // InternalSignalDSL.g:2848:6: ( ruleOpPostfix )
+        // InternalSignalDSL.g:3171:5: ( ( ruleOpPostfix ) )
+        // InternalSignalDSL.g:3172:6: ( ruleOpPostfix )
         {
-        // InternalSignalDSL.g:2848:6: ( ruleOpPostfix )
-        // InternalSignalDSL.g:2849:7: ruleOpPostfix
+        // InternalSignalDSL.g:3172:6: ( ruleOpPostfix )
+        // InternalSignalDSL.g:3173:7: ruleOpPostfix
         {
         pushFollow(FOLLOW_2);
         ruleOpPostfix();
@@ -21768,52 +22702,52 @@
 
     // $ANTLR start synpred20_InternalSignalDSL
     public final void synpred20_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:2940:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
-        // InternalSignalDSL.g:2940:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalSignalDSL.g:3264:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalSignalDSL.g:3264:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
         {
-        // InternalSignalDSL.g:2940:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
-        // InternalSignalDSL.g:2941:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        // InternalSignalDSL.g:3264:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalSignalDSL.g:3265:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
         {
-        // InternalSignalDSL.g:2941:7: ()
-        // InternalSignalDSL.g:2942:7: 
+        // InternalSignalDSL.g:3265:7: ()
+        // InternalSignalDSL.g:3266:7: 
         {
         }
 
-        // InternalSignalDSL.g:2943:7: ( '.' | ( ( '::' ) ) )
-        int alt136=2;
-        int LA136_0 = input.LA(1);
+        // InternalSignalDSL.g:3267:7: ( '.' | ( ( '::' ) ) )
+        int alt134=2;
+        int LA134_0 = input.LA(1);
 
-        if ( (LA136_0==67) ) {
-            alt136=1;
+        if ( (LA134_0==73) ) {
+            alt134=1;
         }
-        else if ( (LA136_0==68) ) {
-            alt136=2;
+        else if ( (LA134_0==74) ) {
+            alt134=2;
         }
         else {
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 136, 0, input);
+                new NoViableAltException("", 134, 0, input);
 
             throw nvae;
         }
-        switch (alt136) {
+        switch (alt134) {
             case 1 :
-                // InternalSignalDSL.g:2944:8: '.'
+                // InternalSignalDSL.g:3268:8: '.'
                 {
-                match(input,67,FOLLOW_51); if (state.failed) return ;
+                match(input,73,FOLLOW_51); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalSignalDSL.g:2946:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3270:8: ( ( '::' ) )
                 {
-                // InternalSignalDSL.g:2946:8: ( ( '::' ) )
-                // InternalSignalDSL.g:2947:9: ( '::' )
+                // InternalSignalDSL.g:3270:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3271:9: ( '::' )
                 {
-                // InternalSignalDSL.g:2947:9: ( '::' )
-                // InternalSignalDSL.g:2948:10: '::'
+                // InternalSignalDSL.g:3271:9: ( '::' )
+                // InternalSignalDSL.g:3272:10: '::'
                 {
-                match(input,68,FOLLOW_51); if (state.failed) return ;
+                match(input,74,FOLLOW_51); if (state.failed) return ;
 
                 }
 
@@ -21826,11 +22760,11 @@
 
         }
 
-        // InternalSignalDSL.g:2952:7: ( ( ruleFeatureCallID ) )
-        // InternalSignalDSL.g:2953:8: ( ruleFeatureCallID )
+        // InternalSignalDSL.g:3276:7: ( ( ruleFeatureCallID ) )
+        // InternalSignalDSL.g:3277:8: ( ruleFeatureCallID )
         {
-        // InternalSignalDSL.g:2953:8: ( ruleFeatureCallID )
-        // InternalSignalDSL.g:2954:9: ruleFeatureCallID
+        // InternalSignalDSL.g:3277:8: ( ruleFeatureCallID )
+        // InternalSignalDSL.g:3278:9: ruleFeatureCallID
         {
         pushFollow(FOLLOW_27);
         ruleFeatureCallID();
@@ -21858,61 +22792,61 @@
 
     // $ANTLR start synpred21_InternalSignalDSL
     public final void synpred21_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3037:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
-        // InternalSignalDSL.g:3037:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalSignalDSL.g:3361:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalSignalDSL.g:3361:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
         {
-        // InternalSignalDSL.g:3037:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
-        // InternalSignalDSL.g:3038:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        // InternalSignalDSL.g:3361:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalSignalDSL.g:3362:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
         {
-        // InternalSignalDSL.g:3038:7: ()
-        // InternalSignalDSL.g:3039:7: 
+        // InternalSignalDSL.g:3362:7: ()
+        // InternalSignalDSL.g:3363:7: 
         {
         }
 
-        // InternalSignalDSL.g:3040:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
-        int alt137=3;
+        // InternalSignalDSL.g:3364:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        int alt135=3;
         switch ( input.LA(1) ) {
-        case 67:
+        case 73:
             {
-            alt137=1;
+            alt135=1;
             }
             break;
-        case 69:
+        case 75:
             {
-            alt137=2;
+            alt135=2;
             }
             break;
-        case 68:
+        case 74:
             {
-            alt137=3;
+            alt135=3;
             }
             break;
         default:
             if (state.backtracking>0) {state.failed=true; return ;}
             NoViableAltException nvae =
-                new NoViableAltException("", 137, 0, input);
+                new NoViableAltException("", 135, 0, input);
 
             throw nvae;
         }
 
-        switch (alt137) {
+        switch (alt135) {
             case 1 :
-                // InternalSignalDSL.g:3041:8: '.'
+                // InternalSignalDSL.g:3365:8: '.'
                 {
-                match(input,67,FOLLOW_2); if (state.failed) return ;
+                match(input,73,FOLLOW_2); if (state.failed) return ;
 
                 }
                 break;
             case 2 :
-                // InternalSignalDSL.g:3043:8: ( ( '?.' ) )
+                // InternalSignalDSL.g:3367:8: ( ( '?.' ) )
                 {
-                // InternalSignalDSL.g:3043:8: ( ( '?.' ) )
-                // InternalSignalDSL.g:3044:9: ( '?.' )
+                // InternalSignalDSL.g:3367:8: ( ( '?.' ) )
+                // InternalSignalDSL.g:3368:9: ( '?.' )
                 {
-                // InternalSignalDSL.g:3044:9: ( '?.' )
-                // InternalSignalDSL.g:3045:10: '?.'
+                // InternalSignalDSL.g:3368:9: ( '?.' )
+                // InternalSignalDSL.g:3369:10: '?.'
                 {
-                match(input,69,FOLLOW_2); if (state.failed) return ;
+                match(input,75,FOLLOW_2); if (state.failed) return ;
 
                 }
 
@@ -21923,15 +22857,15 @@
                 }
                 break;
             case 3 :
-                // InternalSignalDSL.g:3049:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3373:8: ( ( '::' ) )
                 {
-                // InternalSignalDSL.g:3049:8: ( ( '::' ) )
-                // InternalSignalDSL.g:3050:9: ( '::' )
+                // InternalSignalDSL.g:3373:8: ( ( '::' ) )
+                // InternalSignalDSL.g:3374:9: ( '::' )
                 {
-                // InternalSignalDSL.g:3050:9: ( '::' )
-                // InternalSignalDSL.g:3051:10: '::'
+                // InternalSignalDSL.g:3374:9: ( '::' )
+                // InternalSignalDSL.g:3375:10: '::'
                 {
-                match(input,68,FOLLOW_2); if (state.failed) return ;
+                match(input,74,FOLLOW_2); if (state.failed) return ;
 
                 }
 
@@ -21954,13 +22888,13 @@
 
     // $ANTLR start synpred22_InternalSignalDSL
     public final void synpred22_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3175:7: ( ( '(' ) )
-        // InternalSignalDSL.g:3175:8: ( '(' )
+        // InternalSignalDSL.g:3499:7: ( ( '(' ) )
+        // InternalSignalDSL.g:3499:8: ( '(' )
         {
-        // InternalSignalDSL.g:3175:8: ( '(' )
-        // InternalSignalDSL.g:3176:8: '('
+        // InternalSignalDSL.g:3499:8: ( '(' )
+        // InternalSignalDSL.g:3500:8: '('
         {
-        match(input,30,FOLLOW_2); if (state.failed) return ;
+        match(input,36,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -21971,33 +22905,33 @@
 
     // $ANTLR start synpred23_InternalSignalDSL
     public final void synpred23_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3194:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:3194:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:3518:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:3518:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalSignalDSL.g:3194:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:3195:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalSignalDSL.g:3518:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:3519:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalSignalDSL.g:3195:9: ()
-        // InternalSignalDSL.g:3196:9: 
+        // InternalSignalDSL.g:3519:9: ()
+        // InternalSignalDSL.g:3520:9: 
         {
         }
 
-        // InternalSignalDSL.g:3197:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt139=2;
-        int LA139_0 = input.LA(1);
+        // InternalSignalDSL.g:3521:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt137=2;
+        int LA137_0 = input.LA(1);
 
-        if ( (LA139_0==RULE_ID||LA139_0==30||LA139_0==55) ) {
-            alt139=1;
+        if ( (LA137_0==RULE_ID||LA137_0==36||LA137_0==61) ) {
+            alt137=1;
         }
-        switch (alt139) {
+        switch (alt137) {
             case 1 :
-                // InternalSignalDSL.g:3198:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:3522:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalSignalDSL.g:3198:10: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:3199:11: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:3522:10: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:3523:11: ( ruleJvmFormalParameter )
                 {
-                // InternalSignalDSL.g:3199:11: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:3200:12: ruleJvmFormalParameter
+                // InternalSignalDSL.g:3523:11: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:3524:12: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_61);
                 ruleJvmFormalParameter();
@@ -22010,27 +22944,240 @@
 
                 }
 
-                // InternalSignalDSL.g:3203:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:3527:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop136:
+                do {
+                    int alt136=2;
+                    int LA136_0 = input.LA(1);
+
+                    if ( (LA136_0==37) ) {
+                        alt136=1;
+                    }
+
+
+                    switch (alt136) {
+                	case 1 :
+                	    // InternalSignalDSL.g:3528:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,37,FOLLOW_41); if (state.failed) return ;
+                	    // InternalSignalDSL.g:3529:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:3530:12: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalSignalDSL.g:3530:12: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:3531:13: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_61);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop136;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalSignalDSL.g:3536:9: ( ( '|' ) )
+        // InternalSignalDSL.g:3537:10: ( '|' )
+        {
+        // InternalSignalDSL.g:3537:10: ( '|' )
+        // InternalSignalDSL.g:3538:11: '|'
+        {
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred23_InternalSignalDSL
+
+    // $ANTLR start synpred24_InternalSignalDSL
+    public final void synpred24_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3615:6: ( ( () '[' ) )
+        // InternalSignalDSL.g:3615:7: ( () '[' )
+        {
+        // InternalSignalDSL.g:3615:7: ( () '[' )
+        // InternalSignalDSL.g:3616:7: () '['
+        {
+        // InternalSignalDSL.g:3616:7: ()
+        // InternalSignalDSL.g:3617:7: 
+        {
+        }
+
+        match(input,41,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred24_InternalSignalDSL
+
+    // $ANTLR start synpred25_InternalSignalDSL
+    public final void synpred25_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3688:4: ( ( () 'synchronized' '(' ) )
+        // InternalSignalDSL.g:3688:5: ( () 'synchronized' '(' )
+        {
+        // InternalSignalDSL.g:3688:5: ( () 'synchronized' '(' )
+        // InternalSignalDSL.g:3689:5: () 'synchronized' '('
+        {
+        // InternalSignalDSL.g:3689:5: ()
+        // InternalSignalDSL.g:3690:5: 
+        {
+        }
+
+        match(input,98,FOLLOW_66); if (state.failed) return ;
+        match(input,36,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred25_InternalSignalDSL
+
+    // $ANTLR start synpred26_InternalSignalDSL
+    public final void synpred26_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3733:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalSignalDSL.g:3733:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalSignalDSL.g:3733:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:3734:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalSignalDSL.g:3734:5: ()
+        // InternalSignalDSL.g:3735:5: 
+        {
+        }
+
+        match(input,82,FOLLOW_66); if (state.failed) return ;
+        match(input,36,FOLLOW_41); if (state.failed) return ;
+        // InternalSignalDSL.g:3738:5: ( ( ruleJvmFormalParameter ) )
+        // InternalSignalDSL.g:3739:6: ( ruleJvmFormalParameter )
+        {
+        // InternalSignalDSL.g:3739:6: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:3740:7: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_15);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,24,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred26_InternalSignalDSL
+
+    // $ANTLR start synpred27_InternalSignalDSL
+    public final void synpred27_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:3847:4: ( ( () '[' ) )
+        // InternalSignalDSL.g:3847:5: ( () '[' )
+        {
+        // InternalSignalDSL.g:3847:5: ( () '[' )
+        // InternalSignalDSL.g:3848:5: () '['
+        {
+        // InternalSignalDSL.g:3848:5: ()
+        // InternalSignalDSL.g:3849:5: 
+        {
+        }
+
+        match(input,41,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred27_InternalSignalDSL
+
+    // $ANTLR start synpred29_InternalSignalDSL
+    public final void synpred29_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:4152:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:4152:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalSignalDSL.g:4152:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:4153:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalSignalDSL.g:4153:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt139=2;
+        int LA139_0 = input.LA(1);
+
+        if ( (LA139_0==RULE_ID||LA139_0==36||LA139_0==61) ) {
+            alt139=1;
+        }
+        switch (alt139) {
+            case 1 :
+                // InternalSignalDSL.g:4154:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalSignalDSL.g:4154:6: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:4155:7: ( ruleJvmFormalParameter )
+                {
+                // InternalSignalDSL.g:4155:7: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:4156:8: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_61);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalSignalDSL.g:4159:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop138:
                 do {
                     int alt138=2;
                     int LA138_0 = input.LA(1);
 
-                    if ( (LA138_0==31) ) {
+                    if ( (LA138_0==37) ) {
                         alt138=1;
                     }
 
 
                     switch (alt138) {
                 	case 1 :
-                	    // InternalSignalDSL.g:3204:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:4160:7: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,31,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:3205:11: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:3206:12: ( ruleJvmFormalParameter )
+                	    match(input,37,FOLLOW_41); if (state.failed) return ;
+                	    // InternalSignalDSL.g:4161:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:4162:8: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalSignalDSL.g:3206:12: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:3207:13: ruleJvmFormalParameter
+                	    // InternalSignalDSL.g:4162:8: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:4163:9: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_61);
                 	    ruleJvmFormalParameter();
@@ -22058,226 +23205,13 @@
 
         }
 
-        // InternalSignalDSL.g:3212:9: ( ( '|' ) )
-        // InternalSignalDSL.g:3213:10: ( '|' )
+        // InternalSignalDSL.g:4168:5: ( ( '|' ) )
+        // InternalSignalDSL.g:4169:6: ( '|' )
         {
-        // InternalSignalDSL.g:3213:10: ( '|' )
-        // InternalSignalDSL.g:3214:11: '|'
+        // InternalSignalDSL.g:4169:6: ( '|' )
+        // InternalSignalDSL.g:4170:7: '|'
         {
-        match(input,70,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred23_InternalSignalDSL
-
-    // $ANTLR start synpred24_InternalSignalDSL
-    public final void synpred24_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3291:6: ( ( () '[' ) )
-        // InternalSignalDSL.g:3291:7: ( () '[' )
-        {
-        // InternalSignalDSL.g:3291:7: ( () '[' )
-        // InternalSignalDSL.g:3292:7: () '['
-        {
-        // InternalSignalDSL.g:3292:7: ()
-        // InternalSignalDSL.g:3293:7: 
-        {
-        }
-
-        match(input,35,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred24_InternalSignalDSL
-
-    // $ANTLR start synpred25_InternalSignalDSL
-    public final void synpred25_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3364:4: ( ( () 'synchronized' '(' ) )
-        // InternalSignalDSL.g:3364:5: ( () 'synchronized' '(' )
-        {
-        // InternalSignalDSL.g:3364:5: ( () 'synchronized' '(' )
-        // InternalSignalDSL.g:3365:5: () 'synchronized' '('
-        {
-        // InternalSignalDSL.g:3365:5: ()
-        // InternalSignalDSL.g:3366:5: 
-        {
-        }
-
-        match(input,92,FOLLOW_66); if (state.failed) return ;
-        match(input,30,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred25_InternalSignalDSL
-
-    // $ANTLR start synpred26_InternalSignalDSL
-    public final void synpred26_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3409:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalSignalDSL.g:3409:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        {
-        // InternalSignalDSL.g:3409:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalSignalDSL.g:3410:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
-        {
-        // InternalSignalDSL.g:3410:5: ()
-        // InternalSignalDSL.g:3411:5: 
-        {
-        }
-
-        match(input,18,FOLLOW_66); if (state.failed) return ;
-        match(input,30,FOLLOW_41); if (state.failed) return ;
-        // InternalSignalDSL.g:3414:5: ( ( ruleJvmFormalParameter ) )
-        // InternalSignalDSL.g:3415:6: ( ruleJvmFormalParameter )
-        {
-        // InternalSignalDSL.g:3415:6: ( ruleJvmFormalParameter )
-        // InternalSignalDSL.g:3416:7: ruleJvmFormalParameter
-        {
-        pushFollow(FOLLOW_69);
-        ruleJvmFormalParameter();
-
-        state._fsp--;
-        if (state.failed) return ;
-
-        }
-
-
-        }
-
-        match(input,74,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred26_InternalSignalDSL
-
-    // $ANTLR start synpred27_InternalSignalDSL
-    public final void synpred27_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3523:4: ( ( () '[' ) )
-        // InternalSignalDSL.g:3523:5: ( () '[' )
-        {
-        // InternalSignalDSL.g:3523:5: ( () '[' )
-        // InternalSignalDSL.g:3524:5: () '['
-        {
-        // InternalSignalDSL.g:3524:5: ()
-        // InternalSignalDSL.g:3525:5: 
-        {
-        }
-
-        match(input,35,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred27_InternalSignalDSL
-
-    // $ANTLR start synpred29_InternalSignalDSL
-    public final void synpred29_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:3828:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:3828:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        {
-        // InternalSignalDSL.g:3828:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:3829:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
-        {
-        // InternalSignalDSL.g:3829:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt141=2;
-        int LA141_0 = input.LA(1);
-
-        if ( (LA141_0==RULE_ID||LA141_0==30||LA141_0==55) ) {
-            alt141=1;
-        }
-        switch (alt141) {
-            case 1 :
-                // InternalSignalDSL.g:3830:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                {
-                // InternalSignalDSL.g:3830:6: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:3831:7: ( ruleJvmFormalParameter )
-                {
-                // InternalSignalDSL.g:3831:7: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:3832:8: ruleJvmFormalParameter
-                {
-                pushFollow(FOLLOW_61);
-                ruleJvmFormalParameter();
-
-                state._fsp--;
-                if (state.failed) return ;
-
-                }
-
-
-                }
-
-                // InternalSignalDSL.g:3835:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                loop140:
-                do {
-                    int alt140=2;
-                    int LA140_0 = input.LA(1);
-
-                    if ( (LA140_0==31) ) {
-                        alt140=1;
-                    }
-
-
-                    switch (alt140) {
-                	case 1 :
-                	    // InternalSignalDSL.g:3836:7: ',' ( ( ruleJvmFormalParameter ) )
-                	    {
-                	    match(input,31,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:3837:7: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:3838:8: ( ruleJvmFormalParameter )
-                	    {
-                	    // InternalSignalDSL.g:3838:8: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:3839:9: ruleJvmFormalParameter
-                	    {
-                	    pushFollow(FOLLOW_61);
-                	    ruleJvmFormalParameter();
-
-                	    state._fsp--;
-                	    if (state.failed) return ;
-
-                	    }
-
-
-                	    }
-
-
-                	    }
-                	    break;
-
-                	default :
-                	    break loop140;
-                    }
-                } while (true);
-
-
-                }
-                break;
-
-        }
-
-        // InternalSignalDSL.g:3844:5: ( ( '|' ) )
-        // InternalSignalDSL.g:3845:6: ( '|' )
-        {
-        // InternalSignalDSL.g:3845:6: ( '|' )
-        // InternalSignalDSL.g:3846:7: '|'
-        {
-        match(input,70,FOLLOW_2); if (state.failed) return ;
+        match(input,76,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22294,10 +23228,10 @@
 
     // $ANTLR start synpred31_InternalSignalDSL
     public final void synpred31_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4237:5: ( 'else' )
-        // InternalSignalDSL.g:4237:6: 'else'
+        // InternalSignalDSL.g:4561:5: ( 'else' )
+        // InternalSignalDSL.g:4561:6: 'else'
         {
-        match(input,72,FOLLOW_2); if (state.failed) return ;
+        match(input,78,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -22305,20 +23239,20 @@
 
     // $ANTLR start synpred32_InternalSignalDSL
     public final void synpred32_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4296:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalSignalDSL.g:4296:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4620:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalSignalDSL.g:4620:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalSignalDSL.g:4296:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalSignalDSL.g:4297:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalSignalDSL.g:4620:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4621:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
         {
-        match(input,30,FOLLOW_41); if (state.failed) return ;
-        // InternalSignalDSL.g:4298:7: ( ( ruleJvmFormalParameter ) )
-        // InternalSignalDSL.g:4299:8: ( ruleJvmFormalParameter )
+        match(input,36,FOLLOW_41); if (state.failed) return ;
+        // InternalSignalDSL.g:4622:7: ( ( ruleJvmFormalParameter ) )
+        // InternalSignalDSL.g:4623:8: ( ruleJvmFormalParameter )
         {
-        // InternalSignalDSL.g:4299:8: ( ruleJvmFormalParameter )
-        // InternalSignalDSL.g:4300:9: ruleJvmFormalParameter
+        // InternalSignalDSL.g:4623:8: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:4624:9: ruleJvmFormalParameter
         {
-        pushFollow(FOLLOW_69);
+        pushFollow(FOLLOW_15);
         ruleJvmFormalParameter();
 
         state._fsp--;
@@ -22329,7 +23263,7 @@
 
         }
 
-        match(input,74,FOLLOW_2); if (state.failed) return ;
+        match(input,24,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22340,19 +23274,19 @@
 
     // $ANTLR start synpred33_InternalSignalDSL
     public final void synpred33_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:4363:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
-        // InternalSignalDSL.g:4363:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4687:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalSignalDSL.g:4687:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
         {
-        // InternalSignalDSL.g:4363:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
-        // InternalSignalDSL.g:4364:7: ( ( ruleJvmFormalParameter ) ) ':'
+        // InternalSignalDSL.g:4687:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalSignalDSL.g:4688:7: ( ( ruleJvmFormalParameter ) ) ':'
         {
-        // InternalSignalDSL.g:4364:7: ( ( ruleJvmFormalParameter ) )
-        // InternalSignalDSL.g:4365:8: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:4688:7: ( ( ruleJvmFormalParameter ) )
+        // InternalSignalDSL.g:4689:8: ( ruleJvmFormalParameter )
         {
-        // InternalSignalDSL.g:4365:8: ( ruleJvmFormalParameter )
-        // InternalSignalDSL.g:4366:9: ruleJvmFormalParameter
+        // InternalSignalDSL.g:4689:8: ( ruleJvmFormalParameter )
+        // InternalSignalDSL.g:4690:9: ruleJvmFormalParameter
         {
-        pushFollow(FOLLOW_69);
+        pushFollow(FOLLOW_15);
         ruleJvmFormalParameter();
 
         state._fsp--;
@@ -22363,7 +23297,7 @@
 
         }
 
-        match(input,74,FOLLOW_2); if (state.failed) return ;
+        match(input,24,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22374,17 +23308,17 @@
 
     // $ANTLR start synpred35_InternalSignalDSL
     public final void synpred35_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5181:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
-        // InternalSignalDSL.g:5181:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalSignalDSL.g:5505:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalSignalDSL.g:5505:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
         {
-        // InternalSignalDSL.g:5181:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
-        // InternalSignalDSL.g:5182:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        // InternalSignalDSL.g:5505:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalSignalDSL.g:5506:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
         {
-        // InternalSignalDSL.g:5182:6: ( ( ruleJvmTypeReference ) )
-        // InternalSignalDSL.g:5183:7: ( ruleJvmTypeReference )
+        // InternalSignalDSL.g:5506:6: ( ( ruleJvmTypeReference ) )
+        // InternalSignalDSL.g:5507:7: ( ruleJvmTypeReference )
         {
-        // InternalSignalDSL.g:5183:7: ( ruleJvmTypeReference )
-        // InternalSignalDSL.g:5184:8: ruleJvmTypeReference
+        // InternalSignalDSL.g:5507:7: ( ruleJvmTypeReference )
+        // InternalSignalDSL.g:5508:8: ruleJvmTypeReference
         {
         pushFollow(FOLLOW_4);
         ruleJvmTypeReference();
@@ -22397,11 +23331,11 @@
 
         }
 
-        // InternalSignalDSL.g:5187:6: ( ( ruleValidID ) )
-        // InternalSignalDSL.g:5188:7: ( ruleValidID )
+        // InternalSignalDSL.g:5511:6: ( ( ruleValidID ) )
+        // InternalSignalDSL.g:5512:7: ( ruleValidID )
         {
-        // InternalSignalDSL.g:5188:7: ( ruleValidID )
-        // InternalSignalDSL.g:5189:8: ruleValidID
+        // InternalSignalDSL.g:5512:7: ( ruleValidID )
+        // InternalSignalDSL.g:5513:8: ruleValidID
         {
         pushFollow(FOLLOW_2);
         ruleValidID();
@@ -22424,13 +23358,13 @@
 
     // $ANTLR start synpred36_InternalSignalDSL
     public final void synpred36_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5493:5: ( ( '(' ) )
-        // InternalSignalDSL.g:5493:6: ( '(' )
+        // InternalSignalDSL.g:5817:5: ( ( '(' ) )
+        // InternalSignalDSL.g:5817:6: ( '(' )
         {
-        // InternalSignalDSL.g:5493:6: ( '(' )
-        // InternalSignalDSL.g:5494:6: '('
+        // InternalSignalDSL.g:5817:6: ( '(' )
+        // InternalSignalDSL.g:5818:6: '('
         {
-        match(input,30,FOLLOW_2); if (state.failed) return ;
+        match(input,36,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22441,33 +23375,33 @@
 
     // $ANTLR start synpred37_InternalSignalDSL
     public final void synpred37_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5512:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:5512:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:5836:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:5836:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
         {
-        // InternalSignalDSL.g:5512:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:5513:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        // InternalSignalDSL.g:5836:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:5837:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
         {
-        // InternalSignalDSL.g:5513:7: ()
-        // InternalSignalDSL.g:5514:7: 
+        // InternalSignalDSL.g:5837:7: ()
+        // InternalSignalDSL.g:5838:7: 
         {
         }
 
-        // InternalSignalDSL.g:5515:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt145=2;
-        int LA145_0 = input.LA(1);
+        // InternalSignalDSL.g:5839:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt143=2;
+        int LA143_0 = input.LA(1);
 
-        if ( (LA145_0==RULE_ID||LA145_0==30||LA145_0==55) ) {
-            alt145=1;
+        if ( (LA143_0==RULE_ID||LA143_0==36||LA143_0==61) ) {
+            alt143=1;
         }
-        switch (alt145) {
+        switch (alt143) {
             case 1 :
-                // InternalSignalDSL.g:5516:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:5840:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 {
-                // InternalSignalDSL.g:5516:8: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:5517:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:5840:8: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:5841:9: ( ruleJvmFormalParameter )
                 {
-                // InternalSignalDSL.g:5517:9: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:5518:10: ruleJvmFormalParameter
+                // InternalSignalDSL.g:5841:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:5842:10: ruleJvmFormalParameter
                 {
                 pushFollow(FOLLOW_61);
                 ruleJvmFormalParameter();
@@ -22480,27 +23414,187 @@
 
                 }
 
-                // InternalSignalDSL.g:5521:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                // InternalSignalDSL.g:5845:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop142:
+                do {
+                    int alt142=2;
+                    int LA142_0 = input.LA(1);
+
+                    if ( (LA142_0==37) ) {
+                        alt142=1;
+                    }
+
+
+                    switch (alt142) {
+                	case 1 :
+                	    // InternalSignalDSL.g:5846:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,37,FOLLOW_41); if (state.failed) return ;
+                	    // InternalSignalDSL.g:5847:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:5848:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalSignalDSL.g:5848:10: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:5849:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_61);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop142;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalSignalDSL.g:5854:7: ( ( '|' ) )
+        // InternalSignalDSL.g:5855:8: ( '|' )
+        {
+        // InternalSignalDSL.g:5855:8: ( '|' )
+        // InternalSignalDSL.g:5856:9: '|'
+        {
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred37_InternalSignalDSL
+
+    // $ANTLR start synpred38_InternalSignalDSL
+    public final void synpred38_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:5933:4: ( ( () '[' ) )
+        // InternalSignalDSL.g:5933:5: ( () '[' )
+        {
+        // InternalSignalDSL.g:5933:5: ( () '[' )
+        // InternalSignalDSL.g:5934:5: () '['
+        {
+        // InternalSignalDSL.g:5934:5: ()
+        // InternalSignalDSL.g:5935:5: 
+        {
+        }
+
+        match(input,41,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred38_InternalSignalDSL
+
+    // $ANTLR start synpred39_InternalSignalDSL
+    public final void synpred39_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:6093:5: ( '<' )
+        // InternalSignalDSL.g:6093:6: '<'
+        {
+        match(input,48,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred39_InternalSignalDSL
+
+    // $ANTLR start synpred40_InternalSignalDSL
+    public final void synpred40_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:6150:5: ( ( '(' ) )
+        // InternalSignalDSL.g:6150:6: ( '(' )
+        {
+        // InternalSignalDSL.g:6150:6: ( '(' )
+        // InternalSignalDSL.g:6151:6: '('
+        {
+        match(input,36,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred40_InternalSignalDSL
+
+    // $ANTLR start synpred41_InternalSignalDSL
+    public final void synpred41_InternalSignalDSL_fragment() throws RecognitionException {   
+        // InternalSignalDSL.g:6169:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalSignalDSL.g:6169:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalSignalDSL.g:6169:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalSignalDSL.g:6170:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalSignalDSL.g:6170:7: ()
+        // InternalSignalDSL.g:6171:7: 
+        {
+        }
+
+        // InternalSignalDSL.g:6172:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt145=2;
+        int LA145_0 = input.LA(1);
+
+        if ( (LA145_0==RULE_ID||LA145_0==36||LA145_0==61) ) {
+            alt145=1;
+        }
+        switch (alt145) {
+            case 1 :
+                // InternalSignalDSL.g:6173:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalSignalDSL.g:6173:8: ( ( ruleJvmFormalParameter ) )
+                // InternalSignalDSL.g:6174:9: ( ruleJvmFormalParameter )
+                {
+                // InternalSignalDSL.g:6174:9: ( ruleJvmFormalParameter )
+                // InternalSignalDSL.g:6175:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_61);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalSignalDSL.g:6178:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
                 loop144:
                 do {
                     int alt144=2;
                     int LA144_0 = input.LA(1);
 
-                    if ( (LA144_0==31) ) {
+                    if ( (LA144_0==37) ) {
                         alt144=1;
                     }
 
 
                     switch (alt144) {
                 	case 1 :
-                	    // InternalSignalDSL.g:5522:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:6179:9: ',' ( ( ruleJvmFormalParameter ) )
                 	    {
-                	    match(input,31,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:5523:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:5524:10: ( ruleJvmFormalParameter )
+                	    match(input,37,FOLLOW_41); if (state.failed) return ;
+                	    // InternalSignalDSL.g:6180:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalSignalDSL.g:6181:10: ( ruleJvmFormalParameter )
                 	    {
-                	    // InternalSignalDSL.g:5524:10: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:5525:11: ruleJvmFormalParameter
+                	    // InternalSignalDSL.g:6181:10: ( ruleJvmFormalParameter )
+                	    // InternalSignalDSL.g:6182:11: ruleJvmFormalParameter
                 	    {
                 	    pushFollow(FOLLOW_61);
                 	    ruleJvmFormalParameter();
@@ -22528,173 +23622,13 @@
 
         }
 
-        // InternalSignalDSL.g:5530:7: ( ( '|' ) )
-        // InternalSignalDSL.g:5531:8: ( '|' )
+        // InternalSignalDSL.g:6187:7: ( ( '|' ) )
+        // InternalSignalDSL.g:6188:8: ( '|' )
         {
-        // InternalSignalDSL.g:5531:8: ( '|' )
-        // InternalSignalDSL.g:5532:9: '|'
+        // InternalSignalDSL.g:6188:8: ( '|' )
+        // InternalSignalDSL.g:6189:9: '|'
         {
-        match(input,70,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred37_InternalSignalDSL
-
-    // $ANTLR start synpred38_InternalSignalDSL
-    public final void synpred38_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5609:4: ( ( () '[' ) )
-        // InternalSignalDSL.g:5609:5: ( () '[' )
-        {
-        // InternalSignalDSL.g:5609:5: ( () '[' )
-        // InternalSignalDSL.g:5610:5: () '['
-        {
-        // InternalSignalDSL.g:5610:5: ()
-        // InternalSignalDSL.g:5611:5: 
-        {
-        }
-
-        match(input,35,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred38_InternalSignalDSL
-
-    // $ANTLR start synpred39_InternalSignalDSL
-    public final void synpred39_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5769:5: ( '<' )
-        // InternalSignalDSL.g:5769:6: '<'
-        {
-        match(input,42,FOLLOW_2); if (state.failed) return ;
-
-        }
-    }
-    // $ANTLR end synpred39_InternalSignalDSL
-
-    // $ANTLR start synpred40_InternalSignalDSL
-    public final void synpred40_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5826:5: ( ( '(' ) )
-        // InternalSignalDSL.g:5826:6: ( '(' )
-        {
-        // InternalSignalDSL.g:5826:6: ( '(' )
-        // InternalSignalDSL.g:5827:6: '('
-        {
-        match(input,30,FOLLOW_2); if (state.failed) return ;
-
-        }
-
-
-        }
-    }
-    // $ANTLR end synpred40_InternalSignalDSL
-
-    // $ANTLR start synpred41_InternalSignalDSL
-    public final void synpred41_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5845:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
-        // InternalSignalDSL.g:5845:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        {
-        // InternalSignalDSL.g:5845:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
-        // InternalSignalDSL.g:5846:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
-        {
-        // InternalSignalDSL.g:5846:7: ()
-        // InternalSignalDSL.g:5847:7: 
-        {
-        }
-
-        // InternalSignalDSL.g:5848:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
-        int alt147=2;
-        int LA147_0 = input.LA(1);
-
-        if ( (LA147_0==RULE_ID||LA147_0==30||LA147_0==55) ) {
-            alt147=1;
-        }
-        switch (alt147) {
-            case 1 :
-                // InternalSignalDSL.g:5849:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                {
-                // InternalSignalDSL.g:5849:8: ( ( ruleJvmFormalParameter ) )
-                // InternalSignalDSL.g:5850:9: ( ruleJvmFormalParameter )
-                {
-                // InternalSignalDSL.g:5850:9: ( ruleJvmFormalParameter )
-                // InternalSignalDSL.g:5851:10: ruleJvmFormalParameter
-                {
-                pushFollow(FOLLOW_61);
-                ruleJvmFormalParameter();
-
-                state._fsp--;
-                if (state.failed) return ;
-
-                }
-
-
-                }
-
-                // InternalSignalDSL.g:5854:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
-                loop146:
-                do {
-                    int alt146=2;
-                    int LA146_0 = input.LA(1);
-
-                    if ( (LA146_0==31) ) {
-                        alt146=1;
-                    }
-
-
-                    switch (alt146) {
-                	case 1 :
-                	    // InternalSignalDSL.g:5855:9: ',' ( ( ruleJvmFormalParameter ) )
-                	    {
-                	    match(input,31,FOLLOW_41); if (state.failed) return ;
-                	    // InternalSignalDSL.g:5856:9: ( ( ruleJvmFormalParameter ) )
-                	    // InternalSignalDSL.g:5857:10: ( ruleJvmFormalParameter )
-                	    {
-                	    // InternalSignalDSL.g:5857:10: ( ruleJvmFormalParameter )
-                	    // InternalSignalDSL.g:5858:11: ruleJvmFormalParameter
-                	    {
-                	    pushFollow(FOLLOW_61);
-                	    ruleJvmFormalParameter();
-
-                	    state._fsp--;
-                	    if (state.failed) return ;
-
-                	    }
-
-
-                	    }
-
-
-                	    }
-                	    break;
-
-                	default :
-                	    break loop146;
-                    }
-                } while (true);
-
-
-                }
-                break;
-
-        }
-
-        // InternalSignalDSL.g:5863:7: ( ( '|' ) )
-        // InternalSignalDSL.g:5864:8: ( '|' )
-        {
-        // InternalSignalDSL.g:5864:8: ( '|' )
-        // InternalSignalDSL.g:5865:9: '|'
-        {
-        match(input,70,FOLLOW_2); if (state.failed) return ;
+        match(input,76,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22711,18 +23645,18 @@
 
     // $ANTLR start synpred42_InternalSignalDSL
     public final void synpred42_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:5942:4: ( ( () '[' ) )
-        // InternalSignalDSL.g:5942:5: ( () '[' )
+        // InternalSignalDSL.g:6266:4: ( ( () '[' ) )
+        // InternalSignalDSL.g:6266:5: ( () '[' )
         {
-        // InternalSignalDSL.g:5942:5: ( () '[' )
-        // InternalSignalDSL.g:5943:5: () '['
+        // InternalSignalDSL.g:6266:5: ( () '[' )
+        // InternalSignalDSL.g:6267:5: () '['
         {
-        // InternalSignalDSL.g:5943:5: ()
-        // InternalSignalDSL.g:5944:5: 
+        // InternalSignalDSL.g:6267:5: ()
+        // InternalSignalDSL.g:6268:5: 
         {
         }
 
-        match(input,35,FOLLOW_2); if (state.failed) return ;
+        match(input,41,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22733,10 +23667,10 @@
 
     // $ANTLR start synpred43_InternalSignalDSL
     public final void synpred43_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6285:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
+        // InternalSignalDSL.g:6609:4: ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )
         // InternalSignalDSL.g:
         {
-        if ( (input.LA(1)>=RULE_STRING && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||input.LA(1)==18||(input.LA(1)>=23 && input.LA(1)<=25)||input.LA(1)==30||(input.LA(1)>=34 && input.LA(1)<=35)||input.LA(1)==42||(input.LA(1)>=58 && input.LA(1)<=59)||input.LA(1)==63||input.LA(1)==71||input.LA(1)==73||(input.LA(1)>=77 && input.LA(1)<=78)||(input.LA(1)>=81 && input.LA(1)<=90)||input.LA(1)==92 ) {
+        if ( (input.LA(1)>=RULE_STRING && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=29 && input.LA(1)<=31)||input.LA(1)==36||(input.LA(1)>=40 && input.LA(1)<=41)||input.LA(1)==48||(input.LA(1)>=64 && input.LA(1)<=65)||input.LA(1)==69||input.LA(1)==77||input.LA(1)==79||(input.LA(1)>=82 && input.LA(1)<=84)||(input.LA(1)>=87 && input.LA(1)<=96)||input.LA(1)==98 ) {
             input.consume();
             state.errorRecovery=false;state.failed=false;
         }
@@ -22753,10 +23687,10 @@
 
     // $ANTLR start synpred44_InternalSignalDSL
     public final void synpred44_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6356:6: ( 'catch' )
-        // InternalSignalDSL.g:6356:7: 'catch'
+        // InternalSignalDSL.g:6680:6: ( 'catch' )
+        // InternalSignalDSL.g:6680:7: 'catch'
         {
-        match(input,93,FOLLOW_2); if (state.failed) return ;
+        match(input,99,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -22764,10 +23698,10 @@
 
     // $ANTLR start synpred45_InternalSignalDSL
     public final void synpred45_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6377:7: ( 'finally' )
-        // InternalSignalDSL.g:6377:8: 'finally'
+        // InternalSignalDSL.g:6701:7: ( 'finally' )
+        // InternalSignalDSL.g:6701:8: 'finally'
         {
-        match(input,91,FOLLOW_2); if (state.failed) return ;
+        match(input,97,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -22775,10 +23709,10 @@
 
     // $ANTLR start synpred48_InternalSignalDSL
     public final void synpred48_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6621:5: ( '.' )
-        // InternalSignalDSL.g:6621:6: '.'
+        // InternalSignalDSL.g:6945:5: ( '.' )
+        // InternalSignalDSL.g:6945:6: '.'
         {
-        match(input,67,FOLLOW_2); if (state.failed) return ;
+        match(input,73,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -22786,14 +23720,14 @@
 
     // $ANTLR start synpred49_InternalSignalDSL
     public final void synpred49_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6747:5: ( ( () ruleArrayBrackets ) )
-        // InternalSignalDSL.g:6747:6: ( () ruleArrayBrackets )
+        // InternalSignalDSL.g:7071:5: ( ( () ruleArrayBrackets ) )
+        // InternalSignalDSL.g:7071:6: ( () ruleArrayBrackets )
         {
-        // InternalSignalDSL.g:6747:6: ( () ruleArrayBrackets )
-        // InternalSignalDSL.g:6748:6: () ruleArrayBrackets
+        // InternalSignalDSL.g:7071:6: ( () ruleArrayBrackets )
+        // InternalSignalDSL.g:7072:6: () ruleArrayBrackets
         {
-        // InternalSignalDSL.g:6748:6: ()
-        // InternalSignalDSL.g:6749:6: 
+        // InternalSignalDSL.g:7072:6: ()
+        // InternalSignalDSL.g:7073:6: 
         {
         }
 
@@ -22812,10 +23746,10 @@
 
     // $ANTLR start synpred50_InternalSignalDSL
     public final void synpred50_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:6944:5: ( '<' )
-        // InternalSignalDSL.g:6944:6: '<'
+        // InternalSignalDSL.g:7268:5: ( '<' )
+        // InternalSignalDSL.g:7268:6: '<'
         {
-        match(input,42,FOLLOW_2); if (state.failed) return ;
+        match(input,48,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -22823,18 +23757,18 @@
 
     // $ANTLR start synpred51_InternalSignalDSL
     public final void synpred51_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7000:6: ( ( () '.' ) )
-        // InternalSignalDSL.g:7000:7: ( () '.' )
+        // InternalSignalDSL.g:7324:6: ( ( () '.' ) )
+        // InternalSignalDSL.g:7324:7: ( () '.' )
         {
-        // InternalSignalDSL.g:7000:7: ( () '.' )
-        // InternalSignalDSL.g:7001:7: () '.'
+        // InternalSignalDSL.g:7324:7: ( () '.' )
+        // InternalSignalDSL.g:7325:7: () '.'
         {
-        // InternalSignalDSL.g:7001:7: ()
-        // InternalSignalDSL.g:7002:7: 
+        // InternalSignalDSL.g:7325:7: ()
+        // InternalSignalDSL.g:7326:7: 
         {
         }
 
-        match(input,67,FOLLOW_2); if (state.failed) return ;
+        match(input,73,FOLLOW_2); if (state.failed) return ;
 
         }
 
@@ -22845,10 +23779,10 @@
 
     // $ANTLR start synpred52_InternalSignalDSL
     public final void synpred52_InternalSignalDSL_fragment() throws RecognitionException {   
-        // InternalSignalDSL.g:7038:7: ( '<' )
-        // InternalSignalDSL.g:7038:8: '<'
+        // InternalSignalDSL.g:7362:7: ( '<' )
+        // InternalSignalDSL.g:7362:8: '<'
         {
-        match(input,42,FOLLOW_2); if (state.failed) return ;
+        match(input,48,FOLLOW_2); if (state.failed) return ;
 
         }
     }
@@ -23488,45 +24422,45 @@
     }
 
 
-    protected DFA11 dfa11 = new DFA11(this);
-    protected DFA14 dfa14 = new DFA14(this);
-    protected DFA20 dfa20 = new DFA20(this);
-    protected DFA23 dfa23 = new DFA23(this);
-    protected DFA25 dfa25 = new DFA25(this);
-    protected DFA35 dfa35 = new DFA35(this);
-    protected DFA38 dfa38 = new DFA38(this);
-    protected DFA54 dfa54 = new DFA54(this);
+    protected DFA10 dfa10 = new DFA10(this);
+    protected DFA13 dfa13 = new DFA13(this);
+    protected DFA19 dfa19 = new DFA19(this);
+    protected DFA22 dfa22 = new DFA22(this);
+    protected DFA24 dfa24 = new DFA24(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA37 dfa37 = new DFA37(this);
     protected DFA53 dfa53 = new DFA53(this);
-    protected DFA55 dfa55 = new DFA55(this);
-    protected DFA57 dfa57 = new DFA57(this);
-    protected DFA66 dfa66 = new DFA66(this);
-    protected DFA73 dfa73 = new DFA73(this);
+    protected DFA52 dfa52 = new DFA52(this);
+    protected DFA54 dfa54 = new DFA54(this);
+    protected DFA56 dfa56 = new DFA56(this);
+    protected DFA65 dfa65 = new DFA65(this);
     protected DFA72 dfa72 = new DFA72(this);
-    protected DFA95 dfa95 = new DFA95(this);
+    protected DFA71 dfa71 = new DFA71(this);
     protected DFA94 dfa94 = new DFA94(this);
-    protected DFA96 dfa96 = new DFA96(this);
-    protected DFA100 dfa100 = new DFA100(this);
-    protected DFA103 dfa103 = new DFA103(this);
+    protected DFA93 dfa93 = new DFA93(this);
+    protected DFA95 dfa95 = new DFA95(this);
+    protected DFA99 dfa99 = new DFA99(this);
     protected DFA102 dfa102 = new DFA102(this);
-    protected DFA104 dfa104 = new DFA104(this);
-    protected DFA107 dfa107 = new DFA107(this);
-    protected DFA125 dfa125 = new DFA125(this);
-    protected DFA123 dfa123 = new DFA123(this);
+    protected DFA101 dfa101 = new DFA101(this);
+    protected DFA103 dfa103 = new DFA103(this);
+    protected DFA106 dfa106 = new DFA106(this);
+    protected DFA124 dfa124 = new DFA124(this);
+    protected DFA122 dfa122 = new DFA122(this);
     static final String dfa_1s = "\10\uffff";
     static final String dfa_2s = "\2\uffff\1\5\4\uffff\1\5";
-    static final String dfa_3s = "\1\5\1\uffff\1\15\1\uffff\1\5\2\uffff\1\15";
-    static final String dfa_4s = "\1\33\1\uffff\1\103\1\uffff\1\32\2\uffff\1\103";
+    static final String dfa_3s = "\1\6\1\uffff\1\15\1\uffff\1\6\2\uffff\1\15";
+    static final String dfa_4s = "\1\41\1\uffff\1\111\1\uffff\1\40\2\uffff\1\111";
     static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\3\1\uffff";
     static final String dfa_6s = "\10\uffff}>";
     static final String[] dfa_7s = {
-            "\1\2\22\uffff\1\1\2\uffff\1\3",
+            "\1\2\27\uffff\1\1\2\uffff\1\3",
             "",
-            "\1\5\11\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
+            "\1\5\17\uffff\1\5\4\uffff\1\5\46\uffff\1\4",
             "",
-            "\1\7\24\uffff\1\6",
+            "\1\7\31\uffff\1\6",
             "",
             "",
-            "\1\5\11\uffff\1\5\4\uffff\1\5\46\uffff\1\4"
+            "\1\5\17\uffff\1\5\4\uffff\1\5\46\uffff\1\4"
     };
 
     static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
@@ -23537,11 +24471,11 @@
     static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
     static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
 
-    class DFA11 extends DFA {
+    class DFA10 extends DFA {
 
-        public DFA11(BaseRecognizer recognizer) {
+        public DFA10(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 11;
+            this.decisionNumber = 10;
             this.eot = dfa_1;
             this.eof = dfa_2;
             this.min = dfa_3;
@@ -23551,16 +24485,16 @@
             this.transition = dfa_7;
         }
         public String getDescription() {
-            return "714:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
+            return "1038:3: ( ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) ) | ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) ) )";
         }
     }
     static final String dfa_8s = "\44\uffff";
     static final String dfa_9s = "\1\4\1\0\42\uffff";
-    static final String dfa_10s = "\1\134\1\0\42\uffff";
+    static final String dfa_10s = "\1\142\1\0\42\uffff";
     static final String dfa_11s = "\2\uffff\1\2\37\uffff\1\3\1\1";
     static final String dfa_12s = "\1\uffff\1\0\42\uffff}>";
     static final String[] dfa_13s = {
-            "\1\2\1\1\3\2\5\uffff\1\2\3\uffff\1\2\4\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\2\2\2\uffff\12\2\1\uffff\1\2",
+            "\2\2\1\1\2\2\5\uffff\1\2\16\uffff\3\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\2\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -23605,11 +24539,11 @@
     static final short[] dfa_12 = DFA.unpackEncodedString(dfa_12s);
     static final short[][] dfa_13 = unpackEncodedStringArray(dfa_13s);
 
-    class DFA14 extends DFA {
+    class DFA13 extends DFA {
 
-        public DFA14(BaseRecognizer recognizer) {
+        public DFA13(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 14;
+            this.decisionNumber = 13;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_9;
@@ -23619,17 +24553,17 @@
             this.transition = dfa_13;
         }
         public String getDescription() {
-            return "931:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
+            return "1255:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA14_1 = input.LA(1);
+                        int LA13_1 = input.LA(1);
 
                          
-                        int index14_1 = input.index();
+                        int index13_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred2_InternalSignalDSL()) ) {s = 35;}
@@ -23637,24 +24571,24 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index14_1);
+                        input.seek(index13_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 14, _s, input);
+                new NoViableAltException(getDescription(), 13, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_14s = "\43\uffff";
     static final String dfa_15s = "\1\4\1\0\41\uffff";
-    static final String dfa_16s = "\1\134\1\0\41\uffff";
+    static final String dfa_16s = "\1\142\1\0\41\uffff";
     static final String dfa_17s = "\2\uffff\1\2\37\uffff\1\1";
     static final String dfa_18s = "\1\uffff\1\0\41\uffff}>";
     static final String[] dfa_19s = {
-            "\5\2\5\uffff\1\2\3\uffff\1\2\4\uffff\3\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\2\2\2\uffff\12\2\1\uffff\1\2",
+            "\5\2\5\uffff\1\2\16\uffff\3\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\2\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -23698,11 +24632,11 @@
     static final short[] dfa_18 = DFA.unpackEncodedString(dfa_18s);
     static final short[][] dfa_19 = unpackEncodedStringArray(dfa_19s);
 
-    class DFA20 extends DFA {
+    class DFA19 extends DFA {
 
-        public DFA20(BaseRecognizer recognizer) {
+        public DFA19(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 20;
+            this.decisionNumber = 19;
             this.eot = dfa_14;
             this.eof = dfa_14;
             this.min = dfa_15;
@@ -23712,17 +24646,17 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "1111:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
+            return "1435:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA20_1 = input.LA(1);
+                        int LA19_1 = input.LA(1);
 
                          
-                        int index20_1 = input.index();
+                        int index19_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred5_InternalSignalDSL()) ) {s = 34;}
@@ -23730,23 +24664,23 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index20_1);
+                        input.seek(index19_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 20, _s, input);
+                new NoViableAltException(getDescription(), 19, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA23 extends DFA {
+    class DFA22 extends DFA {
 
-        public DFA23(BaseRecognizer recognizer) {
+        public DFA22(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 23;
+            this.decisionNumber = 22;
             this.eot = dfa_14;
             this.eof = dfa_14;
             this.min = dfa_15;
@@ -23756,17 +24690,17 @@
             this.transition = dfa_19;
         }
         public String getDescription() {
-            return "1253:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+            return "1577:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA23_1 = input.LA(1);
+                        int LA22_1 = input.LA(1);
 
                          
-                        int index23_1 = input.index();
+                        int index22_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred6_InternalSignalDSL()) ) {s = 34;}
@@ -23774,13 +24708,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index23_1);
+                        input.seek(index22_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 23, _s, input);
+                new NoViableAltException(getDescription(), 22, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -23788,11 +24722,11 @@
     static final String dfa_20s = "\12\uffff";
     static final String dfa_21s = "\1\10\11\uffff";
     static final String dfa_22s = "\1\4\7\0\2\uffff";
-    static final String dfa_23s = "\1\135\7\0\2\uffff";
+    static final String dfa_23s = "\1\143\7\0\2\uffff";
     static final String dfa_24s = "\10\uffff\1\2\1\1";
-    static final String dfa_25s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\2\uffff}>";
+    static final String dfa_25s = "\1\uffff\1\0\1\1\1\2\1\3\1\4\1\6\1\5\2\uffff}>";
     static final String[] dfa_26s = {
-            "\5\10\5\uffff\2\10\2\uffff\1\10\4\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\27\10",
+            "\5\10\5\uffff\2\10\10\uffff\1\10\4\uffff\4\10\1\uffff\1\10\1\uffff\3\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\32\10\1\uffff\27\10",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -23812,11 +24746,11 @@
     static final short[] dfa_25 = DFA.unpackEncodedString(dfa_25s);
     static final short[][] dfa_26 = unpackEncodedStringArray(dfa_26s);
 
-    class DFA25 extends DFA {
+    class DFA24 extends DFA {
 
-        public DFA25(BaseRecognizer recognizer) {
+        public DFA24(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 25;
+            this.decisionNumber = 24;
             this.eot = dfa_20;
             this.eof = dfa_21;
             this.min = dfa_22;
@@ -23826,17 +24760,17 @@
             this.transition = dfa_26;
         }
         public String getDescription() {
-            return "1482:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
+            return "1806:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA25_1 = input.LA(1);
+                        int LA24_1 = input.LA(1);
 
                          
-                        int index25_1 = input.index();
+                        int index24_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23844,14 +24778,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_1);
+                        input.seek(index24_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA25_2 = input.LA(1);
+                        int LA24_2 = input.LA(1);
 
                          
-                        int index25_2 = input.index();
+                        int index24_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23859,14 +24793,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_2);
+                        input.seek(index24_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA25_3 = input.LA(1);
+                        int LA24_3 = input.LA(1);
 
                          
-                        int index25_3 = input.index();
+                        int index24_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23874,14 +24808,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_3);
+                        input.seek(index24_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA25_4 = input.LA(1);
+                        int LA24_4 = input.LA(1);
 
                          
-                        int index25_4 = input.index();
+                        int index24_4 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23889,14 +24823,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_4);
+                        input.seek(index24_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA25_5 = input.LA(1);
+                        int LA24_5 = input.LA(1);
 
                          
-                        int index25_5 = input.index();
+                        int index24_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23904,14 +24838,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_5);
+                        input.seek(index24_5);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA25_6 = input.LA(1);
+                        int LA24_7 = input.LA(1);
 
                          
-                        int index25_6 = input.index();
+                        int index24_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23919,14 +24853,14 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_6);
+                        input.seek(index24_7);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA25_7 = input.LA(1);
+                        int LA24_6 = input.LA(1);
 
                          
-                        int index25_7 = input.index();
+                        int index24_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred7_InternalSignalDSL()) ) {s = 9;}
@@ -23934,13 +24868,13 @@
                         else if ( (true) ) {s = 8;}
 
                          
-                        input.seek(index25_7);
+                        input.seek(index24_6);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 25, _s, input);
+                new NoViableAltException(getDescription(), 24, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -23948,11 +24882,11 @@
     static final String dfa_27s = "\13\uffff";
     static final String dfa_28s = "\1\1\12\uffff";
     static final String dfa_29s = "\1\4\1\uffff\10\0\1\uffff";
-    static final String dfa_30s = "\1\135\1\uffff\10\0\1\uffff";
+    static final String dfa_30s = "\1\143\1\uffff\10\0\1\uffff";
     static final String dfa_31s = "\1\uffff\1\2\10\uffff\1\1";
-    static final String dfa_32s = "\2\uffff\1\5\1\2\1\6\1\7\1\4\1\3\1\0\1\1\1\uffff}>";
+    static final String dfa_32s = "\2\uffff\1\4\1\0\1\5\1\6\1\3\1\7\1\1\1\2\1\uffff}>";
     static final String[] dfa_33s = {
-            "\5\1\5\uffff\2\1\2\uffff\1\1\4\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\27\1",
+            "\5\1\5\uffff\2\1\10\uffff\1\1\4\uffff\4\1\1\uffff\1\1\1\uffff\3\1\1\uffff\10\1\1\2\1\3\10\1\1\4\1\5\1\6\1\7\1\10\1\11\14\1\1\uffff\27\1",
             "",
             "\1\uffff",
             "\1\uffff",
@@ -23973,11 +24907,11 @@
     static final short[] dfa_32 = DFA.unpackEncodedString(dfa_32s);
     static final short[][] dfa_33 = unpackEncodedStringArray(dfa_33s);
 
-    class DFA35 extends DFA {
+    class DFA34 extends DFA {
 
-        public DFA35(BaseRecognizer recognizer) {
+        public DFA34(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 35;
+            this.decisionNumber = 34;
             this.eot = dfa_27;
             this.eof = dfa_28;
             this.min = dfa_29;
@@ -23987,17 +24921,17 @@
             this.transition = dfa_33;
         }
         public String getDescription() {
-            return "()* loopback of 2196:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
+            return "()* loopback of 2520:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA35_8 = input.LA(1);
+                        int LA34_3 = input.LA(1);
 
                          
-                        int index35_8 = input.index();
+                        int index34_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24005,14 +24939,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_8);
+                        input.seek(index34_3);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA35_9 = input.LA(1);
+                        int LA34_8 = input.LA(1);
 
                          
-                        int index35_9 = input.index();
+                        int index34_8 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24020,14 +24954,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_9);
+                        input.seek(index34_8);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA35_3 = input.LA(1);
+                        int LA34_9 = input.LA(1);
 
                          
-                        int index35_3 = input.index();
+                        int index34_9 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24035,14 +24969,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_3);
+                        input.seek(index34_9);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA35_7 = input.LA(1);
+                        int LA34_6 = input.LA(1);
 
                          
-                        int index35_7 = input.index();
+                        int index34_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24050,14 +24984,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_7);
+                        input.seek(index34_6);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA35_6 = input.LA(1);
+                        int LA34_2 = input.LA(1);
 
                          
-                        int index35_6 = input.index();
+                        int index34_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24065,14 +24999,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_6);
+                        input.seek(index34_2);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA35_2 = input.LA(1);
+                        int LA34_4 = input.LA(1);
 
                          
-                        int index35_2 = input.index();
+                        int index34_4 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24080,14 +25014,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_2);
+                        input.seek(index34_4);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA35_4 = input.LA(1);
+                        int LA34_5 = input.LA(1);
 
                          
-                        int index35_4 = input.index();
+                        int index34_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24095,14 +25029,14 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_4);
+                        input.seek(index34_5);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA35_5 = input.LA(1);
+                        int LA34_7 = input.LA(1);
 
                          
-                        int index35_5 = input.index();
+                        int index34_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred13_InternalSignalDSL()) ) {s = 10;}
@@ -24110,26 +25044,26 @@
                         else if ( (true) ) {s = 1;}
 
                          
-                        input.seek(index35_5);
+                        input.seek(index34_7);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 35, _s, input);
+                new NoViableAltException(getDescription(), 34, _s, input);
             error(nvae);
             throw nvae;
         }
     }
-    static final String dfa_34s = "\1\52\2\uffff\1\53\7\uffff";
-    static final String dfa_35s = "\1\71\2\uffff\1\66\7\uffff";
-    static final String dfa_36s = "\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 dfa_34s = "\1\60\2\uffff\1\61\7\uffff";
+    static final String dfa_35s = "\1\77\2\uffff\1\74\7\uffff";
+    static final String dfa_36s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\3\1\6";
     static final String dfa_37s = "\13\uffff}>";
     static final String[] dfa_38s = {
             "\1\6\1\3\10\uffff\1\1\1\2\1\4\1\5\1\7\1\10",
             "",
             "",
-            "\1\11\12\uffff\1\12",
+            "\1\12\12\uffff\1\11",
             "",
             "",
             "",
@@ -24144,11 +25078,11 @@
     static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
     static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
 
-    class DFA38 extends DFA {
+    class DFA37 extends DFA {
 
-        public DFA38(BaseRecognizer recognizer) {
+        public DFA37(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 38;
+            this.decisionNumber = 37;
             this.eot = dfa_27;
             this.eof = dfa_27;
             this.min = dfa_34;
@@ -24158,17 +25092,17 @@
             this.transition = dfa_38;
         }
         public String getDescription() {
-            return "2272:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
+            return "2596:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
         }
     }
     static final String dfa_39s = "\116\uffff";
     static final String dfa_40s = "\1\2\115\uffff";
     static final String dfa_41s = "\1\4\1\0\114\uffff";
-    static final String dfa_42s = "\1\135\1\0\114\uffff";
+    static final String dfa_42s = "\1\143\1\0\114\uffff";
     static final String dfa_43s = "\2\uffff\1\2\112\uffff\1\1";
     static final String dfa_44s = "\1\uffff\1\0\114\uffff}>";
     static final String[] dfa_45s = {
-            "\5\2\5\uffff\2\2\2\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\27\2",
+            "\5\2\5\uffff\2\2\10\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\44\2\1\uffff\27\2",
             "\1\uffff",
             "",
             "",
@@ -24256,11 +25190,11 @@
     static final short[] dfa_44 = DFA.unpackEncodedString(dfa_44s);
     static final short[][] dfa_45 = unpackEncodedStringArray(dfa_45s);
 
-    class DFA54 extends DFA {
+    class DFA53 extends DFA {
 
-        public DFA54(BaseRecognizer recognizer) {
+        public DFA53(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 54;
+            this.decisionNumber = 53;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -24270,17 +25204,17 @@
             this.transition = dfa_45;
         }
         public String getDescription() {
-            return "3173:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
+            return "3497:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA54_1 = input.LA(1);
+                        int LA53_1 = input.LA(1);
 
                          
-                        int index54_1 = input.index();
+                        int index53_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred22_InternalSignalDSL()) ) {s = 77;}
@@ -24288,23 +25222,23 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index54_1);
+                        input.seek(index53_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 54, _s, input);
+                new NoViableAltException(getDescription(), 53, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_46s = "\1\4\2\0\41\uffff";
-    static final String dfa_47s = "\1\134\2\0\41\uffff";
+    static final String dfa_47s = "\1\142\2\0\41\uffff";
     static final String dfa_48s = "\3\uffff\2\1\1\2\35\uffff\1\3";
     static final String dfa_49s = "\1\0\1\1\1\2\41\uffff}>";
     static final String[] dfa_50s = {
-            "\1\5\1\1\3\5\5\uffff\1\5\3\uffff\1\5\4\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\2\5\2\uffff\12\5\1\uffff\1\5",
+            "\2\5\1\1\2\5\5\uffff\1\5\16\uffff\3\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\2\uffff\3\5\2\uffff\12\5\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -24347,11 +25281,11 @@
     static final short[] dfa_49 = DFA.unpackEncodedString(dfa_49s);
     static final short[][] dfa_50 = unpackEncodedStringArray(dfa_50s);
 
-    class DFA53 extends DFA {
+    class DFA52 extends DFA {
 
-        public DFA53(BaseRecognizer recognizer) {
+        public DFA52(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 53;
+            this.decisionNumber = 52;
             this.eot = dfa_8;
             this.eof = dfa_8;
             this.min = dfa_46;
@@ -24361,40 +25295,40 @@
             this.transition = dfa_50;
         }
         public String getDescription() {
-            return "3192:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
+            return "3516:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA53_0 = input.LA(1);
+                        int LA52_0 = input.LA(1);
 
                          
-                        int index53_0 = input.index();
+                        int index52_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA53_0==RULE_ID) ) {s = 1;}
+                        if ( (LA52_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA53_0==30) ) {s = 2;}
+                        else if ( (LA52_0==36) ) {s = 2;}
 
-                        else if ( (LA53_0==55) && (synpred23_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA52_0==61) && (synpred23_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA53_0==70) && (synpred23_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA52_0==76) && (synpred23_InternalSignalDSL())) {s = 4;}
 
-                        else if ( (LA53_0==RULE_STRING||(LA53_0>=RULE_HEX && LA53_0<=RULE_DECIMAL)||LA53_0==14||LA53_0==18||(LA53_0>=23 && LA53_0<=25)||(LA53_0>=34 && LA53_0<=35)||LA53_0==42||(LA53_0>=58 && LA53_0<=59)||LA53_0==63||LA53_0==71||LA53_0==73||(LA53_0>=77 && LA53_0<=78)||(LA53_0>=81 && LA53_0<=90)||LA53_0==92) ) {s = 5;}
+                        else if ( ((LA52_0>=RULE_STRING && LA52_0<=RULE_INT)||(LA52_0>=RULE_HEX && LA52_0<=RULE_DECIMAL)||LA52_0==14||(LA52_0>=29 && LA52_0<=31)||(LA52_0>=40 && LA52_0<=41)||LA52_0==48||(LA52_0>=64 && LA52_0<=65)||LA52_0==69||LA52_0==77||LA52_0==79||(LA52_0>=82 && LA52_0<=84)||(LA52_0>=87 && LA52_0<=96)||LA52_0==98) ) {s = 5;}
 
-                        else if ( (LA53_0==32) ) {s = 35;}
+                        else if ( (LA52_0==38) ) {s = 35;}
 
                          
-                        input.seek(index53_0);
+                        input.seek(index52_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA53_1 = input.LA(1);
+                        int LA52_1 = input.LA(1);
 
                          
-                        int index53_1 = input.index();
+                        int index52_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred23_InternalSignalDSL()) ) {s = 4;}
@@ -24402,14 +25336,14 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index53_1);
+                        input.seek(index52_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA53_2 = input.LA(1);
+                        int LA52_2 = input.LA(1);
 
                          
-                        int index53_2 = input.index();
+                        int index52_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred23_InternalSignalDSL()) ) {s = 4;}
@@ -24417,19 +25351,19 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index53_2);
+                        input.seek(index52_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 53, _s, input);
+                new NoViableAltException(getDescription(), 52, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_51s = {
-            "\5\2\5\uffff\2\2\2\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\42\2\1\uffff\27\2",
+            "\5\2\5\uffff\2\2\10\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\42\2\1\uffff\27\2",
             "\1\uffff",
             "",
             "",
@@ -24510,11 +25444,11 @@
     };
     static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
 
-    class DFA55 extends DFA {
+    class DFA54 extends DFA {
 
-        public DFA55(BaseRecognizer recognizer) {
+        public DFA54(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 55;
+            this.decisionNumber = 54;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -24524,17 +25458,17 @@
             this.transition = dfa_51;
         }
         public String getDescription() {
-            return "3290:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
+            return "3614:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA55_1 = input.LA(1);
+                        int LA54_1 = input.LA(1);
 
                          
-                        int index55_1 = input.index();
+                        int index54_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred24_InternalSignalDSL()) ) {s = 77;}
@@ -24542,24 +25476,24 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index55_1);
+                        input.seek(index54_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 55, _s, input);
+                new NoViableAltException(getDescription(), 54, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_52s = "\40\uffff";
     static final String dfa_53s = "\1\4\26\uffff\1\0\10\uffff";
-    static final String dfa_54s = "\1\134\26\uffff\1\0\10\uffff";
+    static final String dfa_54s = "\1\142\26\uffff\1\0\10\uffff";
     static final String dfa_55s = "\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 dfa_56s = "\1\0\26\uffff\1\1\10\uffff}>";
     static final String[] dfa_57s = {
-            "\1\14\1\5\3\14\5\uffff\1\2\3\uffff\1\27\4\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\3\uffff\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
+            "\2\14\1\5\2\14\5\uffff\1\2\16\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\34\uffff\1\26\1\uffff\1\3\2\uffff\1\27\1\30\1\31\2\uffff\2\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
             "",
             "",
             "",
@@ -24600,11 +25534,11 @@
     static final short[] dfa_56 = DFA.unpackEncodedString(dfa_56s);
     static final short[][] dfa_57 = unpackEncodedStringArray(dfa_57s);
 
-    class DFA57 extends DFA {
+    class DFA56 extends DFA {
 
-        public DFA57(BaseRecognizer recognizer) {
+        public DFA56(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 57;
+            this.decisionNumber = 56;
             this.eot = dfa_52;
             this.eof = dfa_52;
             this.min = dfa_53;
@@ -24614,56 +25548,56 @@
             this.transition = dfa_57;
         }
         public String getDescription() {
-            return "3335:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
+            return "3659:2: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA57_0 = input.LA(1);
+                        int LA56_0 = input.LA(1);
 
                          
-                        int index57_0 = input.index();
+                        int index56_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA57_0==83) ) {s = 1;}
+                        if ( (LA56_0==89) ) {s = 1;}
 
-                        else if ( (LA57_0==14) ) {s = 2;}
+                        else if ( (LA56_0==14) ) {s = 2;}
 
-                        else if ( (LA57_0==73) ) {s = 3;}
+                        else if ( (LA56_0==79) ) {s = 3;}
 
-                        else if ( (LA57_0==92) && (synpred25_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA56_0==98) && (synpred25_InternalSignalDSL())) {s = 4;}
 
-                        else if ( (LA57_0==RULE_ID||(LA57_0>=23 && LA57_0<=25)||LA57_0==42||(LA57_0>=81 && LA57_0<=82)) ) {s = 5;}
+                        else if ( (LA56_0==RULE_ID||(LA56_0>=29 && LA56_0<=31)||LA56_0==48||(LA56_0>=87 && LA56_0<=88)) ) {s = 5;}
 
-                        else if ( (LA57_0==RULE_STRING||(LA57_0>=RULE_HEX && LA57_0<=RULE_DECIMAL)||(LA57_0>=34 && LA57_0<=35)||(LA57_0>=84 && LA57_0<=87)) ) {s = 12;}
+                        else if ( ((LA56_0>=RULE_STRING && LA56_0<=RULE_INT)||(LA56_0>=RULE_HEX && LA56_0<=RULE_DECIMAL)||(LA56_0>=40 && LA56_0<=41)||(LA56_0>=90 && LA56_0<=93)) ) {s = 12;}
 
-                        else if ( (LA57_0==71) ) {s = 22;}
+                        else if ( (LA56_0==77) ) {s = 22;}
 
-                        else if ( (LA57_0==18) ) {s = 23;}
+                        else if ( (LA56_0==82) ) {s = 23;}
 
-                        else if ( (LA57_0==77) ) {s = 24;}
+                        else if ( (LA56_0==83) ) {s = 24;}
 
-                        else if ( (LA57_0==78) ) {s = 25;}
+                        else if ( (LA56_0==84) ) {s = 25;}
 
-                        else if ( (LA57_0==88) ) {s = 26;}
+                        else if ( (LA56_0==94) ) {s = 26;}
 
-                        else if ( (LA57_0==89) ) {s = 27;}
+                        else if ( (LA56_0==95) ) {s = 27;}
 
-                        else if ( (LA57_0==90) ) {s = 28;}
+                        else if ( (LA56_0==96) ) {s = 28;}
 
-                        else if ( (LA57_0==30) ) {s = 29;}
+                        else if ( (LA56_0==36) ) {s = 29;}
 
                          
-                        input.seek(index57_0);
+                        input.seek(index56_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA57_23 = input.LA(1);
+                        int LA56_23 = input.LA(1);
 
                          
-                        int index57_23 = input.index();
+                        int index56_23 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred26_InternalSignalDSL()) ) {s = 30;}
@@ -24671,24 +25605,24 @@
                         else if ( (true) ) {s = 31;}
 
                          
-                        input.seek(index57_23);
+                        input.seek(index56_23);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 57, _s, input);
+                new NoViableAltException(getDescription(), 56, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_58s = "\46\uffff";
     static final String dfa_59s = "\1\4\2\0\43\uffff";
-    static final String dfa_60s = "\1\134\2\0\43\uffff";
+    static final String dfa_60s = "\1\142\2\0\43\uffff";
     static final String dfa_61s = "\3\uffff\2\1\1\2\40\uffff";
     static final String dfa_62s = "\1\0\1\1\1\2\43\uffff}>";
     static final String[] dfa_63s = {
-            "\1\5\1\1\3\5\5\uffff\1\5\3\uffff\1\5\4\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\3\uffff\16\5\1\uffff\1\5",
+            "\2\5\1\1\2\5\5\uffff\1\5\16\uffff\3\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\2\5\3\uffff\1\5\6\uffff\1\4\1\5\1\uffff\1\5\2\uffff\17\5\1\uffff\1\5",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -24735,11 +25669,11 @@
     static final short[] dfa_62 = DFA.unpackEncodedString(dfa_62s);
     static final short[][] dfa_63 = unpackEncodedStringArray(dfa_63s);
 
-    class DFA66 extends DFA {
+    class DFA65 extends DFA {
 
-        public DFA66(BaseRecognizer recognizer) {
+        public DFA65(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 66;
+            this.decisionNumber = 65;
             this.eot = dfa_58;
             this.eof = dfa_58;
             this.min = dfa_59;
@@ -24749,38 +25683,38 @@
             this.transition = dfa_63;
         }
         public String getDescription() {
-            return "3827:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
+            return "4151:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA66_0 = input.LA(1);
+                        int LA65_0 = input.LA(1);
 
                          
-                        int index66_0 = input.index();
+                        int index65_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA66_0==RULE_ID) ) {s = 1;}
+                        if ( (LA65_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA66_0==30) ) {s = 2;}
+                        else if ( (LA65_0==36) ) {s = 2;}
 
-                        else if ( (LA66_0==55) && (synpred29_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA65_0==61) && (synpred29_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA66_0==70) && (synpred29_InternalSignalDSL())) {s = 4;}
+                        else if ( (LA65_0==76) && (synpred29_InternalSignalDSL())) {s = 4;}
 
-                        else if ( (LA66_0==RULE_STRING||(LA66_0>=RULE_HEX && LA66_0<=RULE_DECIMAL)||LA66_0==14||LA66_0==18||(LA66_0>=23 && LA66_0<=25)||(LA66_0>=34 && LA66_0<=36)||LA66_0==42||(LA66_0>=58 && LA66_0<=59)||LA66_0==63||LA66_0==71||LA66_0==73||(LA66_0>=77 && LA66_0<=90)||LA66_0==92) ) {s = 5;}
+                        else if ( ((LA65_0>=RULE_STRING && LA65_0<=RULE_INT)||(LA65_0>=RULE_HEX && LA65_0<=RULE_DECIMAL)||LA65_0==14||(LA65_0>=29 && LA65_0<=31)||(LA65_0>=40 && LA65_0<=42)||LA65_0==48||(LA65_0>=64 && LA65_0<=65)||LA65_0==69||LA65_0==77||LA65_0==79||(LA65_0>=82 && LA65_0<=96)||LA65_0==98) ) {s = 5;}
 
                          
-                        input.seek(index66_0);
+                        input.seek(index65_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA66_1 = input.LA(1);
+                        int LA65_1 = input.LA(1);
 
                          
-                        int index66_1 = input.index();
+                        int index65_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred29_InternalSignalDSL()) ) {s = 4;}
@@ -24788,14 +25722,14 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index66_1);
+                        input.seek(index65_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA66_2 = input.LA(1);
+                        int LA65_2 = input.LA(1);
 
                          
-                        int index66_2 = input.index();
+                        int index65_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred29_InternalSignalDSL()) ) {s = 4;}
@@ -24803,19 +25737,19 @@
                         else if ( (true) ) {s = 5;}
 
                          
-                        input.seek(index66_2);
+                        input.seek(index65_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 66, _s, input);
+                new NoViableAltException(getDescription(), 65, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String[] dfa_64s = {
-            "\5\2\5\uffff\1\2\3\uffff\1\2\4\uffff\3\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\3\uffff\2\2\2\uffff\12\2\1\uffff\1\2",
+            "\5\2\5\uffff\1\2\16\uffff\3\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\2\2\3\uffff\1\2\7\uffff\1\2\1\uffff\1\2\2\uffff\3\2\2\uffff\12\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -24853,11 +25787,11 @@
     };
     static final short[][] dfa_64 = unpackEncodedStringArray(dfa_64s);
 
-    class DFA73 extends DFA {
+    class DFA72 extends DFA {
 
-        public DFA73(BaseRecognizer recognizer) {
+        public DFA72(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 73;
+            this.decisionNumber = 72;
             this.eot = dfa_14;
             this.eof = dfa_14;
             this.min = dfa_15;
@@ -24867,17 +25801,17 @@
             this.transition = dfa_64;
         }
         public String getDescription() {
-            return "4293:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
+            return "4617:3: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA73_1 = input.LA(1);
+                        int LA72_1 = input.LA(1);
 
                          
-                        int index73_1 = input.index();
+                        int index72_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred32_InternalSignalDSL()) ) {s = 34;}
@@ -24885,24 +25819,24 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index73_1);
+                        input.seek(index72_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 73, _s, input);
+                new NoViableAltException(getDescription(), 72, _s, input);
             error(nvae);
             throw nvae;
         }
     }
     static final String dfa_65s = "\42\uffff";
     static final String dfa_66s = "\1\4\2\0\37\uffff";
-    static final String dfa_67s = "\1\134\2\0\37\uffff";
+    static final String dfa_67s = "\1\142\2\0\37\uffff";
     static final String dfa_68s = "\3\uffff\1\1\1\2\35\uffff";
     static final String dfa_69s = "\1\0\1\1\1\2\37\uffff}>";
     static final String[] dfa_70s = {
-            "\1\4\1\1\3\4\5\uffff\1\4\3\uffff\1\4\4\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\3\uffff\2\4\2\uffff\12\4\1\uffff\1\4",
+            "\2\4\1\1\2\4\5\uffff\1\4\16\uffff\3\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\2\4\3\uffff\1\4\7\uffff\1\4\1\uffff\1\4\2\uffff\3\4\2\uffff\12\4\1\uffff\1\4",
             "\1\uffff",
             "\1\uffff",
             "",
@@ -24945,11 +25879,11 @@
     static final short[] dfa_69 = DFA.unpackEncodedString(dfa_69s);
     static final short[][] dfa_70 = unpackEncodedStringArray(dfa_70s);
 
-    class DFA72 extends DFA {
+    class DFA71 extends DFA {
 
-        public DFA72(BaseRecognizer recognizer) {
+        public DFA71(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 72;
+            this.decisionNumber = 71;
             this.eot = dfa_65;
             this.eof = dfa_65;
             this.min = dfa_66;
@@ -24959,36 +25893,36 @@
             this.transition = dfa_70;
         }
         public String getDescription() {
-            return "4362:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
+            return "4686:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA72_0 = input.LA(1);
+                        int LA71_0 = input.LA(1);
 
                          
-                        int index72_0 = input.index();
+                        int index71_0 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (LA72_0==RULE_ID) ) {s = 1;}
+                        if ( (LA71_0==RULE_ID) ) {s = 1;}
 
-                        else if ( (LA72_0==30) ) {s = 2;}
+                        else if ( (LA71_0==36) ) {s = 2;}
 
-                        else if ( (LA72_0==55) && (synpred33_InternalSignalDSL())) {s = 3;}
+                        else if ( (LA71_0==61) && (synpred33_InternalSignalDSL())) {s = 3;}
 
-                        else if ( (LA72_0==RULE_STRING||(LA72_0>=RULE_HEX && LA72_0<=RULE_DECIMAL)||LA72_0==14||LA72_0==18||(LA72_0>=23 && LA72_0<=25)||(LA72_0>=34 && LA72_0<=35)||LA72_0==42||(LA72_0>=58 && LA72_0<=59)||LA72_0==63||LA72_0==71||LA72_0==73||(LA72_0>=77 && LA72_0<=78)||(LA72_0>=81 && LA72_0<=90)||LA72_0==92) ) {s = 4;}
+                        else if ( ((LA71_0>=RULE_STRING && LA71_0<=RULE_INT)||(LA71_0>=RULE_HEX && LA71_0<=RULE_DECIMAL)||LA71_0==14||(LA71_0>=29 && LA71_0<=31)||(LA71_0>=40 && LA71_0<=41)||LA71_0==48||(LA71_0>=64 && LA71_0<=65)||LA71_0==69||LA71_0==77||LA71_0==79||(LA71_0>=82 && LA71_0<=84)||(LA71_0>=87 && LA71_0<=96)||LA71_0==98) ) {s = 4;}
 
                          
-                        input.seek(index72_0);
+                        input.seek(index71_0);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA72_1 = input.LA(1);
+                        int LA71_1 = input.LA(1);
 
                          
-                        int index72_1 = input.index();
+                        int index71_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred33_InternalSignalDSL()) ) {s = 3;}
@@ -24996,14 +25930,14 @@
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index72_1);
+                        input.seek(index71_1);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA72_2 = input.LA(1);
+                        int LA71_2 = input.LA(1);
 
                          
-                        int index72_2 = input.index();
+                        int index71_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred33_InternalSignalDSL()) ) {s = 3;}
@@ -25011,13 +25945,139 @@
                         else if ( (true) ) {s = 4;}
 
                          
-                        input.seek(index72_2);
+                        input.seek(index71_2);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 72, _s, input);
+                new NoViableAltException(getDescription(), 71, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA94 extends DFA {
+
+        public DFA94(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 94;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "5815:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA94_1 = input.LA(1);
+
+                         
+                        int index94_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred36_InternalSignalDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index94_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 94, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA93 extends DFA {
+
+        public DFA93(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 93;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_46;
+            this.max = dfa_47;
+            this.accept = dfa_48;
+            this.special = dfa_49;
+            this.transition = dfa_50;
+        }
+        public String getDescription() {
+            return "5834:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA93_0 = input.LA(1);
+
+                         
+                        int index93_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA93_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA93_0==36) ) {s = 2;}
+
+                        else if ( (LA93_0==61) && (synpred37_InternalSignalDSL())) {s = 3;}
+
+                        else if ( (LA93_0==76) && (synpred37_InternalSignalDSL())) {s = 4;}
+
+                        else if ( ((LA93_0>=RULE_STRING && LA93_0<=RULE_INT)||(LA93_0>=RULE_HEX && LA93_0<=RULE_DECIMAL)||LA93_0==14||(LA93_0>=29 && LA93_0<=31)||(LA93_0>=40 && LA93_0<=41)||LA93_0==48||(LA93_0>=64 && LA93_0<=65)||LA93_0==69||LA93_0==77||LA93_0==79||(LA93_0>=82 && LA93_0<=84)||(LA93_0>=87 && LA93_0<=96)||LA93_0==98) ) {s = 5;}
+
+                        else if ( (LA93_0==38) ) {s = 35;}
+
+                         
+                        input.seek(index93_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA93_1 = input.LA(1);
+
+                         
+                        int index93_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalSignalDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index93_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA93_2 = input.LA(1);
+
+                         
+                        int index93_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalSignalDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index93_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 93, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25034,10 +26094,10 @@
             this.max = dfa_42;
             this.accept = dfa_43;
             this.special = dfa_44;
-            this.transition = dfa_45;
+            this.transition = dfa_51;
         }
         public String getDescription() {
-            return "5491:3: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
+            return "5932:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -25050,7 +26110,7 @@
                         int index95_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred36_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred38_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -25066,134 +26126,8 @@
             throw nvae;
         }
     }
-
-    class DFA94 extends DFA {
-
-        public DFA94(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 94;
-            this.eot = dfa_8;
-            this.eof = dfa_8;
-            this.min = dfa_46;
-            this.max = dfa_47;
-            this.accept = dfa_48;
-            this.special = dfa_49;
-            this.transition = dfa_50;
-        }
-        public String getDescription() {
-            return "5510:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA94_0 = input.LA(1);
-
-                         
-                        int index94_0 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA94_0==RULE_ID) ) {s = 1;}
-
-                        else if ( (LA94_0==30) ) {s = 2;}
-
-                        else if ( (LA94_0==55) && (synpred37_InternalSignalDSL())) {s = 3;}
-
-                        else if ( (LA94_0==70) && (synpred37_InternalSignalDSL())) {s = 4;}
-
-                        else if ( (LA94_0==RULE_STRING||(LA94_0>=RULE_HEX && LA94_0<=RULE_DECIMAL)||LA94_0==14||LA94_0==18||(LA94_0>=23 && LA94_0<=25)||(LA94_0>=34 && LA94_0<=35)||LA94_0==42||(LA94_0>=58 && LA94_0<=59)||LA94_0==63||LA94_0==71||LA94_0==73||(LA94_0>=77 && LA94_0<=78)||(LA94_0>=81 && LA94_0<=90)||LA94_0==92) ) {s = 5;}
-
-                        else if ( (LA94_0==32) ) {s = 35;}
-
-                         
-                        input.seek(index94_0);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA94_1 = input.LA(1);
-
-                         
-                        int index94_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred37_InternalSignalDSL()) ) {s = 4;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index94_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA94_2 = input.LA(1);
-
-                         
-                        int index94_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred37_InternalSignalDSL()) ) {s = 4;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index94_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 94, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
-    class DFA96 extends DFA {
-
-        public DFA96(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 96;
-            this.eot = dfa_39;
-            this.eof = dfa_40;
-            this.min = dfa_41;
-            this.max = dfa_42;
-            this.accept = dfa_43;
-            this.special = dfa_44;
-            this.transition = dfa_51;
-        }
-        public String getDescription() {
-            return "5608:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA96_1 = input.LA(1);
-
-                         
-                        int index96_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred38_InternalSignalDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index96_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 96, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
     static final String[] dfa_71s = {
-            "\5\2\5\uffff\2\2\2\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\27\2",
+            "\5\2\5\uffff\2\2\10\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\27\2",
             "\1\uffff",
             "",
             "",
@@ -25274,11 +26208,11 @@
     };
     static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
 
-    class DFA100 extends DFA {
+    class DFA99 extends DFA {
 
-        public DFA100(BaseRecognizer recognizer) {
+        public DFA99(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 100;
+            this.decisionNumber = 99;
             this.eot = dfa_39;
             this.eof = dfa_40;
             this.min = dfa_41;
@@ -25288,17 +26222,17 @@
             this.transition = dfa_71;
         }
         public String getDescription() {
-            return "5767:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
+            return "6091:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA100_1 = input.LA(1);
+                        int LA99_1 = input.LA(1);
 
                          
-                        int index100_1 = input.index();
+                        int index99_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred39_InternalSignalDSL()) ) {s = 77;}
@@ -25306,13 +26240,139 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index100_1);
+                        input.seek(index99_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 100, _s, input);
+                new NoViableAltException(getDescription(), 99, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA102 extends DFA {
+
+        public DFA102(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 102;
+            this.eot = dfa_39;
+            this.eof = dfa_40;
+            this.min = dfa_41;
+            this.max = dfa_42;
+            this.accept = dfa_43;
+            this.special = dfa_44;
+            this.transition = dfa_45;
+        }
+        public String getDescription() {
+            return "6148:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA102_1 = input.LA(1);
+
+                         
+                        int index102_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalSignalDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index102_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 102, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA101 extends DFA {
+
+        public DFA101(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 101;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_46;
+            this.max = dfa_47;
+            this.accept = dfa_48;
+            this.special = dfa_49;
+            this.transition = dfa_50;
+        }
+        public String getDescription() {
+            return "6167:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA101_0 = input.LA(1);
+
+                         
+                        int index101_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA101_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA101_0==36) ) {s = 2;}
+
+                        else if ( (LA101_0==61) && (synpred41_InternalSignalDSL())) {s = 3;}
+
+                        else if ( (LA101_0==76) && (synpred41_InternalSignalDSL())) {s = 4;}
+
+                        else if ( ((LA101_0>=RULE_STRING && LA101_0<=RULE_INT)||(LA101_0>=RULE_HEX && LA101_0<=RULE_DECIMAL)||LA101_0==14||(LA101_0>=29 && LA101_0<=31)||(LA101_0>=40 && LA101_0<=41)||LA101_0==48||(LA101_0>=64 && LA101_0<=65)||LA101_0==69||LA101_0==77||LA101_0==79||(LA101_0>=82 && LA101_0<=84)||(LA101_0>=87 && LA101_0<=96)||LA101_0==98) ) {s = 5;}
+
+                        else if ( (LA101_0==38) ) {s = 35;}
+
+                         
+                        input.seek(index101_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA101_1 = input.LA(1);
+
+                         
+                        int index101_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalSignalDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index101_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA101_2 = input.LA(1);
+
+                         
+                        int index101_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalSignalDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index101_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 101, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -25329,10 +26389,10 @@
             this.max = dfa_42;
             this.accept = dfa_43;
             this.special = dfa_44;
-            this.transition = dfa_45;
+            this.transition = dfa_51;
         }
         public String getDescription() {
-            return "5824:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+            return "6265:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
@@ -25345,7 +26405,7 @@
                         int index103_1 = input.index();
                         input.rewind();
                         s = -1;
-                        if ( (synpred40_InternalSignalDSL()) ) {s = 77;}
+                        if ( (synpred42_InternalSignalDSL()) ) {s = 77;}
 
                         else if ( (true) ) {s = 2;}
 
@@ -25361,139 +26421,13 @@
             throw nvae;
         }
     }
-
-    class DFA102 extends DFA {
-
-        public DFA102(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 102;
-            this.eot = dfa_8;
-            this.eof = dfa_8;
-            this.min = dfa_46;
-            this.max = dfa_47;
-            this.accept = dfa_48;
-            this.special = dfa_49;
-            this.transition = dfa_50;
-        }
-        public String getDescription() {
-            return "5843:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA102_0 = input.LA(1);
-
-                         
-                        int index102_0 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (LA102_0==RULE_ID) ) {s = 1;}
-
-                        else if ( (LA102_0==30) ) {s = 2;}
-
-                        else if ( (LA102_0==55) && (synpred41_InternalSignalDSL())) {s = 3;}
-
-                        else if ( (LA102_0==70) && (synpred41_InternalSignalDSL())) {s = 4;}
-
-                        else if ( (LA102_0==RULE_STRING||(LA102_0>=RULE_HEX && LA102_0<=RULE_DECIMAL)||LA102_0==14||LA102_0==18||(LA102_0>=23 && LA102_0<=25)||(LA102_0>=34 && LA102_0<=35)||LA102_0==42||(LA102_0>=58 && LA102_0<=59)||LA102_0==63||LA102_0==71||LA102_0==73||(LA102_0>=77 && LA102_0<=78)||(LA102_0>=81 && LA102_0<=90)||LA102_0==92) ) {s = 5;}
-
-                        else if ( (LA102_0==32) ) {s = 35;}
-
-                         
-                        input.seek(index102_0);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 1 : 
-                        int LA102_1 = input.LA(1);
-
-                         
-                        int index102_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred41_InternalSignalDSL()) ) {s = 4;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index102_1);
-                        if ( s>=0 ) return s;
-                        break;
-                    case 2 : 
-                        int LA102_2 = input.LA(1);
-
-                         
-                        int index102_2 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred41_InternalSignalDSL()) ) {s = 4;}
-
-                        else if ( (true) ) {s = 5;}
-
-                         
-                        input.seek(index102_2);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 102, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
-
-    class DFA104 extends DFA {
-
-        public DFA104(BaseRecognizer recognizer) {
-            this.recognizer = recognizer;
-            this.decisionNumber = 104;
-            this.eot = dfa_39;
-            this.eof = dfa_40;
-            this.min = dfa_41;
-            this.max = dfa_42;
-            this.accept = dfa_43;
-            this.special = dfa_44;
-            this.transition = dfa_51;
-        }
-        public String getDescription() {
-            return "5941:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
-        }
-        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
-            TokenStream input = (TokenStream)_input;
-        	int _s = s;
-            switch ( s ) {
-                    case 0 : 
-                        int LA104_1 = input.LA(1);
-
-                         
-                        int index104_1 = input.index();
-                        input.rewind();
-                        s = -1;
-                        if ( (synpred42_InternalSignalDSL()) ) {s = 77;}
-
-                        else if ( (true) ) {s = 2;}
-
-                         
-                        input.seek(index104_1);
-                        if ( s>=0 ) return s;
-                        break;
-            }
-            if (state.backtracking>0) {state.failed=true; return -1;}
-            NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 104, _s, input);
-            error(nvae);
-            throw nvae;
-        }
-    }
     static final String dfa_72s = "\1\41\115\uffff";
     static final String dfa_73s = "\1\4\40\0\55\uffff";
-    static final String dfa_74s = "\1\135\40\0\55\uffff";
+    static final String dfa_74s = "\1\143\40\0\55\uffff";
     static final String dfa_75s = "\41\uffff\1\2\53\uffff\1\1";
     static final String dfa_76s = "\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[] dfa_77s = {
-            "\1\27\1\1\1\23\1\24\1\25\5\uffff\1\12\1\41\2\uffff\1\32\4\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\3\41\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
+            "\1\27\1\24\1\1\1\23\1\25\5\uffff\1\12\1\41\10\uffff\1\41\4\uffff\1\4\1\3\1\5\1\41\1\uffff\1\41\1\uffff\1\40\2\41\1\uffff\1\17\1\20\6\41\1\15\17\41\1\10\1\7\3\41\1\6\6\41\1\uffff\1\31\1\41\1\13\2\41\1\32\1\33\1\34\2\41\1\2\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
             "\1\uffff",
             "\1\uffff",
             "\1\uffff",
@@ -25579,11 +26513,11 @@
     static final short[] dfa_76 = DFA.unpackEncodedString(dfa_76s);
     static final short[][] dfa_77 = unpackEncodedStringArray(dfa_77s);
 
-    class DFA107 extends DFA {
+    class DFA106 extends DFA {
 
-        public DFA107(BaseRecognizer recognizer) {
+        public DFA106(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 107;
+            this.decisionNumber = 106;
             this.eot = dfa_39;
             this.eof = dfa_72;
             this.min = dfa_73;
@@ -25593,17 +26527,17 @@
             this.transition = dfa_77;
         }
         public String getDescription() {
-            return "6284:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
+            return "6608:3: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA107_1 = input.LA(1);
+                        int LA106_1 = input.LA(1);
 
                          
-                        int index107_1 = input.index();
+                        int index106_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25611,14 +26545,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_1);
+                        input.seek(index106_1);
                         if ( s>=0 ) return s;
                         break;
                     case 1 : 
-                        int LA107_2 = input.LA(1);
+                        int LA106_2 = input.LA(1);
 
                          
-                        int index107_2 = input.index();
+                        int index106_2 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25626,14 +26560,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_2);
+                        input.seek(index106_2);
                         if ( s>=0 ) return s;
                         break;
                     case 2 : 
-                        int LA107_3 = input.LA(1);
+                        int LA106_3 = input.LA(1);
 
                          
-                        int index107_3 = input.index();
+                        int index106_3 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25641,14 +26575,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_3);
+                        input.seek(index106_3);
                         if ( s>=0 ) return s;
                         break;
                     case 3 : 
-                        int LA107_4 = input.LA(1);
+                        int LA106_4 = input.LA(1);
 
                          
-                        int index107_4 = input.index();
+                        int index106_4 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25656,14 +26590,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_4);
+                        input.seek(index106_4);
                         if ( s>=0 ) return s;
                         break;
                     case 4 : 
-                        int LA107_5 = input.LA(1);
+                        int LA106_5 = input.LA(1);
 
                          
-                        int index107_5 = input.index();
+                        int index106_5 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25671,14 +26605,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_5);
+                        input.seek(index106_5);
                         if ( s>=0 ) return s;
                         break;
                     case 5 : 
-                        int LA107_6 = input.LA(1);
+                        int LA106_6 = input.LA(1);
 
                          
-                        int index107_6 = input.index();
+                        int index106_6 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25686,14 +26620,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_6);
+                        input.seek(index106_6);
                         if ( s>=0 ) return s;
                         break;
                     case 6 : 
-                        int LA107_7 = input.LA(1);
+                        int LA106_7 = input.LA(1);
 
                          
-                        int index107_7 = input.index();
+                        int index106_7 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25701,14 +26635,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_7);
+                        input.seek(index106_7);
                         if ( s>=0 ) return s;
                         break;
                     case 7 : 
-                        int LA107_8 = input.LA(1);
+                        int LA106_8 = input.LA(1);
 
                          
-                        int index107_8 = input.index();
+                        int index106_8 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25716,14 +26650,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_8);
+                        input.seek(index106_8);
                         if ( s>=0 ) return s;
                         break;
                     case 8 : 
-                        int LA107_9 = input.LA(1);
+                        int LA106_9 = input.LA(1);
 
                          
-                        int index107_9 = input.index();
+                        int index106_9 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25731,14 +26665,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_9);
+                        input.seek(index106_9);
                         if ( s>=0 ) return s;
                         break;
                     case 9 : 
-                        int LA107_10 = input.LA(1);
+                        int LA106_10 = input.LA(1);
 
                          
-                        int index107_10 = input.index();
+                        int index106_10 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25746,14 +26680,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_10);
+                        input.seek(index106_10);
                         if ( s>=0 ) return s;
                         break;
                     case 10 : 
-                        int LA107_11 = input.LA(1);
+                        int LA106_11 = input.LA(1);
 
                          
-                        int index107_11 = input.index();
+                        int index106_11 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25761,14 +26695,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_11);
+                        input.seek(index106_11);
                         if ( s>=0 ) return s;
                         break;
                     case 11 : 
-                        int LA107_12 = input.LA(1);
+                        int LA106_12 = input.LA(1);
 
                          
-                        int index107_12 = input.index();
+                        int index106_12 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25776,14 +26710,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_12);
+                        input.seek(index106_12);
                         if ( s>=0 ) return s;
                         break;
                     case 12 : 
-                        int LA107_13 = input.LA(1);
+                        int LA106_13 = input.LA(1);
 
                          
-                        int index107_13 = input.index();
+                        int index106_13 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25791,14 +26725,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_13);
+                        input.seek(index106_13);
                         if ( s>=0 ) return s;
                         break;
                     case 13 : 
-                        int LA107_14 = input.LA(1);
+                        int LA106_14 = input.LA(1);
 
                          
-                        int index107_14 = input.index();
+                        int index106_14 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25806,14 +26740,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_14);
+                        input.seek(index106_14);
                         if ( s>=0 ) return s;
                         break;
                     case 14 : 
-                        int LA107_15 = input.LA(1);
+                        int LA106_15 = input.LA(1);
 
                          
-                        int index107_15 = input.index();
+                        int index106_15 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25821,14 +26755,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_15);
+                        input.seek(index106_15);
                         if ( s>=0 ) return s;
                         break;
                     case 15 : 
-                        int LA107_16 = input.LA(1);
+                        int LA106_16 = input.LA(1);
 
                          
-                        int index107_16 = input.index();
+                        int index106_16 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25836,14 +26770,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_16);
+                        input.seek(index106_16);
                         if ( s>=0 ) return s;
                         break;
                     case 16 : 
-                        int LA107_17 = input.LA(1);
+                        int LA106_17 = input.LA(1);
 
                          
-                        int index107_17 = input.index();
+                        int index106_17 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25851,14 +26785,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_17);
+                        input.seek(index106_17);
                         if ( s>=0 ) return s;
                         break;
                     case 17 : 
-                        int LA107_18 = input.LA(1);
+                        int LA106_18 = input.LA(1);
 
                          
-                        int index107_18 = input.index();
+                        int index106_18 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25866,14 +26800,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_18);
+                        input.seek(index106_18);
                         if ( s>=0 ) return s;
                         break;
                     case 18 : 
-                        int LA107_19 = input.LA(1);
+                        int LA106_19 = input.LA(1);
 
                          
-                        int index107_19 = input.index();
+                        int index106_19 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25881,14 +26815,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_19);
+                        input.seek(index106_19);
                         if ( s>=0 ) return s;
                         break;
                     case 19 : 
-                        int LA107_20 = input.LA(1);
+                        int LA106_20 = input.LA(1);
 
                          
-                        int index107_20 = input.index();
+                        int index106_20 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25896,14 +26830,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_20);
+                        input.seek(index106_20);
                         if ( s>=0 ) return s;
                         break;
                     case 20 : 
-                        int LA107_21 = input.LA(1);
+                        int LA106_21 = input.LA(1);
 
                          
-                        int index107_21 = input.index();
+                        int index106_21 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25911,14 +26845,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_21);
+                        input.seek(index106_21);
                         if ( s>=0 ) return s;
                         break;
                     case 21 : 
-                        int LA107_22 = input.LA(1);
+                        int LA106_22 = input.LA(1);
 
                          
-                        int index107_22 = input.index();
+                        int index106_22 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25926,14 +26860,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_22);
+                        input.seek(index106_22);
                         if ( s>=0 ) return s;
                         break;
                     case 22 : 
-                        int LA107_23 = input.LA(1);
+                        int LA106_23 = input.LA(1);
 
                          
-                        int index107_23 = input.index();
+                        int index106_23 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25941,14 +26875,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_23);
+                        input.seek(index106_23);
                         if ( s>=0 ) return s;
                         break;
                     case 23 : 
-                        int LA107_24 = input.LA(1);
+                        int LA106_24 = input.LA(1);
 
                          
-                        int index107_24 = input.index();
+                        int index106_24 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25956,14 +26890,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_24);
+                        input.seek(index106_24);
                         if ( s>=0 ) return s;
                         break;
                     case 24 : 
-                        int LA107_25 = input.LA(1);
+                        int LA106_25 = input.LA(1);
 
                          
-                        int index107_25 = input.index();
+                        int index106_25 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25971,14 +26905,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_25);
+                        input.seek(index106_25);
                         if ( s>=0 ) return s;
                         break;
                     case 25 : 
-                        int LA107_26 = input.LA(1);
+                        int LA106_26 = input.LA(1);
 
                          
-                        int index107_26 = input.index();
+                        int index106_26 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -25986,14 +26920,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_26);
+                        input.seek(index106_26);
                         if ( s>=0 ) return s;
                         break;
                     case 26 : 
-                        int LA107_27 = input.LA(1);
+                        int LA106_27 = input.LA(1);
 
                          
-                        int index107_27 = input.index();
+                        int index106_27 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26001,14 +26935,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_27);
+                        input.seek(index106_27);
                         if ( s>=0 ) return s;
                         break;
                     case 27 : 
-                        int LA107_28 = input.LA(1);
+                        int LA106_28 = input.LA(1);
 
                          
-                        int index107_28 = input.index();
+                        int index106_28 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26016,14 +26950,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_28);
+                        input.seek(index106_28);
                         if ( s>=0 ) return s;
                         break;
                     case 28 : 
-                        int LA107_29 = input.LA(1);
+                        int LA106_29 = input.LA(1);
 
                          
-                        int index107_29 = input.index();
+                        int index106_29 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26031,14 +26965,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_29);
+                        input.seek(index106_29);
                         if ( s>=0 ) return s;
                         break;
                     case 29 : 
-                        int LA107_30 = input.LA(1);
+                        int LA106_30 = input.LA(1);
 
                          
-                        int index107_30 = input.index();
+                        int index106_30 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26046,14 +26980,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_30);
+                        input.seek(index106_30);
                         if ( s>=0 ) return s;
                         break;
                     case 30 : 
-                        int LA107_31 = input.LA(1);
+                        int LA106_31 = input.LA(1);
 
                          
-                        int index107_31 = input.index();
+                        int index106_31 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26061,14 +26995,14 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_31);
+                        input.seek(index106_31);
                         if ( s>=0 ) return s;
                         break;
                     case 31 : 
-                        int LA107_32 = input.LA(1);
+                        int LA106_32 = input.LA(1);
 
                          
-                        int index107_32 = input.index();
+                        int index106_32 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred43_InternalSignalDSL()) ) {s = 77;}
@@ -26076,13 +27010,13 @@
                         else if ( (true) ) {s = 33;}
 
                          
-                        input.seek(index107_32);
+                        input.seek(index106_32);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 107, _s, input);
+                new NoViableAltException(getDescription(), 106, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -26090,11 +27024,11 @@
     static final String dfa_78s = "\117\uffff";
     static final String dfa_79s = "\1\2\116\uffff";
     static final String dfa_80s = "\1\4\1\0\115\uffff";
-    static final String dfa_81s = "\1\137\1\0\115\uffff";
+    static final String dfa_81s = "\1\145\1\0\115\uffff";
     static final String dfa_82s = "\2\uffff\1\2\113\uffff\1\1";
     static final String dfa_83s = "\1\uffff\1\0\115\uffff}>";
     static final String[] dfa_84s = {
-            "\5\2\5\uffff\2\2\2\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\27\2\1\uffff\1\2",
+            "\5\2\5\uffff\2\2\10\uffff\1\2\4\uffff\4\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\33\2\1\uffff\27\2\1\uffff\1\2",
             "\1\uffff",
             "",
             "",
@@ -26183,11 +27117,11 @@
     static final short[] dfa_83 = DFA.unpackEncodedString(dfa_83s);
     static final short[][] dfa_84 = unpackEncodedStringArray(dfa_84s);
 
-    class DFA125 extends DFA {
+    class DFA124 extends DFA {
 
-        public DFA125(BaseRecognizer recognizer) {
+        public DFA124(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 125;
+            this.decisionNumber = 124;
             this.eot = dfa_78;
             this.eof = dfa_79;
             this.min = dfa_80;
@@ -26197,17 +27131,17 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "6942:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
+            return "7266:3: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA125_1 = input.LA(1);
+                        int LA124_1 = input.LA(1);
 
                          
-                        int index125_1 = input.index();
+                        int index124_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred50_InternalSignalDSL()) ) {s = 78;}
@@ -26215,23 +27149,23 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index125_1);
+                        input.seek(index124_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 125, _s, input);
+                new NoViableAltException(getDescription(), 124, _s, input);
             error(nvae);
             throw nvae;
         }
     }
 
-    class DFA123 extends DFA {
+    class DFA122 extends DFA {
 
-        public DFA123(BaseRecognizer recognizer) {
+        public DFA122(BaseRecognizer recognizer) {
             this.recognizer = recognizer;
-            this.decisionNumber = 123;
+            this.decisionNumber = 122;
             this.eot = dfa_78;
             this.eof = dfa_79;
             this.min = dfa_80;
@@ -26241,17 +27175,17 @@
             this.transition = dfa_84;
         }
         public String getDescription() {
-            return "7036:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
+            return "7360:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
         }
         public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
             TokenStream input = (TokenStream)_input;
         	int _s = s;
             switch ( s ) {
                     case 0 : 
-                        int LA123_1 = input.LA(1);
+                        int LA122_1 = input.LA(1);
 
                          
-                        int index123_1 = input.index();
+                        int index122_1 = input.index();
                         input.rewind();
                         s = -1;
                         if ( (synpred52_InternalSignalDSL()) ) {s = 78;}
@@ -26259,13 +27193,13 @@
                         else if ( (true) ) {s = 2;}
 
                          
-                        input.seek(index123_1);
+                        input.seek(index122_1);
                         if ( s>=0 ) return s;
                         break;
             }
             if (state.backtracking>0) {state.failed=true; return -1;}
             NoViableAltException nvae =
-                new NoViableAltException(getDescription(), 123, _s, input);
+                new NoViableAltException(getDescription(), 122, _s, input);
             error(nvae);
             throw nvae;
         }
@@ -26274,104 +27208,103 @@
 
     public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
     public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
-    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000002002L});
-    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000040L});
     public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000004002L});
     public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000018000L});
     public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000020000L});
     public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000010L});
-    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000040000L});
-    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000000L,0x0000000C00000000L});
-    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000004000L});
-    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000088000L});
-    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x0000003000000000L});
-    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000200000L,0x0000000300000000L});
-    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000100000L,0x000000C000000000L});
-    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000100000L});
-    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000008000L,0x0000000300000000L});
-    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000400000L});
-    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000009000020L});
-    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000002000020L});
-    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000004000020L});
-    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000010000002L});
-    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000040000002L});
-    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x8C00040D638441F0L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000180000000L});
-    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000100000000L});
-    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000200000000L});
-    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x8C00040C638441F0L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000800000000L});
-    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x8C00041C638441F0L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000001080000000L});
-    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000080000002L});
-    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x00000FE000000002L});
-    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000040000000000L});
-    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000180000000000L});
-    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000100000000000L});
-    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000200000000002L});
-    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000400000000002L});
-    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0007800000000002L});
-    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x00081C0000000002L});
-    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0080000040000020L});
-    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x03F00C0000000002L});
-    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0040000000000000L});
-    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000080000000000L});
-    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0080040000000000L});
-    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0C00000000000002L});
-    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x7000000004000002L});
-    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
-    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000006L});
-    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000038L});
-    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000003800020L,0x0000000000020000L});
-    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000040003800020L,0x0000000000060000L});
-    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0080000040000020L,0x0000000040000000L});
-    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000080080000000L});
-    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000840000002L,0x0000000000000038L});
-    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x8C80040D638441F0L,0x0000000017FE62C0L});
-    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000800000002L,0x0000000000000038L});
-    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x8C00040C6384C1F0L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000080008000L});
-    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x8C80041C638441F0L,0x0000000017FFE2C0L});
-    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000080000000L,0x0000000000000040L});
-    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x8C00041C638441F0L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000001000000000L});
-    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x8C00040C738441F2L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x8C00040C638441F2L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000040000000L});
-    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
-    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x8C80040C638441F0L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x00800000C0008020L,0x0000000000001C00L});
-    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000008000L});
-    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000080000000L,0x0000000000001400L});
-    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000080000000L,0x0000000000000400L});
-    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x8C00040C738441F0L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000090000000L});
-    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x8C00040C638441F0L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x8C00040C738441F0L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000010000000L});
-    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
-    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x8C00040C6384C1F0L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x8C00040C7384C1F0L,0x0000000017FFE280L});
-    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000200000002L});
-    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000840000002L});
-    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000800000002L});
-    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000040840000002L});
-    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000900000000L});
-    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x8C00040C638441F2L,0x0000000017FE6280L});
-    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000000L,0x0000000028000000L});
-    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000002L,0x0000000028000000L});
-    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000180L});
-    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0080000140000020L});
-    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0080000000000000L});
-    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000040000000002L});
-    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000040000000002L,0x0000000000000008L});
-    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000000000060000L});
-    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
-    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
-    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000004000000L});
-    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000800002L});
-    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000022L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000048000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x000003C000000000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000180000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x000000000AE00000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000001000000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0001FC0000000000L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000010000000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000240000040L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000080000040L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000100000040L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000400000002L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x00010358E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000006000000000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000004000000000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000008000000000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x00010318E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000020000000000L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x00010718E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000042000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000002000000002L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0003F80000000002L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0001000000000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0006000000000000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0008000000000002L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0010000000000002L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x01E0000000000002L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0207000000000002L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x2000001000000040L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0xFC03000000000002L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x1000000000000000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x2001000000000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000003L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000100000002L,0x000000000000001CL});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000040L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000180L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x00000000E0000040L,0x0000000000800000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x00010000E0000040L,0x0000000001800000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x2000001000000040L,0x0000001000000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0002002000000000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000021000000002L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x20010358E00041F0L,0x00000005FF9CB023L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000020000000002L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x00010318E000C1F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000002000008000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x20010718E00041F0L,0x00000005FFFCB023L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000002000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x00010718E00041F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0001031CE00041F2L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x00010318E00041F2L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x20010318E00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x2000003001008040L,0x0000000000030000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000002001000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000002001000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0001031CE00041F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000002400000000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x00010318E00041F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0001031CE00041F0L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000400000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x00010318E000C1F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0001031CE000C1F0L,0x00000005FFFCA023L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000008000000002L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000021000000002L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000020000000002L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0001021000000002L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000024000000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x00010318E00041F2L,0x00000005FF9CA023L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000000000000000L,0x0000000A00000000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000002L,0x0000000A00000000L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000120L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x2000005000000040L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x2000000000000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0001000000000002L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0001000000000002L,0x0000000000000200L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000002L,0x0000000001800000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000100000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000020000002L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000042L});
 
 }
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/scoping/AbstractSignalDSLScopeProvider.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/scoping/AbstractSignalDSLScopeProvider.java
index 507d390..854695e 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/scoping/AbstractSignalDSLScopeProvider.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/scoping/AbstractSignalDSLScopeProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java
index 7eb9ef4..4978690 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSemanticSequencer.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -23,14 +25,19 @@
 import org.eclipse.osbp.xtext.oxtype.oxtype.OXImportDeclaration;
 import org.eclipse.osbp.xtext.oxtype.oxtype.OXtypePackage;
 import org.eclipse.osbp.xtext.oxtype.serializer.OXtypeSemanticSequencer;
-import org.eclipse.osbp.xtext.signal.ListTransfer;
+import org.eclipse.osbp.xtext.signal.CronScheduler;
+import org.eclipse.osbp.xtext.signal.DailyScheduler;
+import org.eclipse.osbp.xtext.signal.HourlyScheduler;
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
 import org.eclipse.osbp.xtext.signal.SignalModel;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.SingleTransfer;
+import org.eclipse.osbp.xtext.signal.TriggerFile;
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
 import org.eclipse.osbp.xtext.signal.services.SignalDSLGrammarAccess;
 import org.eclipse.xtext.Action;
 import org.eclipse.xtext.Parameter;
@@ -106,8 +113,17 @@
 			}
 		else if (epackage == SignalDSLPackage.eINSTANCE)
 			switch (semanticObject.eClass().getClassifierID()) {
-			case SignalDSLPackage.LIST_TRANSFER:
-				sequence_ListTransfer(context, (ListTransfer) semanticObject); 
+			case SignalDSLPackage.CRON_SCHEDULER:
+				sequence_CronScheduler(context, (CronScheduler) semanticObject); 
+				return; 
+			case SignalDSLPackage.DAILY_SCHEDULER:
+				sequence_DailyScheduler(context, (DailyScheduler) semanticObject); 
+				return; 
+			case SignalDSLPackage.HOURLY_SCHEDULER:
+				sequence_HourlyScheduler(context, (HourlyScheduler) semanticObject); 
+				return; 
+			case SignalDSLPackage.MONTHLY_SCHEDULER:
+				sequence_MonthlyScheduler(context, (MonthlyScheduler) semanticObject); 
 				return; 
 			case SignalDSLPackage.SIGNAL_DATAINTERCHANGE:
 				sequence_SignalDatainterchange(context, (SignalDatainterchange) semanticObject); 
@@ -121,11 +137,17 @@
 			case SignalDSLPackage.SIGNAL_PACKAGE:
 				sequence_SignalPackage(context, (SignalPackage) semanticObject); 
 				return; 
+			case SignalDSLPackage.SIGNAL_SCHEDULER:
+				sequence_SignalScheduler(context, (SignalScheduler) semanticObject); 
+				return; 
 			case SignalDSLPackage.SIGNAL_WATCHER:
 				sequence_SignalWatcher(context, (SignalWatcher) semanticObject); 
 				return; 
-			case SignalDSLPackage.SINGLE_TRANSFER:
-				sequence_SingleTransfer(context, (SingleTransfer) semanticObject); 
+			case SignalDSLPackage.TRIGGER_FILE:
+				sequence_TriggerFile(context, (TriggerFile) semanticObject); 
+				return; 
+			case SignalDSLPackage.WEEKLY_SCHEDULER:
+				sequence_WeeklyScheduler(context, (WeeklyScheduler) semanticObject); 
 				return; 
 			}
 		else if (epackage == TypesPackage.eINSTANCE)
@@ -431,14 +453,86 @@
 	
 	/**
 	 * Contexts:
-	 *     DataTransfer returns ListTransfer
-	 *     ListTransfer returns ListTransfer
+	 *     Scheduler returns CronScheduler
+	 *     CronScheduler returns CronScheduler
 	 *
 	 * Constraint:
-	 *     interchanges+=SignalDatainterchange*
+	 *     expression=STRING
 	 */
-	protected void sequence_ListTransfer(ISerializationContext context, ListTransfer semanticObject) {
-		genericSequencer.createSequence(context, semanticObject);
+	protected void sequence_CronScheduler(ISerializationContext context, CronScheduler semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getCronSchedulerAccess().getExpressionSTRINGTerminalRuleCall_1_0(), semanticObject.getExpression());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Scheduler returns DailyScheduler
+	 *     DailyScheduler returns DailyScheduler
+	 *
+	 * Constraint:
+	 *     (hour=INT minute=INT)
+	 */
+	protected void sequence_DailyScheduler(ISerializationContext context, DailyScheduler semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.DAILY_SCHEDULER__HOUR) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.DAILY_SCHEDULER__HOUR));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.DAILY_SCHEDULER__MINUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.DAILY_SCHEDULER__MINUTE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getDailySchedulerAccess().getHourINTTerminalRuleCall_1_0(), semanticObject.getHour());
+		feeder.accept(grammarAccess.getDailySchedulerAccess().getMinuteINTTerminalRuleCall_3_0(), semanticObject.getMinute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Scheduler returns HourlyScheduler
+	 *     HourlyScheduler returns HourlyScheduler
+	 *
+	 * Constraint:
+	 *     minute=INT
+	 */
+	protected void sequence_HourlyScheduler(ISerializationContext context, HourlyScheduler semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.HOURLY_SCHEDULER__MINUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.HOURLY_SCHEDULER__MINUTE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getHourlySchedulerAccess().getMinuteINTTerminalRuleCall_1_0(), semanticObject.getMinute());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Scheduler returns MonthlyScheduler
+	 *     MonthlyScheduler returns MonthlyScheduler
+	 *
+	 * Constraint:
+	 *     (dayofmonth=INT hour=INT minute=INT)
+	 */
+	protected void sequence_MonthlyScheduler(ISerializationContext context, MonthlyScheduler semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.MONTHLY_SCHEDULER__DAYOFMONTH) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.MONTHLY_SCHEDULER__DAYOFMONTH));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.MONTHLY_SCHEDULER__HOUR) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.MONTHLY_SCHEDULER__HOUR));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.MONTHLY_SCHEDULER__MINUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.MONTHLY_SCHEDULER__MINUTE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getMonthlySchedulerAccess().getDayofmonthINTTerminalRuleCall_1_0(), semanticObject.getDayofmonth());
+		feeder.accept(grammarAccess.getMonthlySchedulerAccess().getHourINTTerminalRuleCall_3_0(), semanticObject.getHour());
+		feeder.accept(grammarAccess.getMonthlySchedulerAccess().getMinuteINTTerminalRuleCall_5_0(), semanticObject.getMinute());
+		feeder.finish();
 	}
 	
 	
@@ -472,7 +566,7 @@
 	 *     SignalHandler returns SignalHandler
 	 *
 	 * Constraint:
-	 *     (name=TRANSLATABLEID actionType=SignalHandlerTypeEnum data=DataTransfer executiontype=SignalExecutionTypeEnum? filemask=STRING)
+	 *     (name=TRANSLATABLEID interchanges+=SignalDatainterchange* executiontype=SignalExecutionTypeEnum triggerpolicy=TriggerPolicy)
 	 */
 	protected void sequence_SignalHandler(ISerializationContext context, SignalHandler semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
@@ -484,7 +578,7 @@
 	 *     SignalModel returns SignalModel
 	 *
 	 * Constraint:
-	 *     ((importSection=XImportSection packages+=SignalPackage+) | packages+=SignalPackage+)?
+	 *     (importSection=XImportSection? packages=SignalPackage)
 	 */
 	protected void sequence_SignalModel(ISerializationContext context, SignalModel semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
@@ -505,10 +599,29 @@
 	
 	/**
 	 * Contexts:
+	 *     TriggerPolicy returns SignalScheduler
+	 *     SignalScheduler returns SignalScheduler
+	 *
+	 * Constraint:
+	 *     scheduler=Scheduler
+	 */
+	protected void sequence_SignalScheduler(ISerializationContext context, SignalScheduler semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SIGNAL_SCHEDULER__SCHEDULER) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SIGNAL_SCHEDULER__SCHEDULER));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getSignalSchedulerAccess().getSchedulerSchedulerParserRuleCall_1_0(), semanticObject.getScheduler());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
 	 *     SignalWatcher returns SignalWatcher
 	 *
 	 * Constraint:
-	 *     (name=TRANSLATABLEID directory=STRING signal=SignalTypeEnum handlers+=SignalHandler*)
+	 *     (name=TRANSLATABLEID directory=STRING handlers+=SignalHandler*)
 	 */
 	protected void sequence_SignalWatcher(ISerializationContext context, SignalWatcher semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
@@ -517,19 +630,44 @@
 	
 	/**
 	 * Contexts:
-	 *     DataTransfer returns SingleTransfer
-	 *     SingleTransfer returns SingleTransfer
+	 *     TriggerPolicy returns TriggerFile
+	 *     TriggerFile returns TriggerFile
 	 *
 	 * Constraint:
-	 *     interchange=SignalDatainterchange
+	 *     filemask=STRING
 	 */
-	protected void sequence_SingleTransfer(ISerializationContext context, SingleTransfer semanticObject) {
+	protected void sequence_TriggerFile(ISerializationContext context, TriggerFile semanticObject) {
 		if (errorAcceptor != null) {
-			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.SINGLE_TRANSFER__INTERCHANGE) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.SINGLE_TRANSFER__INTERCHANGE));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK));
 		}
 		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
-		feeder.accept(grammarAccess.getSingleTransferAccess().getInterchangeSignalDatainterchangeParserRuleCall_0(), semanticObject.getInterchange());
+		feeder.accept(grammarAccess.getTriggerFileAccess().getFilemaskSTRINGTerminalRuleCall_1_0(), semanticObject.getFilemask());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     Scheduler returns WeeklyScheduler
+	 *     WeeklyScheduler returns WeeklyScheduler
+	 *
+	 * Constraint:
+	 *     (dayofweek=DayOfWeekEnum hour=INT minute=INT)
+	 */
+	protected void sequence_WeeklyScheduler(ISerializationContext context, WeeklyScheduler semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WEEKLY_SCHEDULER__DAYOFWEEK) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WEEKLY_SCHEDULER__DAYOFWEEK));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WEEKLY_SCHEDULER__HOUR) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WEEKLY_SCHEDULER__HOUR));
+			if (transientValues.isValueTransient(semanticObject, SignalDSLPackage.Literals.WEEKLY_SCHEDULER__MINUTE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, SignalDSLPackage.Literals.WEEKLY_SCHEDULER__MINUTE));
+		}
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getWeeklySchedulerAccess().getDayofweekDayOfWeekEnumEnumRuleCall_1_0(), semanticObject.getDayofweek());
+		feeder.accept(grammarAccess.getWeeklySchedulerAccess().getHourINTTerminalRuleCall_3_0(), semanticObject.getHour());
+		feeder.accept(grammarAccess.getWeeklySchedulerAccess().getMinuteINTTerminalRuleCall_5_0(), semanticObject.getMinute());
 		feeder.finish();
 	}
 	
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSyntacticSequencer.java
index a53cac9..20f09fb 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSyntacticSequencer.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/serializer/SignalDSLSyntacticSequencer.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java
index f3795a3..2896494 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/services/SignalDSLGrammarAccess.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -53,10 +55,10 @@
 		
 		//SignalModel:
 		//	importSection=XImportSection?
-		//	packages+=SignalPackage*;
+		//	packages=SignalPackage;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//importSection=XImportSection? packages+=SignalPackage*
+		//importSection=XImportSection? packages=SignalPackage
 		public Group getGroup() { return cGroup; }
 		
 		//importSection=XImportSection?
@@ -65,7 +67,7 @@
 		//XImportSection
 		public RuleCall getImportSectionXImportSectionParserRuleCall_0_0() { return cImportSectionXImportSectionParserRuleCall_0_0; }
 		
-		//packages+=SignalPackage*
+		//packages=SignalPackage
 		public Assignment getPackagesAssignment_1() { return cPackagesAssignment_1; }
 		
 		//SignalPackage
@@ -128,24 +130,21 @@
 		private final Keyword cDirectoryKeyword_3 = (Keyword)cGroup.eContents().get(3);
 		private final Assignment cDirectoryAssignment_4 = (Assignment)cGroup.eContents().get(4);
 		private final RuleCall cDirectorySTRINGTerminalRuleCall_4_0 = (RuleCall)cDirectoryAssignment_4.eContents().get(0);
-		private final Keyword cForKeyword_5 = (Keyword)cGroup.eContents().get(5);
-		private final Assignment cSignalAssignment_6 = (Assignment)cGroup.eContents().get(6);
-		private final RuleCall cSignalSignalTypeEnumEnumRuleCall_6_0 = (RuleCall)cSignalAssignment_6.eContents().get(0);
-		private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
-		private final Assignment cHandlersAssignment_8 = (Assignment)cGroup.eContents().get(8);
-		private final RuleCall cHandlersSignalHandlerParserRuleCall_8_0 = (RuleCall)cHandlersAssignment_8.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_9 = (Keyword)cGroup.eContents().get(9);
+		private final Keyword cLeftCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cHandlersAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cHandlersSignalHandlerParserRuleCall_6_0 = (RuleCall)cHandlersAssignment_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
 		//SignalWatcher:
 		//	{SignalWatcher}
 		//	'watcher' name=TRANSLATABLEID
 		//	'directory' directory=STRING
-		//	'for' signal=SignalTypeEnum
-		//	'{' handlers+=SignalHandler* '}';
+		//	'{'
+		//	handlers+=SignalHandler*
+		//	'}';
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{SignalWatcher} 'watcher' name=TRANSLATABLEID 'directory' directory=STRING 'for' signal=SignalTypeEnum '{'
-		//handlers+=SignalHandler* '}'
+		//{SignalWatcher} 'watcher' name=TRANSLATABLEID 'directory' directory=STRING '{' handlers+=SignalHandler* '}'
 		public Group getGroup() { return cGroup; }
 		
 		//{SignalWatcher}
@@ -169,26 +168,17 @@
 		//STRING
 		public RuleCall getDirectorySTRINGTerminalRuleCall_4_0() { return cDirectorySTRINGTerminalRuleCall_4_0; }
 		
-		//'for'
-		public Keyword getForKeyword_5() { return cForKeyword_5; }
-		
-		//signal=SignalTypeEnum
-		public Assignment getSignalAssignment_6() { return cSignalAssignment_6; }
-		
-		//SignalTypeEnum
-		public RuleCall getSignalSignalTypeEnumEnumRuleCall_6_0() { return cSignalSignalTypeEnumEnumRuleCall_6_0; }
-		
 		//'{'
-		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
+		public Keyword getLeftCurlyBracketKeyword_5() { return cLeftCurlyBracketKeyword_5; }
 		
 		//handlers+=SignalHandler*
-		public Assignment getHandlersAssignment_8() { return cHandlersAssignment_8; }
+		public Assignment getHandlersAssignment_6() { return cHandlersAssignment_6; }
 		
 		//SignalHandler
-		public RuleCall getHandlersSignalHandlerParserRuleCall_8_0() { return cHandlersSignalHandlerParserRuleCall_8_0; }
+		public RuleCall getHandlersSignalHandlerParserRuleCall_6_0() { return cHandlersSignalHandlerParserRuleCall_6_0; }
 		
 		//'}'
-		public Keyword getRightCurlyBracketKeyword_9() { return cRightCurlyBracketKeyword_9; }
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
 	}
 	public class SignalHandlerElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandler");
@@ -197,27 +187,23 @@
 		private final Keyword cHandlerKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
 		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
-		private final Assignment cActionTypeAssignment_3 = (Assignment)cGroup.eContents().get(3);
-		private final RuleCall cActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0 = (RuleCall)cActionTypeAssignment_3.eContents().get(0);
-		private final Assignment cDataAssignment_4 = (Assignment)cGroup.eContents().get(4);
-		private final RuleCall cDataDataTransferParserRuleCall_4_0 = (RuleCall)cDataAssignment_4.eContents().get(0);
-		private final Assignment cExecutiontypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
-		private final RuleCall cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0 = (RuleCall)cExecutiontypeAssignment_5.eContents().get(0);
-		private final Keyword cForFileMaskKeyword_6 = (Keyword)cGroup.eContents().get(6);
-		private final Assignment cFilemaskAssignment_7 = (Assignment)cGroup.eContents().get(7);
-		private final RuleCall cFilemaskSTRINGTerminalRuleCall_7_0 = (RuleCall)cFilemaskAssignment_7.eContents().get(0);
+		private final Assignment cInterchangesAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cInterchangesSignalDatainterchangeParserRuleCall_3_0 = (RuleCall)cInterchangesAssignment_3.eContents().get(0);
+		private final Assignment cExecutiontypeAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0 = (RuleCall)cExecutiontypeAssignment_4.eContents().get(0);
+		private final Assignment cTriggerpolicyAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cTriggerpolicyTriggerPolicyParserRuleCall_5_0 = (RuleCall)cTriggerpolicyAssignment_5.eContents().get(0);
 		
 		//SignalHandler:
 		//	{SignalHandler}
 		//	'handler' name=TRANSLATABLEID
-		//	actionType=SignalHandlerTypeEnum
-		//	data=DataTransfer
-		//	executiontype=SignalExecutionTypeEnum?
-		//	'forFileMask' filemask=STRING;
+		//	interchanges+=SignalDatainterchange*
+		//	executiontype=SignalExecutionTypeEnum
+		//	triggerpolicy=TriggerPolicy;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//{SignalHandler} 'handler' name=TRANSLATABLEID actionType=SignalHandlerTypeEnum data=DataTransfer
-		//executiontype=SignalExecutionTypeEnum? 'forFileMask' filemask=STRING
+		//{SignalHandler} 'handler' name=TRANSLATABLEID interchanges+=SignalDatainterchange* executiontype=SignalExecutionTypeEnum
+		//triggerpolicy=TriggerPolicy
 		public Group getGroup() { return cGroup; }
 		
 		//{SignalHandler}
@@ -232,103 +218,294 @@
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
 		
-		//actionType=SignalHandlerTypeEnum
-		public Assignment getActionTypeAssignment_3() { return cActionTypeAssignment_3; }
-		
-		//SignalHandlerTypeEnum
-		public RuleCall getActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0() { return cActionTypeSignalHandlerTypeEnumEnumRuleCall_3_0; }
-		
-		//data=DataTransfer
-		public Assignment getDataAssignment_4() { return cDataAssignment_4; }
-		
-		//DataTransfer
-		public RuleCall getDataDataTransferParserRuleCall_4_0() { return cDataDataTransferParserRuleCall_4_0; }
-		
-		//executiontype=SignalExecutionTypeEnum?
-		public Assignment getExecutiontypeAssignment_5() { return cExecutiontypeAssignment_5; }
-		
-		//SignalExecutionTypeEnum
-		public RuleCall getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0() { return cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_5_0; }
-		
-		//'forFileMask'
-		public Keyword getForFileMaskKeyword_6() { return cForFileMaskKeyword_6; }
-		
-		//filemask=STRING
-		public Assignment getFilemaskAssignment_7() { return cFilemaskAssignment_7; }
-		
-		//STRING
-		public RuleCall getFilemaskSTRINGTerminalRuleCall_7_0() { return cFilemaskSTRINGTerminalRuleCall_7_0; }
-	}
-	public class DataTransferElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.DataTransfer");
-		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
-		private final RuleCall cSingleTransferParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
-		private final RuleCall cListTransferParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
-		
-		////	processor=SignalProcessor;
-		//DataTransfer:
-		//	SingleTransfer | ListTransfer;
-		@Override public ParserRule getRule() { return rule; }
-		
-		//SingleTransfer | ListTransfer
-		public Alternatives getAlternatives() { return cAlternatives; }
-		
-		//SingleTransfer
-		public RuleCall getSingleTransferParserRuleCall_0() { return cSingleTransferParserRuleCall_0; }
-		
-		//ListTransfer
-		public RuleCall getListTransferParserRuleCall_1() { return cListTransferParserRuleCall_1; }
-	}
-	public class ListTransferElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.ListTransfer");
-		private final Group cGroup = (Group)rule.eContents().get(1);
-		private final Action cListTransferAction_0 = (Action)cGroup.eContents().get(0);
-		private final Keyword cDataTransferKeyword_1 = (Keyword)cGroup.eContents().get(1);
-		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
-		private final Assignment cInterchangesAssignment_3 = (Assignment)cGroup.eContents().get(3);
-		private final RuleCall cInterchangesSignalDatainterchangeParserRuleCall_3_0 = (RuleCall)cInterchangesAssignment_3.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
-		
-		//ListTransfer:
-		//	{ListTransfer} 'DataTransfer'
-		//	'{' interchanges+=SignalDatainterchange* '}';
-		@Override public ParserRule getRule() { return rule; }
-		
-		//{ListTransfer} 'DataTransfer' '{' interchanges+=SignalDatainterchange* '}'
-		public Group getGroup() { return cGroup; }
-		
-		//{ListTransfer}
-		public Action getListTransferAction_0() { return cListTransferAction_0; }
-		
-		//'DataTransfer'
-		public Keyword getDataTransferKeyword_1() { return cDataTransferKeyword_1; }
-		
-		//'{'
-		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
-		
 		//interchanges+=SignalDatainterchange*
 		public Assignment getInterchangesAssignment_3() { return cInterchangesAssignment_3; }
 		
 		//SignalDatainterchange
 		public RuleCall getInterchangesSignalDatainterchangeParserRuleCall_3_0() { return cInterchangesSignalDatainterchangeParserRuleCall_3_0; }
 		
-		//'}'
-		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
-	}
-	public class SingleTransferElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SingleTransfer");
-		private final Assignment cInterchangeAssignment = (Assignment)rule.eContents().get(1);
-		private final RuleCall cInterchangeSignalDatainterchangeParserRuleCall_0 = (RuleCall)cInterchangeAssignment.eContents().get(0);
+		//executiontype=SignalExecutionTypeEnum
+		public Assignment getExecutiontypeAssignment_4() { return cExecutiontypeAssignment_4; }
 		
-		//SingleTransfer:
-		//	interchange=SignalDatainterchange;
+		//SignalExecutionTypeEnum
+		public RuleCall getExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0() { return cExecutiontypeSignalExecutionTypeEnumEnumRuleCall_4_0; }
+		
+		//triggerpolicy=TriggerPolicy
+		public Assignment getTriggerpolicyAssignment_5() { return cTriggerpolicyAssignment_5; }
+		
+		//TriggerPolicy
+		public RuleCall getTriggerpolicyTriggerPolicyParserRuleCall_5_0() { return cTriggerpolicyTriggerPolicyParserRuleCall_5_0; }
+	}
+	public class TriggerPolicyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.TriggerPolicy");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cTriggerFileParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cSignalSchedulerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//TriggerPolicy:
+		//	TriggerFile | SignalScheduler;
 		@Override public ParserRule getRule() { return rule; }
 		
-		//interchange=SignalDatainterchange
-		public Assignment getInterchangeAssignment() { return cInterchangeAssignment; }
+		//TriggerFile | SignalScheduler
+		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//SignalDatainterchange
-		public RuleCall getInterchangeSignalDatainterchangeParserRuleCall_0() { return cInterchangeSignalDatainterchangeParserRuleCall_0; }
+		//TriggerFile
+		public RuleCall getTriggerFileParserRuleCall_0() { return cTriggerFileParserRuleCall_0; }
+		
+		//SignalScheduler
+		public RuleCall getSignalSchedulerParserRuleCall_1() { return cSignalSchedulerParserRuleCall_1; }
+	}
+	public class TriggerFileElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.TriggerFile");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cForFileMaskKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cFilemaskAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cFilemaskSTRINGTerminalRuleCall_1_0 = (RuleCall)cFilemaskAssignment_1.eContents().get(0);
+		
+		//TriggerFile:
+		//	'forFileMask' filemask=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'forFileMask' filemask=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//'forFileMask'
+		public Keyword getForFileMaskKeyword_0() { return cForFileMaskKeyword_0; }
+		
+		//filemask=STRING
+		public Assignment getFilemaskAssignment_1() { return cFilemaskAssignment_1; }
+		
+		//STRING
+		public RuleCall getFilemaskSTRINGTerminalRuleCall_1_0() { return cFilemaskSTRINGTerminalRuleCall_1_0; }
+	}
+	public class SignalSchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cScheduleForKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cSchedulerAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cSchedulerSchedulerParserRuleCall_1_0 = (RuleCall)cSchedulerAssignment_1.eContents().get(0);
+		
+		//SignalScheduler:
+		//	'scheduleFor' scheduler=Scheduler;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'scheduleFor' scheduler=Scheduler
+		public Group getGroup() { return cGroup; }
+		
+		//'scheduleFor'
+		public Keyword getScheduleForKeyword_0() { return cScheduleForKeyword_0; }
+		
+		//scheduler=Scheduler
+		public Assignment getSchedulerAssignment_1() { return cSchedulerAssignment_1; }
+		
+		//Scheduler
+		public RuleCall getSchedulerSchedulerParserRuleCall_1_0() { return cSchedulerSchedulerParserRuleCall_1_0; }
+	}
+	public class SchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.Scheduler");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cCronSchedulerParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cHourlySchedulerParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDailySchedulerParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cWeeklySchedulerParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cMonthlySchedulerParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		
+		//Scheduler:
+		//	CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//CronScheduler
+		public RuleCall getCronSchedulerParserRuleCall_0() { return cCronSchedulerParserRuleCall_0; }
+		
+		//HourlyScheduler
+		public RuleCall getHourlySchedulerParserRuleCall_1() { return cHourlySchedulerParserRuleCall_1; }
+		
+		//DailyScheduler
+		public RuleCall getDailySchedulerParserRuleCall_2() { return cDailySchedulerParserRuleCall_2; }
+		
+		//WeeklyScheduler
+		public RuleCall getWeeklySchedulerParserRuleCall_3() { return cWeeklySchedulerParserRuleCall_3; }
+		
+		//MonthlyScheduler
+		public RuleCall getMonthlySchedulerParserRuleCall_4() { return cMonthlySchedulerParserRuleCall_4; }
+	}
+	public class CronSchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.CronScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cCronKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cExpressionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cExpressionSTRINGTerminalRuleCall_1_0 = (RuleCall)cExpressionAssignment_1.eContents().get(0);
+		
+		//CronScheduler:
+		//	'cron' expression=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'cron' expression=STRING
+		public Group getGroup() { return cGroup; }
+		
+		//'cron'
+		public Keyword getCronKeyword_0() { return cCronKeyword_0; }
+		
+		//expression=STRING
+		public Assignment getExpressionAssignment_1() { return cExpressionAssignment_1; }
+		
+		//STRING
+		public RuleCall getExpressionSTRINGTerminalRuleCall_1_0() { return cExpressionSTRINGTerminalRuleCall_1_0; }
+	}
+	public class HourlySchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.HourlyScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cHourlyAtKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cMinuteAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cMinuteINTTerminalRuleCall_1_0 = (RuleCall)cMinuteAssignment_1.eContents().get(0);
+		
+		//HourlyScheduler:
+		//	'hourlyAt' minute=INT;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'hourlyAt' minute=INT
+		public Group getGroup() { return cGroup; }
+		
+		//'hourlyAt'
+		public Keyword getHourlyAtKeyword_0() { return cHourlyAtKeyword_0; }
+		
+		//minute=INT
+		public Assignment getMinuteAssignment_1() { return cMinuteAssignment_1; }
+		
+		//INT
+		public RuleCall getMinuteINTTerminalRuleCall_1_0() { return cMinuteINTTerminalRuleCall_1_0; }
+	}
+	public class DailySchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.DailyScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDailyAtKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cHourAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cHourINTTerminalRuleCall_1_0 = (RuleCall)cHourAssignment_1.eContents().get(0);
+		private final Keyword cColonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMinuteAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMinuteINTTerminalRuleCall_3_0 = (RuleCall)cMinuteAssignment_3.eContents().get(0);
+		
+		//DailyScheduler:
+		//	'dailyAt' hour=INT ':' minute=INT;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'dailyAt' hour=INT ':' minute=INT
+		public Group getGroup() { return cGroup; }
+		
+		//'dailyAt'
+		public Keyword getDailyAtKeyword_0() { return cDailyAtKeyword_0; }
+		
+		//hour=INT
+		public Assignment getHourAssignment_1() { return cHourAssignment_1; }
+		
+		//INT
+		public RuleCall getHourINTTerminalRuleCall_1_0() { return cHourINTTerminalRuleCall_1_0; }
+		
+		//':'
+		public Keyword getColonKeyword_2() { return cColonKeyword_2; }
+		
+		//minute=INT
+		public Assignment getMinuteAssignment_3() { return cMinuteAssignment_3; }
+		
+		//INT
+		public RuleCall getMinuteINTTerminalRuleCall_3_0() { return cMinuteINTTerminalRuleCall_3_0; }
+	}
+	public class WeeklySchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.WeeklyScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cWeeklyOnKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDayofweekAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cDayofweekDayOfWeekEnumEnumRuleCall_1_0 = (RuleCall)cDayofweekAssignment_1.eContents().get(0);
+		private final Keyword cAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cHourAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cHourINTTerminalRuleCall_3_0 = (RuleCall)cHourAssignment_3.eContents().get(0);
+		private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cMinuteAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cMinuteINTTerminalRuleCall_5_0 = (RuleCall)cMinuteAssignment_5.eContents().get(0);
+		
+		//WeeklyScheduler:
+		//	'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT
+		public Group getGroup() { return cGroup; }
+		
+		//'weeklyOn'
+		public Keyword getWeeklyOnKeyword_0() { return cWeeklyOnKeyword_0; }
+		
+		//dayofweek=DayOfWeekEnum
+		public Assignment getDayofweekAssignment_1() { return cDayofweekAssignment_1; }
+		
+		//DayOfWeekEnum
+		public RuleCall getDayofweekDayOfWeekEnumEnumRuleCall_1_0() { return cDayofweekDayOfWeekEnumEnumRuleCall_1_0; }
+		
+		//'at'
+		public Keyword getAtKeyword_2() { return cAtKeyword_2; }
+		
+		//hour=INT
+		public Assignment getHourAssignment_3() { return cHourAssignment_3; }
+		
+		//INT
+		public RuleCall getHourINTTerminalRuleCall_3_0() { return cHourINTTerminalRuleCall_3_0; }
+		
+		//':'
+		public Keyword getColonKeyword_4() { return cColonKeyword_4; }
+		
+		//minute=INT
+		public Assignment getMinuteAssignment_5() { return cMinuteAssignment_5; }
+		
+		//INT
+		public RuleCall getMinuteINTTerminalRuleCall_5_0() { return cMinuteINTTerminalRuleCall_5_0; }
+	}
+	public class MonthlySchedulerElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.MonthlyScheduler");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cMonthlyOnKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cDayofmonthAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cDayofmonthINTTerminalRuleCall_1_0 = (RuleCall)cDayofmonthAssignment_1.eContents().get(0);
+		private final Keyword cAtKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cHourAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cHourINTTerminalRuleCall_3_0 = (RuleCall)cHourAssignment_3.eContents().get(0);
+		private final Keyword cColonKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cMinuteAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cMinuteINTTerminalRuleCall_5_0 = (RuleCall)cMinuteAssignment_5.eContents().get(0);
+		
+		//MonthlyScheduler:
+		//	'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT
+		public Group getGroup() { return cGroup; }
+		
+		//'monthlyOn'
+		public Keyword getMonthlyOnKeyword_0() { return cMonthlyOnKeyword_0; }
+		
+		//dayofmonth=INT
+		public Assignment getDayofmonthAssignment_1() { return cDayofmonthAssignment_1; }
+		
+		//INT
+		public RuleCall getDayofmonthINTTerminalRuleCall_1_0() { return cDayofmonthINTTerminalRuleCall_1_0; }
+		
+		//'at'
+		public Keyword getAtKeyword_2() { return cAtKeyword_2; }
+		
+		//hour=INT
+		public Assignment getHourAssignment_3() { return cHourAssignment_3; }
+		
+		//INT
+		public RuleCall getHourINTTerminalRuleCall_3_0() { return cHourINTTerminalRuleCall_3_0; }
+		
+		//':'
+		public Keyword getColonKeyword_4() { return cColonKeyword_4; }
+		
+		//minute=INT
+		public Assignment getMinuteAssignment_5() { return cMinuteAssignment_5; }
+		
+		//INT
+		public RuleCall getMinuteINTTerminalRuleCall_5_0() { return cMinuteINTTerminalRuleCall_5_0; }
 	}
 	public class SignalDatainterchangeElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalDatainterchange");
@@ -436,105 +613,126 @@
 		//'Export'
 		public Keyword getDATAEXPORTExportKeyword_1_0() { return cDATAEXPORTExportKeyword_1_0; }
 	}
-	public class SignalTypeEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalTypeEnum");
-		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
-		private final EnumLiteralDeclaration cCreatesignalsEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
-		private final Keyword cCreatesignalsCreateSignalsKeyword_0_0 = (Keyword)cCreatesignalsEnumLiteralDeclaration_0.eContents().get(0);
-		private final EnumLiteralDeclaration cModifysignalsEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
-		private final Keyword cModifysignalsModifySignalsKeyword_1_0 = (Keyword)cModifysignalsEnumLiteralDeclaration_1.eContents().get(0);
-		
-		//enum SignalTypeEnum: //	all	= 'all' |
-		//	createsignals='createSignals' | modifysignals='modifySignals';
-		public EnumRule getRule() { return rule; }
-		
-		////	all	= 'all' |
-		//createsignals='createSignals' | modifysignals='modifySignals'
-		public Alternatives getAlternatives() { return cAlternatives; }
-		
-		////	all	= 'all' |
-		//createsignals='createSignals'
-		public EnumLiteralDeclaration getCreatesignalsEnumLiteralDeclaration_0() { return cCreatesignalsEnumLiteralDeclaration_0; }
-		
-		//'createSignals'
-		public Keyword getCreatesignalsCreateSignalsKeyword_0_0() { return cCreatesignalsCreateSignalsKeyword_0_0; }
-		
-		//modifysignals='modifySignals'
-		public EnumLiteralDeclaration getModifysignalsEnumLiteralDeclaration_1() { return cModifysignalsEnumLiteralDeclaration_1; }
-		
-		//'modifySignals'
-		public Keyword getModifysignalsModifySignalsKeyword_1_0() { return cModifysignalsModifySignalsKeyword_1_0; }
-	}
-	public class SignalHandlerTypeEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalHandlerTypeEnum");
-		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
-		private final EnumLiteralDeclaration cDoaftermodifyEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
-		private final Keyword cDoaftermodifyDoAfterModifyKeyword_0_0 = (Keyword)cDoaftermodifyEnumLiteralDeclaration_0.eContents().get(0);
-		private final EnumLiteralDeclaration cDoaftercreateEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
-		private final Keyword cDoaftercreateDoAfterCreateKeyword_1_0 = (Keyword)cDoaftercreateEnumLiteralDeclaration_1.eContents().get(0);
-		
-		//enum SignalHandlerTypeEnum: //	doafter = 'doAfter' |	
-		//	doaftermodify='doAfterModify' | doaftercreate='doAfterCreate';
-		public EnumRule getRule() { return rule; }
-		
-		////	doafter = 'doAfter' |	
-		//doaftermodify='doAfterModify' | doaftercreate='doAfterCreate'
-		public Alternatives getAlternatives() { return cAlternatives; }
-		
-		////	doafter = 'doAfter' |	
-		//doaftermodify='doAfterModify'
-		public EnumLiteralDeclaration getDoaftermodifyEnumLiteralDeclaration_0() { return cDoaftermodifyEnumLiteralDeclaration_0; }
-		
-		//'doAfterModify'
-		public Keyword getDoaftermodifyDoAfterModifyKeyword_0_0() { return cDoaftermodifyDoAfterModifyKeyword_0_0; }
-		
-		//doaftercreate='doAfterCreate'
-		public EnumLiteralDeclaration getDoaftercreateEnumLiteralDeclaration_1() { return cDoaftercreateEnumLiteralDeclaration_1; }
-		
-		//'doAfterCreate'
-		public Keyword getDoaftercreateDoAfterCreateKeyword_1_0() { return cDoaftercreateDoAfterCreateKeyword_1_0; }
-	}
 	public class SignalExecutionTypeEnumElements extends AbstractEnumRuleElementFinder {
 		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.SignalExecutionTypeEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
-		private final EnumLiteralDeclaration cSYNCEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
-		private final Keyword cSYNCSynchKeyword_0_0 = (Keyword)cSYNCEnumLiteralDeclaration_0.eContents().get(0);
-		private final EnumLiteralDeclaration cASYNCEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
-		private final Keyword cASYNCAsynchKeyword_1_0 = (Keyword)cASYNCEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cSEQEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cSEQSequentialKeyword_0_0 = (Keyword)cSEQEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cNOSEQEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cNOSEQParallelKeyword_1_0 = (Keyword)cNOSEQEnumLiteralDeclaration_1.eContents().get(0);
 		
 		//enum SignalExecutionTypeEnum:
-		//	SYNC='synch' | ASYNC='asynch';
+		//	SEQ='sequential' | NOSEQ='parallel';
 		public EnumRule getRule() { return rule; }
 		
-		//SYNC='synch' | ASYNC='asynch'
+		//SEQ='sequential' | NOSEQ='parallel'
 		public Alternatives getAlternatives() { return cAlternatives; }
 		
-		//SYNC='synch'
-		public EnumLiteralDeclaration getSYNCEnumLiteralDeclaration_0() { return cSYNCEnumLiteralDeclaration_0; }
+		//SEQ='sequential'
+		public EnumLiteralDeclaration getSEQEnumLiteralDeclaration_0() { return cSEQEnumLiteralDeclaration_0; }
 		
-		//'synch'
-		public Keyword getSYNCSynchKeyword_0_0() { return cSYNCSynchKeyword_0_0; }
+		//'sequential'
+		public Keyword getSEQSequentialKeyword_0_0() { return cSEQSequentialKeyword_0_0; }
 		
-		//ASYNC='asynch'
-		public EnumLiteralDeclaration getASYNCEnumLiteralDeclaration_1() { return cASYNCEnumLiteralDeclaration_1; }
+		//NOSEQ='parallel'
+		public EnumLiteralDeclaration getNOSEQEnumLiteralDeclaration_1() { return cNOSEQEnumLiteralDeclaration_1; }
 		
-		//'asynch'
-		public Keyword getASYNCAsynchKeyword_1_0() { return cASYNCAsynchKeyword_1_0; }
+		//'parallel'
+		public Keyword getNOSEQParallelKeyword_1_0() { return cNOSEQParallelKeyword_1_0; }
+	}
+	public class DayOfWeekEnumElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.signal.SignalDSL.DayOfWeekEnum");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cSUNDAYEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cSUNDAYSundayKeyword_0_0 = (Keyword)cSUNDAYEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cMONDAYEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cMONDAYMondayKeyword_1_0 = (Keyword)cMONDAYEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cTUESDAYEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cTUESDAYTuesdayKeyword_2_0 = (Keyword)cTUESDAYEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cWEDNESDAYEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cWEDNESDAYWednesdayKeyword_3_0 = (Keyword)cWEDNESDAYEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cTHURSDAYEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cTHURSDAYThursdayKeyword_4_0 = (Keyword)cTHURSDAYEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cFRIDAYEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cFRIDAYFridayKeyword_5_0 = (Keyword)cFRIDAYEnumLiteralDeclaration_5.eContents().get(0);
+		private final EnumLiteralDeclaration cSATURDAYEnumLiteralDeclaration_6 = (EnumLiteralDeclaration)cAlternatives.eContents().get(6);
+		private final Keyword cSATURDAYSaturdayKeyword_6_0 = (Keyword)cSATURDAYEnumLiteralDeclaration_6.eContents().get(0);
+		
+		//enum DayOfWeekEnum:
+		//	SUNDAY='sunday' |
+		//	MONDAY='monday' |
+		//	TUESDAY='tuesday' |
+		//	WEDNESDAY='wednesday' |
+		//	THURSDAY='thursday' |
+		//	FRIDAY='friday' |
+		//	SATURDAY='saturday';
+		public EnumRule getRule() { return rule; }
+		
+		//SUNDAY='sunday' | MONDAY='monday' | TUESDAY='tuesday' | WEDNESDAY='wednesday' | THURSDAY='thursday' | FRIDAY='friday' |
+		//SATURDAY='saturday'
+		public Alternatives getAlternatives() { return cAlternatives; }
+		
+		//SUNDAY='sunday'
+		public EnumLiteralDeclaration getSUNDAYEnumLiteralDeclaration_0() { return cSUNDAYEnumLiteralDeclaration_0; }
+		
+		//'sunday'
+		public Keyword getSUNDAYSundayKeyword_0_0() { return cSUNDAYSundayKeyword_0_0; }
+		
+		//MONDAY='monday'
+		public EnumLiteralDeclaration getMONDAYEnumLiteralDeclaration_1() { return cMONDAYEnumLiteralDeclaration_1; }
+		
+		//'monday'
+		public Keyword getMONDAYMondayKeyword_1_0() { return cMONDAYMondayKeyword_1_0; }
+		
+		//TUESDAY='tuesday'
+		public EnumLiteralDeclaration getTUESDAYEnumLiteralDeclaration_2() { return cTUESDAYEnumLiteralDeclaration_2; }
+		
+		//'tuesday'
+		public Keyword getTUESDAYTuesdayKeyword_2_0() { return cTUESDAYTuesdayKeyword_2_0; }
+		
+		//WEDNESDAY='wednesday'
+		public EnumLiteralDeclaration getWEDNESDAYEnumLiteralDeclaration_3() { return cWEDNESDAYEnumLiteralDeclaration_3; }
+		
+		//'wednesday'
+		public Keyword getWEDNESDAYWednesdayKeyword_3_0() { return cWEDNESDAYWednesdayKeyword_3_0; }
+		
+		//THURSDAY='thursday'
+		public EnumLiteralDeclaration getTHURSDAYEnumLiteralDeclaration_4() { return cTHURSDAYEnumLiteralDeclaration_4; }
+		
+		//'thursday'
+		public Keyword getTHURSDAYThursdayKeyword_4_0() { return cTHURSDAYThursdayKeyword_4_0; }
+		
+		//FRIDAY='friday'
+		public EnumLiteralDeclaration getFRIDAYEnumLiteralDeclaration_5() { return cFRIDAYEnumLiteralDeclaration_5; }
+		
+		//'friday'
+		public Keyword getFRIDAYFridayKeyword_5_0() { return cFRIDAYFridayKeyword_5_0; }
+		
+		//SATURDAY='saturday'
+		public EnumLiteralDeclaration getSATURDAYEnumLiteralDeclaration_6() { return cSATURDAYEnumLiteralDeclaration_6; }
+		
+		//'saturday'
+		public Keyword getSATURDAYSaturdayKeyword_6_0() { return cSATURDAYSaturdayKeyword_6_0; }
 	}
 	
 	private final SignalModelElements pSignalModel;
 	private final SignalPackageElements pSignalPackage;
 	private final SignalWatcherElements pSignalWatcher;
 	private final SignalHandlerElements pSignalHandler;
-	private final DataTransferElements pDataTransfer;
-	private final ListTransferElements pListTransfer;
-	private final SingleTransferElements pSingleTransfer;
+	private final TriggerPolicyElements pTriggerPolicy;
+	private final TriggerFileElements pTriggerFile;
+	private final SignalSchedulerElements pSignalScheduler;
+	private final SchedulerElements pScheduler;
+	private final CronSchedulerElements pCronScheduler;
+	private final HourlySchedulerElements pHourlyScheduler;
+	private final DailySchedulerElements pDailyScheduler;
+	private final WeeklySchedulerElements pWeeklyScheduler;
+	private final MonthlySchedulerElements pMonthlyScheduler;
 	private final SignalDatainterchangeElements pSignalDatainterchange;
 	private final SignalProcessorElements pSignalProcessor;
 	private final SignalActionEnumElements eSignalActionEnum;
-	private final SignalTypeEnumElements eSignalTypeEnum;
-	private final SignalHandlerTypeEnumElements eSignalHandlerTypeEnum;
 	private final SignalExecutionTypeEnumElements eSignalExecutionTypeEnum;
+	private final DayOfWeekEnumElements eDayOfWeekEnum;
 	private final TRANSLATABLEIDElements pTRANSLATABLEID;
 	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
 	
@@ -563,15 +761,20 @@
 		this.pSignalPackage = new SignalPackageElements();
 		this.pSignalWatcher = new SignalWatcherElements();
 		this.pSignalHandler = new SignalHandlerElements();
-		this.pDataTransfer = new DataTransferElements();
-		this.pListTransfer = new ListTransferElements();
-		this.pSingleTransfer = new SingleTransferElements();
+		this.pTriggerPolicy = new TriggerPolicyElements();
+		this.pTriggerFile = new TriggerFileElements();
+		this.pSignalScheduler = new SignalSchedulerElements();
+		this.pScheduler = new SchedulerElements();
+		this.pCronScheduler = new CronSchedulerElements();
+		this.pHourlyScheduler = new HourlySchedulerElements();
+		this.pDailyScheduler = new DailySchedulerElements();
+		this.pWeeklyScheduler = new WeeklySchedulerElements();
+		this.pMonthlyScheduler = new MonthlySchedulerElements();
 		this.pSignalDatainterchange = new SignalDatainterchangeElements();
 		this.pSignalProcessor = new SignalProcessorElements();
 		this.eSignalActionEnum = new SignalActionEnumElements();
-		this.eSignalTypeEnum = new SignalTypeEnumElements();
-		this.eSignalHandlerTypeEnum = new SignalHandlerTypeEnumElements();
 		this.eSignalExecutionTypeEnum = new SignalExecutionTypeEnumElements();
+		this.eDayOfWeekEnum = new DayOfWeekEnumElements();
 		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
 		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
 	}
@@ -617,7 +820,7 @@
 	
 	//SignalModel:
 	//	importSection=XImportSection?
-	//	packages+=SignalPackage*;
+	//	packages=SignalPackage;
 	public SignalModelElements getSignalModelAccess() {
 		return pSignalModel;
 	}
@@ -640,8 +843,9 @@
 	//	{SignalWatcher}
 	//	'watcher' name=TRANSLATABLEID
 	//	'directory' directory=STRING
-	//	'for' signal=SignalTypeEnum
-	//	'{' handlers+=SignalHandler* '}';
+	//	'{'
+	//	handlers+=SignalHandler*
+	//	'}';
 	public SignalWatcherElements getSignalWatcherAccess() {
 		return pSignalWatcher;
 	}
@@ -653,10 +857,9 @@
 	//SignalHandler:
 	//	{SignalHandler}
 	//	'handler' name=TRANSLATABLEID
-	//	actionType=SignalHandlerTypeEnum
-	//	data=DataTransfer
-	//	executiontype=SignalExecutionTypeEnum?
-	//	'forFileMask' filemask=STRING;
+	//	interchanges+=SignalDatainterchange*
+	//	executiontype=SignalExecutionTypeEnum
+	//	triggerpolicy=TriggerPolicy;
 	public SignalHandlerElements getSignalHandlerAccess() {
 		return pSignalHandler;
 	}
@@ -665,36 +868,94 @@
 		return getSignalHandlerAccess().getRule();
 	}
 	
-	////	processor=SignalProcessor;
-	//DataTransfer:
-	//	SingleTransfer | ListTransfer;
-	public DataTransferElements getDataTransferAccess() {
-		return pDataTransfer;
+	//TriggerPolicy:
+	//	TriggerFile | SignalScheduler;
+	public TriggerPolicyElements getTriggerPolicyAccess() {
+		return pTriggerPolicy;
 	}
 	
-	public ParserRule getDataTransferRule() {
-		return getDataTransferAccess().getRule();
+	public ParserRule getTriggerPolicyRule() {
+		return getTriggerPolicyAccess().getRule();
 	}
 	
-	//ListTransfer:
-	//	{ListTransfer} 'DataTransfer'
-	//	'{' interchanges+=SignalDatainterchange* '}';
-	public ListTransferElements getListTransferAccess() {
-		return pListTransfer;
+	//TriggerFile:
+	//	'forFileMask' filemask=STRING;
+	public TriggerFileElements getTriggerFileAccess() {
+		return pTriggerFile;
 	}
 	
-	public ParserRule getListTransferRule() {
-		return getListTransferAccess().getRule();
+	public ParserRule getTriggerFileRule() {
+		return getTriggerFileAccess().getRule();
 	}
 	
-	//SingleTransfer:
-	//	interchange=SignalDatainterchange;
-	public SingleTransferElements getSingleTransferAccess() {
-		return pSingleTransfer;
+	//SignalScheduler:
+	//	'scheduleFor' scheduler=Scheduler;
+	public SignalSchedulerElements getSignalSchedulerAccess() {
+		return pSignalScheduler;
 	}
 	
-	public ParserRule getSingleTransferRule() {
-		return getSingleTransferAccess().getRule();
+	public ParserRule getSignalSchedulerRule() {
+		return getSignalSchedulerAccess().getRule();
+	}
+	
+	//Scheduler:
+	//	CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler;
+	public SchedulerElements getSchedulerAccess() {
+		return pScheduler;
+	}
+	
+	public ParserRule getSchedulerRule() {
+		return getSchedulerAccess().getRule();
+	}
+	
+	//CronScheduler:
+	//	'cron' expression=STRING;
+	public CronSchedulerElements getCronSchedulerAccess() {
+		return pCronScheduler;
+	}
+	
+	public ParserRule getCronSchedulerRule() {
+		return getCronSchedulerAccess().getRule();
+	}
+	
+	//HourlyScheduler:
+	//	'hourlyAt' minute=INT;
+	public HourlySchedulerElements getHourlySchedulerAccess() {
+		return pHourlyScheduler;
+	}
+	
+	public ParserRule getHourlySchedulerRule() {
+		return getHourlySchedulerAccess().getRule();
+	}
+	
+	//DailyScheduler:
+	//	'dailyAt' hour=INT ':' minute=INT;
+	public DailySchedulerElements getDailySchedulerAccess() {
+		return pDailyScheduler;
+	}
+	
+	public ParserRule getDailySchedulerRule() {
+		return getDailySchedulerAccess().getRule();
+	}
+	
+	//WeeklyScheduler:
+	//	'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
+	public WeeklySchedulerElements getWeeklySchedulerAccess() {
+		return pWeeklyScheduler;
+	}
+	
+	public ParserRule getWeeklySchedulerRule() {
+		return getWeeklySchedulerAccess().getRule();
+	}
+	
+	//MonthlyScheduler:
+	//	'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT;
+	public MonthlySchedulerElements getMonthlySchedulerAccess() {
+		return pMonthlyScheduler;
+	}
+	
+	public ParserRule getMonthlySchedulerRule() {
+		return getMonthlySchedulerAccess().getRule();
 	}
 	
 	//SignalDatainterchange:
@@ -729,28 +990,8 @@
 		return getSignalActionEnumAccess().getRule();
 	}
 	
-	//enum SignalTypeEnum: //	all	= 'all' |
-	//	createsignals='createSignals' | modifysignals='modifySignals';
-	public SignalTypeEnumElements getSignalTypeEnumAccess() {
-		return eSignalTypeEnum;
-	}
-	
-	public EnumRule getSignalTypeEnumRule() {
-		return getSignalTypeEnumAccess().getRule();
-	}
-	
-	//enum SignalHandlerTypeEnum: //	doafter = 'doAfter' |	
-	//	doaftermodify='doAfterModify' | doaftercreate='doAfterCreate';
-	public SignalHandlerTypeEnumElements getSignalHandlerTypeEnumAccess() {
-		return eSignalHandlerTypeEnum;
-	}
-	
-	public EnumRule getSignalHandlerTypeEnumRule() {
-		return getSignalHandlerTypeEnumAccess().getRule();
-	}
-	
 	//enum SignalExecutionTypeEnum:
-	//	SYNC='synch' | ASYNC='asynch';
+	//	SEQ='sequential' | NOSEQ='parallel';
 	public SignalExecutionTypeEnumElements getSignalExecutionTypeEnumAccess() {
 		return eSignalExecutionTypeEnum;
 	}
@@ -759,6 +1000,22 @@
 		return getSignalExecutionTypeEnumAccess().getRule();
 	}
 	
+	//enum DayOfWeekEnum:
+	//	SUNDAY='sunday' |
+	//	MONDAY='monday' |
+	//	TUESDAY='tuesday' |
+	//	WEDNESDAY='wednesday' |
+	//	THURSDAY='thursday' |
+	//	FRIDAY='friday' |
+	//	SATURDAY='saturday';
+	public DayOfWeekEnumElements getDayOfWeekEnumAccess() {
+		return eDayOfWeekEnum;
+	}
+	
+	public EnumRule getDayOfWeekEnumRule() {
+		return getDayOfWeekEnumAccess().getRule();
+	}
+	
 	//TRANSLATABLEID:
 	//	ID;
 	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
diff --git a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/validation/AbstractSignalDSLValidator.java b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/validation/AbstractSignalDSLValidator.java
index d7bd529..bd55472 100644
--- a/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/validation/AbstractSignalDSLValidator.java
+++ b/org.eclipse.osbp.xtext.signal/src-gen/org/eclipse/osbp/xtext/signal/validation/AbstractSignalDSLValidator.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/Activator.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/Activator.java
index 26ed92e..bc1c8f0 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/Activator.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/Activator.java
@@ -3,9 +3,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  *                                                                            
  * All rights reserved. This program and the accompanying materials           
- * are made available under the terms of the Eclipse Public License v1.0       
+ * are made available under the terms of the Eclipse Public License 2.0        
  * which accompanies this distribution, and is available at                  
- * http://www.eclipse.org/legal/epl-v10.html                                 
+ * https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ * SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  * Contributors:   
  * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation 
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/GenerateSignalDSL.mwe2 b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/GenerateSignalDSL.mwe2
index 3f6457a..5734954 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/GenerateSignalDSL.mwe2
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/GenerateSignalDSL.mwe2
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -25,9 +27,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext
index 1e50e73..5f2d4aa 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSL.xtext
@@ -3,90 +3,96 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  *
  */
-grammar org.eclipse.osbp.xtext.signal.SignalDSL 
-with org.eclipse.osbp.xtext.oxtype.OXtype
+grammar org.eclipse.osbp.xtext.signal.SignalDSL with org.eclipse.osbp.xtext.oxtype.OXtype
 
 import "http://osbp.eclipse.org/xtext/signal/SignalDSL"
 import "http://osbp.eclipse.org/xtext/datainterchange/DataDSL" as data
 import "http://osbp.eclipse.org/dsl/common/types/v1" as types
-import "http://www.eclipse.org/emf/2002/Ecore" as ecore 
-
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
 
 SignalModel:
 	importSection=XImportSection?
-	packages+=SignalPackage*;
+	packages=SignalPackage;
 
 SignalPackage:
-	{SignalPackage} 'package' name=QualifiedName 
-	('{' (watchers+=SignalWatcher)*  '}')? ;
-
+	{SignalPackage} 'package' name=QualifiedName
+	('{' (watchers+=SignalWatcher)* '}')?;
 
 SignalWatcher:
 	{SignalWatcher}
 	'watcher' name=TRANSLATABLEID
-	'directory' directory=STRING 
-	'for' signal=SignalTypeEnum
-	'{' (handlers+=SignalHandler)*	'}';
-
+	'directory' directory=STRING
+	'{'
+	(handlers+=SignalHandler)*
+	'}';
 
 SignalHandler:
 	{SignalHandler}
 	'handler' name=TRANSLATABLEID
-	actionType=SignalHandlerTypeEnum
-	data=DataTransfer
-	(executiontype=SignalExecutionTypeEnum)?
+	interchanges+=SignalDatainterchange*
+	executiontype=SignalExecutionTypeEnum
+	triggerpolicy=TriggerPolicy;
+
+TriggerPolicy:
+	TriggerFile | SignalScheduler;
+
+TriggerFile:
 	'forFileMask' filemask=STRING;
-//	processor=SignalProcessor;
 
-DataTransfer:
-	SingleTransfer | ListTransfer
-;
+SignalScheduler:
+	'scheduleFor' scheduler=Scheduler;
 
-ListTransfer:
-	{ListTransfer} 'DataTransfer'  
-	'{' interchanges+=SignalDatainterchange* '}'
-;
+Scheduler:
+	CronScheduler | HourlyScheduler | DailyScheduler | WeeklyScheduler | MonthlyScheduler;
 
-SingleTransfer:
-	interchange=SignalDatainterchange 
-;
-	
+CronScheduler:
+	'cron' expression=STRING;
+
+HourlyScheduler:
+	'hourlyAt' minute=INT;
+
+DailyScheduler:
+	'dailyAt' hour=INT ':' minute=INT; 
+WeeklyScheduler:
+	'weeklyOn' dayofweek=DayOfWeekEnum 'at' hour=INT ':' minute=INT;
+
+MonthlyScheduler:
+	'monthlyOn' dayofmonth=INT 'at' hour=INT ':' minute=INT;
+
 SignalDatainterchange:
 	dataAction=SignalActionEnum
-	dataRef = [data::DataInterchange]
+	dataRef=[data::DataInterchange]
 	'fileName' fileName=STRING;
-	
 SignalProcessor:
 	SignalDatainterchange;
 
 enum SignalActionEnum:
 	DATAIMPORT='Import' | DATAEXPORT='Export';
 
-enum SignalTypeEnum:
-//	all	= 'all' |
-	createsignals = 'createSignals' |
-	modifysignals = 'modifySignals' ;
-//	deletesignals = 'deleteSignals';
-	
-enum SignalHandlerTypeEnum:
-//	doafter = 'doAfter' |	
-	doaftermodify = 'doAfterModify' |
-	doaftercreate = 'doAfterCreate';
-//	doafterdelete = 'doAfterDelete';
-
 enum SignalExecutionTypeEnum:
-	SYNC = 'synch' | ASYNC = 'asynch';
-	
+	SEQ='sequential' | NOSEQ='parallel';
+
+enum DayOfWeekEnum:
+	SUNDAY='sunday' |
+	MONDAY='monday' |
+	TUESDAY='tuesday' |
+	WEDNESDAY='wednesday' |
+	THURSDAY='thursday' |
+	FRIDAY='friday' |
+	SATURDAY='saturday';
+
 TRANSLATABLEID:
 	ID;
-	
+
 TRANSLATABLESTRING:
 	STRING;
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceRuntimeModule.java
index 632cbe7..7a21525 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceRuntimeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceStandaloneSetup.java
index 3ce9d3e..f2208e9 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceStandaloneSetup.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLBundleSpaceStandaloneSetup.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLRuntimeModule.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLRuntimeModule.java
index 8c5c24a..1ff766c 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLRuntimeModule.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetup.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetup.java
index eb3d460..d85a557 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetup.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/SignalDSLStandaloneSetup.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/XcoreResourceFactory.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/XcoreResourceFactory.java
index 1e10f22..50344ff 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/XcoreResourceFactory.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/XcoreResourceFactory.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java
index e862796..c8a110f 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/IOSBPSignalWatcher.java
@@ -1,3 +1,18 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
 package org.eclipse.osbp.xtext.signal.common;
 
 import java.io.IOException;
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalCommonData.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalCommonData.java
new file mode 100644
index 0000000..1e34fe5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalCommonData.java
@@ -0,0 +1,446 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.concurrent.FutureTask;
+
+import org.eclipse.osbp.preferences.ProductConfiguration;
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+import org.quartz.CronExpression;
+import org.quartz.DateBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This class contains all common data to be used either from
+ * {@link OSBPSignalWatcher} or {@link OSBPSignalScheduler}.
+ */
+public abstract class OSBPSignalCommonData {
+	/** the log */
+	private static Logger log = LoggerFactory.getLogger("signal");
+	/** the list of all tasks, data interchange unit to be executed */
+	private static Map<String, ArrayList<WorkerThreadRunnable>> listOfTasks;
+	/** the list of all watcher configurations */
+	private static HashMap<String, String> watcherconfigurations;
+	/** if the config file is ready to use **/
+	private static HashMap<String, Boolean> configurationsready;
+
+	/**
+	 * Returns the {@link #listOfTasks}.
+	 * 
+	 * @return {@link Map<String, ArrayList<WorkerThreadRunnable>>} the list of
+	 *         all tasks.
+	 */
+	public Map<String, ArrayList<WorkerThreadRunnable>> getListOfTasks() {
+		return listOfTasks;
+	}
+
+	/**
+	 * Initializes the list of tasks.
+	 * 
+	 * @param listOfTasks
+	 *            the list of tasks.
+	 */
+	public void initListOfTasks() {
+		if (listOfTasks == null) {
+			listOfTasks = new HashMap<>();
+		}
+	}
+
+	/**
+	 * Checks if all tasks are done.
+	 * 
+	 * @param tasks
+	 *            list of tasks to be checked
+	 *            {@link ArrayList<FutureTask<WorkerThreadRunnable>>}
+	 * @return true if yes, false if not
+	 */
+	public boolean allTasksDone(ArrayList<FutureTask<WorkerThreadRunnable>> tasks) {
+		for (FutureTask<WorkerThreadRunnable> task : tasks) {
+			if (task != null && !task.isDone()) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Make sure that the given file is deleted.
+	 * 
+	 * @param file
+	 *            the file to be deleted
+	 */
+	public void deleteFile(final Path file) {
+		try {
+			if (Files.deleteIfExists(file)) {
+				if (log.isDebugEnabled()) {
+					log.debug("File: " + file + " successfuly removed.");
+				}
+			} else {
+				if (log.isDebugEnabled()) {
+					log.debug("File: " + file + " doesn't exists and could not be removed.");
+				}
+			}
+		} catch (IOException e) {
+			log.error("File: " + file + " could not be deleted.\n" + e.getMessage());
+		}
+	}
+
+	/**
+	 * Checks if the given file mask is empty. Further validation can be
+	 * implemented here.
+	 * 
+	 * @param filemask
+	 *            the file mask
+	 * @return the file mask value, or null
+	 */
+	public String getFilemaskValue(String filemask) {
+		if (filemask != null && !filemask.isEmpty()) {
+			return filemask;
+		}
+		return null;
+	}
+
+	/**
+	 * Checks if the given cron expression is valid and gives it back
+	 * eventually.
+	 * 
+	 * @param expression
+	 *            the cron expression
+	 * @return a valid cron expression or null
+	 */
+	public String getCronExpressionValue(String expression) {
+		if (expression != null && CronExpression.isValidExpression(expression)) {
+			return expression;
+		}
+		return null;
+	}
+
+	/**
+	 * Checks if the given minutes value is between 0 and 59 and gives the
+	 * appropriate integer value back.
+	 * 
+	 * @param minutes
+	 *            the minutes
+	 * @return a value between 0 and 59, or -1
+	 */
+	public int getMinutesValue(String minutes) {
+		try {
+			int value = Integer.valueOf(minutes);
+			if (value >= 0 && value <= 59) {
+				return value;
+			}
+		} catch (NumberFormatException e) {
+			log.error("getMinutesValue - given minute value [" + minutes + "] is not valid.");
+		}
+		return -1;
+	}
+
+	/**
+	 * Checks if the given hour value is between 0 and 23 and gives the
+	 * appropriate integer value back.
+	 * 
+	 * @param hour
+	 *            the hour
+	 * @return a value between 0 and 23, or -1
+	 */
+	public int getHourValue(String hour) {
+		try {
+			int value = Integer.valueOf(hour);
+			if (value >= 0 && value <= 23) {
+				return value;
+			}
+		} catch (NumberFormatException e) {
+			log.error("getHourValue - given hour value [" + hour + "] is not valid.");
+		}
+		return -1;
+	}
+
+	/**
+	 * Checks if the given day of the week value is valid and give the
+	 * appropriate integer value back. Valid value here are: sunday | monday |
+	 * tuesday | wednesday | thursday | friday | saturday
+	 * 
+	 * @param dayofweek
+	 *            the day of the week
+	 * @return a value between 1 and 7, or -1
+	 */
+	public int getDayOfWeekValue(String dayofweek) {
+		switch (dayofweek.toLowerCase()) {
+		case "sunday":
+			return DateBuilder.SUNDAY;
+		case "monday":
+			return DateBuilder.MONDAY;
+		case "tuesday":
+			return DateBuilder.TUESDAY;
+		case "wednesday":
+			return DateBuilder.WEDNESDAY;
+		case "thursday":
+			return DateBuilder.THURSDAY;
+		case "friday":
+			return DateBuilder.FRIDAY;
+		case "saturday":
+			return DateBuilder.SATURDAY;
+		default:
+			log.error("getDayOfWeekValue - given dayofweek value [" + dayofweek + "] is not valid.");
+			return -1;
+		}
+	}
+
+	/**
+	 * Checks if the given day of the month value is between 1 and 31 and gives
+	 * the appropriate integer value back.
+	 * 
+	 * @param dayofmonth
+	 *            the day of month
+	 * @return a value between 1 and 31, or -1
+	 */
+	public int getDayOfMonthValue(String dayofmonth) {
+		try {
+			int value = Integer.valueOf(dayofmonth);
+			if (value >= 1 && value <= 31) {
+				return value;
+			}
+		} catch (NumberFormatException e) {
+			log.error("getDayofMonthValue - given dayofmonth value [" + dayofmonth + "] is not valid.");
+		}
+		return -1;
+	}
+
+	/**
+	 * Gives the {@link #watcherconfigurations} field back.
+	 * 
+	 * @return {@link HashMap<String, String>} the list of watcher
+	 *         configurations.
+	 */
+	public HashMap<String, String> getWatcherconfigurations() {
+		return watcherconfigurations;
+	}
+
+	/**
+	 * Sets the list {@link #watcherconfigurations} field.
+	 * 
+	 * @param watcherconfigurations
+	 *            the list of watcher configurations.
+	 */
+	public static void initWatcherconfigurations() {
+		if (watcherconfigurations == null) {
+			watcherconfigurations = new HashMap<>();
+		}
+		if (configurationsready == null) {
+			watcherconfigurations = new HashMap<>();
+		}
+	}
+
+	/**
+	 * Add a configuration entry.
+	 * 
+	 * @param key
+	 *            the configuration key
+	 * @param value
+	 *            the value
+	 */
+	public static void addWatcherConfig(String key, String value) {
+		String val = watcherconfigurations.get(key);
+		if (val == null) {
+			watcherconfigurations.put(key, value);
+		}
+	}
+
+	/**
+	 * Returns a value depending on the given key.
+	 * 
+	 * @param key
+	 *            the configuration key
+	 * @return the value or null
+	 */
+	public String getWatcherConfig(String key) {
+		return watcherconfigurations.get(key);
+	}
+
+	/**
+	 * Creates the signal dsl configuration file at the default location, if it
+	 * doesn't exist, and sets its path in the preferences. Updates the
+	 * configuration file to the missing entries with default value coming
+	 * originally from the model.
+	 */
+	public static boolean createOrUpdateConfigurationFile() {
+		String url = ProductConfiguration.getSignalConfiguration();
+		if (url == null || url.isEmpty()) {
+			url = System.getProperty("user.home") + "/.osbee/" + "SignalConfig.xml";
+		}
+		File file = new File(url);
+		if (file.exists()) {
+			try {
+				FileInputStream fileInput = new FileInputStream(file);
+				Properties properties = new Properties();
+				properties.loadFromXML(fileInput);
+				fileInput.close();
+				for (String key : watcherconfigurations.keySet()) {
+					if (!properties.containsKey(key)) {
+						properties.put(key, watcherconfigurations.get(key));
+					}
+				}
+				FileOutputStream fileOutput = new FileOutputStream(file);
+				properties.storeToXML(fileOutput, "Signal DSL Configuration");
+				fileOutput.close();
+				log.info("Signal configuration file " + file + " successfuly updated.");
+				return true;
+			} catch (IOException e) {
+				StringWriter sw = new StringWriter();
+				e.printStackTrace(new PrintWriter(sw));
+				log.error("createOrUpdateConfigurationFile: Error during update of file: " + file + " ... {}",
+						sw.toString());
+			}
+		} else {
+			try {
+				FileOutputStream fileOutput = new FileOutputStream(file);
+				// create a new file and set the preference entry
+				file.createNewFile();
+				Properties properties = new Properties();
+				for (String key : watcherconfigurations.keySet()) {
+					properties.put(key, watcherconfigurations.get(key));
+				}
+				properties.storeToXML(fileOutput, "Signal DSL Configuration");
+				fileOutput.close();
+				if (log.isDebugEnabled()) {
+					log.debug("Signal configuration file " + file + " successfuly created.");
+				}
+				String path = file.getAbsolutePath();
+				ProductConfiguration.setSignalConfiguration(path);
+				log.info("Actual signal configuration file: " + file);
+				return true;
+			} catch (IOException e) {
+				StringWriter sw = new StringWriter();
+				e.printStackTrace(new PrintWriter(sw));
+				log.error("createOrUpdateConfigurationFile: Error during creation of file: [" + file + "] ... {}",
+						sw.toString());
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Gives the property value of the given property name if existing.
+	 * 
+	 * @param propertyname
+	 *            the property name
+	 * @return the property value if existing, or null if not
+	 */
+	public String getHandlerPropertyFromConfigurationFile(String propertyname) {
+		if (propertyname != null) {
+			String url = ProductConfiguration.getSignalConfiguration();
+			if (url == null || url.isEmpty()) {
+				url = System.getProperty("user.home") + "/.osbee/" + "SignalConfig.xml";
+			}
+			File file = new File(url);
+			if (file.exists()) {
+				try {
+					FileInputStream fileInput = new FileInputStream(file);
+					Properties properties = new Properties();
+					properties.loadFromXML(fileInput);
+					fileInput.close();
+					String value = properties.getProperty(propertyname);
+					if (value != null) {
+						if (log.isDebugEnabled()) {
+							log.debug("getHandlerPropertyFromConfigurationFile propertyname[" + propertyname
+									+ "] -> value [" + value + "]");
+						}
+						return value;
+					}
+				} catch (IOException e) {
+					StringWriter sw = new StringWriter();
+					e.printStackTrace(new PrintWriter(sw));
+					log.error("Error during getHandlerPropertyFromConfigurationFile of propertyname: [" + propertyname
+							+ "] ... {}", sw.toString());
+				}
+			}
+		}
+		if (log.isDebugEnabled()) {
+			log.debug("getHandlerPropertyFromConfigurationFile propertyname[" + propertyname + "] -> value [null]");
+		}
+		return null;
+	}
+
+	/**
+	 * Checks if the given path points to an existing directory.
+	 * 
+	 * @param path
+	 *            the path
+	 * @return true if yes, false if not
+	 */
+	public boolean existsDirectory(String path) {
+		try {
+			return Files.isDirectory(Paths.get(path));
+		} catch (Exception e) {
+			log.error("existsDirectory - error ", e);
+		}
+		return false;
+	}
+
+	/**
+	 * Checks if the given string a valid url.
+	 * 
+	 * @param url
+	 * @return true if yes, false if not.
+	 */
+	public URL isDirectoryValidURL(String url) {
+		try {
+			return new URL(url);
+		} catch (MalformedURLException e1) {
+			if (e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
+				try {
+					return Paths.get(url).toUri().toURL();
+				} catch (MalformedURLException e2) {
+					StringWriter sw = new StringWriter();
+					e2.printStackTrace(new PrintWriter(sw));
+					log.error("{}", sw.toString());
+				}
+			}
+		}
+		return null;
+	}
+
+	public static void setConfigReady(String path, boolean ready) {
+		configurationsready.put(path, ready);
+	}
+
+	public static boolean isConfigReady(String path) {
+		if (configurationsready == null) {
+			configurationsready = new HashMap<>();
+		}
+		if (configurationsready.containsKey(path)) {
+			return configurationsready.get(path).booleanValue();
+		}
+		return false;
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalConstants.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalConstants.java
new file mode 100644
index 0000000..176744b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalConstants.java
@@ -0,0 +1,77 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+public abstract class OSBPSignalConstants {
+
+	public static final boolean SIGNAL_DELETE_TRIGGER_FILES_AFTERIMPORT = false;
+	public static final boolean SIGNAL_DELETE_INPUT_FILES_AFTERIMPORT = false;
+
+	/* The actual minimum size */
+	public static final int FILE_EXTENSION_MIN_SIZE = 4;
+
+	/* CSV file extension */
+	public static final String CSV_EXTENSION = ".csv";
+	public static final String XML_EXTENSION = ".xml";
+	public static final String EDI_EXTENSION = ".edi";
+
+	/* Scheduler and jobs */
+	public static final String SEQUENTIAL = "sequential";
+	public static final String TASKSLIST = "taskslist";
+
+	public static final String CRONEXP_NOTICE = "\n\nFurther information about how to properly build the cron-expression can be found here: "
+	+ "\nhttp://www.quartz-scheduler.org/documentation/quartz-2.2.x/tutorials/tutorial-lesson-06.html"
+	+ "\n\nHere are some full examples: "
+	+ "\nExpression						Meaning"
+	+"\n\"0 0 12 * * ?\"    				Fire at 12pm (noon) every day" 
+	+"\n\"0 15 10 ? * *\"    				Fire at 10:15am every day "
+	+"\n\"0 15 10 * * ?\"  					Fire at 10:15am every day "
+	+"\n\"0 15 10 * * ? *\"    				Fire at 10:15am every day "
+	+"\n\"0 15 10 * * ? 2005\"    			Fire at 10:15am every day during the year 2005  "
+	+"\n\"0 * 14 * * ?\"    				Fire every minute starting at 2pm and ending at 2:59pm, every day  "
+	+"\n\"0 0/5 14 * * ?\"    				Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day  "
+	+"\n\"0 0/5 14,18 * * ?\"    			Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day"  
+	+"\n\"0 0-5 14 * * ?\"    				Fire every minute starting at 2pm and ending at 2:05pm, every day  "
+	+"\n\"0 10,44 14 ? 3 WED\"    			Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.  "
+	+"\n\"0 15 10 ? * MON-FRI\"   			Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday"  
+	+"\n\"0 15 10 15 * ?\"    				Fire at 10:15am on the 15th day of every month  "
+	+"\n\"0 15 10 L * ?\"    				Fire at 10:15am on the last day of every month  "
+	+"\n\"0 15 10 ? * 6L\"    				Fire at 10:15am on the last Friday of every month  "
+	+"\n\"0 15 10 ? * 6L\"    				Fire at 10:15am on the last Friday of every month  "
+	+"\n\"0 15 10 ? * 6L 2002-2005\"    	Fire at 10:15am on every last Friday of every month during the years 2002, 2003, 2004 and 2005"  
+	+"\n\"0 15 10 ? * 6#3\"    				Fire at 10:15am on the third Friday of every month  "
+
+	+"\n\nPay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields!" 
+	
+	+"\n\nNOTES:" 
+	+"\nSupport for specifying both a day-of-week and a day-of-month value is not complete (you'll need to use the '?' character in on of these fields)." 
+	+"\nBe careful when setting fire times between mid-night and 1:00 AM - \"daylight savings\" can cause a skip or a repeat depending on whether the time moves back or jumps forward.";
+	
+	/* Scheduler/Trigger constants for configuration file */
+	public static final String DIRECTORY = ".directory";
+	public static final String FILE_TRIGGER = ".forfilemask";
+	public static final String CRON_SCHEDULER = ".cronscheduler";
+	public static final String HOURLY_SCHEDULER = ".hourlyscheduler.minute";
+	public static final String DAILY_SCHEDULER_MIN = ".dailyscheduler.minute";
+	public static final String DAILY_SCHEDULER_HOUR = ".dailyscheduler.hour";
+	public static final String WEEKLY_SCHEDULER_HOUR = ".weeklyscheduler.hour";
+	public static final String WEEKLY_SCHEDULER_MIN = ".weeklyscheduler.minute";
+	public static final String WEEKLY_SCHEDULER_DAYOFWEEK = ".weeklyscheduler.dayofweek";
+	public static final String MONTHLY_SCHEDULER_HOUR = ".monthlyscheduler.hour";
+	public static final String MONTHLY_SCHEDULER_MIN = ".monthlyscheduler.minute";
+	public static final String MONTHLY_SCHEDULER_DAYOFMONTH = ".monthlyscheduler.dayofmonth";
+	
+}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalJob.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalJob.java
new file mode 100644
index 0000000..dfa92ad
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalJob.java
@@ -0,0 +1,93 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+import java.util.ArrayList;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.FutureTask;
+
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OSBPSignalJob extends OSBPSignalCommonData implements Job {
+	/** the log */
+	private Logger log = LoggerFactory.getLogger("scheduler");
+	/** the executor service for the processing of all job's tasks*/
+	private ExecutorService executorService = Executors.newCachedThreadPool();
+
+	/** Default constructor is needed for quartz.*/
+	public OSBPSignalJob() {}
+	
+	@Override
+	/**
+	 * Triggers the job's logic.
+	 */
+	public void execute(JobExecutionContext context) throws JobExecutionException {
+		log.info("Execution of ["+context.getJobDetail().getKey()+"] ...");
+		if(context.getJobDetail().getJobDataMap().getBoolean(OSBPSignalConstants.SEQUENTIAL)){
+			executeTasksSequentially((String)context.getJobDetail().getJobDataMap().get(OSBPSignalConstants.TASKSLIST));
+		}else{
+			executeTasksParallel((String)context.getJobDetail().getJobDataMap().get(OSBPSignalConstants.TASKSLIST));
+		}
+	}
+	
+	/**
+	 * Executes the list of tasks sequentially.
+	 * @param handlername handler name, having the list of tasks to be executed
+	 * @return true if the execution was successful, false if not
+	 */
+	public void executeTasksSequentially(String handlername) {
+		log.info("Start - Sequential execution of list of tasks from handler ["+handlername+"] ...");
+		
+		for (WorkerThreadRunnable interchange : getListOfTasks().get(handlername)) {
+			try {
+				executorService.submit(interchange).get();
+			} catch (Exception e) {
+				log.error("Execution - " + interchange.getDirection() + " for " + interchange.getName()
+						+ " interupted!\n" + e.getMessage());
+			}
+		}
+		log.info("End - Sequential execution of list of tasks from handler ["+handlername+"] ...");
+	}
+
+	/**
+	 * Executes the list of tasks in parallel fashion.
+	 * @param handlername handler name, having the list of tasks to be executed
+	 */
+	@SuppressWarnings("unchecked")
+	public void executeTasksParallel(String handlername) {
+		log.info("Start - Parallel execution of list of tasks from handler ["+handlername+"] ...");
+		
+		boolean allTasksDone = false;
+		ArrayList<FutureTask<WorkerThreadRunnable>> tasks = new ArrayList<>();
+		for (WorkerThreadRunnable dataint : getListOfTasks().get(handlername)) {
+			tasks.add((FutureTask<WorkerThreadRunnable>) executorService.submit(dataint));
+		}
+		while (!allTasksDone) {
+			allTasksDone = allTasksDone(tasks);
+		}
+		if (allTasksDone) {
+			log.info("All tasks done!");
+		}
+		log.info("End - Parallel execution of list of tasks from handler ["+handlername+"] ...");
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalScheduler.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalScheduler.java
new file mode 100644
index 0000000..8469c2b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalScheduler.java
@@ -0,0 +1,223 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.signal.common;
+
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute;
+import static org.quartz.CronScheduleBuilder.monthlyOnDayAndHourAndMinute;
+import static org.quartz.CronScheduleBuilder.weeklyOnDayAndHourAndMinute;
+import static org.quartz.JobBuilder.newJob;
+import static org.quartz.TriggerBuilder.newTrigger;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+import org.quartz.CronExpression;
+import org.quartz.CronTrigger;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.Trigger;
+import org.quartz.TriggerKey;
+import org.quartz.impl.StdSchedulerFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class OSBPSignalScheduler extends OSBPSignalCommonData {
+
+	public Logger log = LoggerFactory.getLogger("scheduler");
+	private Scheduler scheduler;
+	
+	/**
+	 * Constructor
+	 * @throws SchedulerException possible thrown exception
+	 */
+	public OSBPSignalScheduler() throws SchedulerException {
+		initScheduler();
+	}
+	
+	/**
+	 * Initializes the {@link #scheduler} field.
+	 * @throws SchedulerException possible thrown exception
+	 */
+	public void initScheduler() throws SchedulerException {
+		log.info("Initializes scheduler ...");
+		SchedulerFactory schedulerFactory = new StdSchedulerFactory();
+		scheduler = schedulerFactory.getScheduler();
+	}
+
+	/**
+	 * Starts the {@link #scheduler}.
+	 * @throws SchedulerException
+	 */
+	public void startScheduler() throws SchedulerException {
+		log.info("Starts scheduler ...");
+		scheduler.start();
+	}
+
+	/**
+	 * Halts the Scheduler's firing of Triggers, and cleans up all resources
+	 * associated with the Scheduler.
+	 * 
+	 * @param waitForJobsToComplete
+	 *            whether or not the scheduler shuts down immediately or wait
+	 *            for jobs to finish.
+	 * @throws SchedulerException
+	 */
+	public void shutdownScheduler(boolean waitForJobsToComplete) throws SchedulerException {
+		log.info("Shutdowns scheduler ...");
+		scheduler.shutdown(waitForJobsToComplete);
+	}
+
+	public void pauseScheduler() throws SchedulerException {
+		log.info("Pauses scheduler ...");
+		scheduler.pauseAll();
+	}
+
+	public void resumeScheduler() throws SchedulerException {
+		log.info("Resumes scheduler ...");
+		scheduler.resumeAll();
+	}
+
+	/**
+	 * Schedules a given job based on a given trigger.
+	 * @param job		the {@link JobDetail} to be scheduled
+	 * @param trigger	the corresponding trigger
+	 * @return
+	 */
+	public Date scheduleJob(JobDetail job, Trigger trigger) {
+		try {
+			return scheduler.scheduleJob(job, trigger);
+		} catch (SchedulerException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	/**
+	 * Unschedules a job.
+	 * @param triggerkey	the trigger key.
+	 */
+	public void unscheduleJob(TriggerKey triggerkey) {
+		try {
+			scheduler.unscheduleJob(triggerkey);
+		} catch (SchedulerException e1) {
+			e1.printStackTrace();
+		}
+	}
+	
+	/**
+	 * Creates a job based on the given list of tasks. 
+	 * @param name			Job name
+	 * @param groupname		Group name
+	 * @param description	Description of the job
+	 * @param issequential	Execution type of the given lsit of tasks
+	 * @param takslist		List of tasks, for now only Datainterchange import/export-Funktionnen.
+	 * @return	{@link JobDetail} the newly created Job.
+	 */
+	public JobDetail createDataTransferJob(String name, String groupname, String description, boolean issequential,
+			ArrayList<WorkerThreadRunnable> takslist) {
+		JobDetail job = newJob(OSBPSignalJob.class).usingJobData(OSBPSignalConstants.SEQUENTIAL, issequential)
+				.withDescription(description).withIdentity(name, groupname).build();
+		job.getJobDataMap().putIfAbsent(OSBPSignalConstants.TASKSLIST, takslist);
+		return job;
+	}
+
+	/**
+	 * Creates an hourly based trigger.
+	 * @param name			Trigger name
+	 * @param groupname		Group name
+	 * @param minute		The exact minute, in which the trigger is hourly fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createHourlyTrigger(String name, String groupname, int minute) {
+		log.debug("Creating createHourlyTrigger [" + name + "] for group [" + groupname
+		+ "] running hourly at [" + minute + "] minutes ...");
+		
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+		.withSchedule(cronSchedule(String.format("0 %s * * * ?", minute))).build();
+		
+		log.debug("createHourlyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a daily based trigger.
+	 * @param name			Trigger name
+	 * @param groupname		Group name
+	 * @param hour			The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute		The exact minute, in which the trigger is hourly in a day fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createDailyTriggerAtHourandMins(String name, String groupname, int hour, int minute) {
+		log.debug("Creating DailyTrigger [" + name + "] for group [" + groupname + "] running at hour[" + hour
+				+ "] and [" + minute + "] minutes ...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(dailyAtHourAndMinute(hour, minute)).build();
+		log.debug("DailyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a weekly based trigger.
+	 * @param name			Trigger name
+	 * @param groupname		Group name
+	 * @param dayOfWeek		The day of the week on which the trigger has to be fired (0-6 for Sunday-Saturday).
+	 * @param hour			The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute		The exact minute, in which the trigger is hourly in a day fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createWeeklyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfWeek, int hour, int minute) {
+		log.debug("Creating Trigger [" + name + "] for group [" + groupname + "] ...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).build();
+		log.debug("Trigger " + trigger + " successfully created.");
+		return trigger;
+	}
+	
+	/**
+	 * Creates a monthly based trigger.
+	 * @param name			Trigger name
+	 * @param groupname		Group name
+	 * @param dayOfMonth	The day of the month on which the trigger has to be fired (1-31).
+	 * @param hour			The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute		The exact minute, in which the trigger is hourly in a day fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createMonthlyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfMonth, int hour, int minute) {
+		log.debug("Creating MonthlyTrigger["+name+"] for group [" + groupname + "] on Day["+dayOfMonth+"] and Hour["+hour+"] and ["+minute+"]Minute...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(monthlyOnDayAndHourAndMinute(dayOfMonth, hour, minute)).build();
+		log.debug("MonthlyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a cron based trigger, depending on the given cron-expression. 
+	 * @param name			Trigger name
+	 * @param groupname		Group name
+	 * @param expression	the {@link CronExpression} as string value
+	 * @return {@link CronTrigger} the newly created cron-trigger.
+	 */
+	public CronTrigger createCronTrigger(String name, String groupname, String expression) {
+		log.debug("Creating CronTrigger [" + name + "] for group [" + groupname + "] with CronExpression [" + expression
+				+ "]...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(cronSchedule(expression)).build();
+		log.debug("CronTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java
index ef0b027..2bea986 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/common/OSBPSignalWatcher.java
@@ -1,8 +1,29 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License 2.0        
+ *  which accompanies this distribution, and is available at                  
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
 package org.eclipse.osbp.xtext.signal.common;
 
 import static java.nio.file.LinkOption.NOFOLLOW_LINKS;
 import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
 import static java.nio.file.StandardWatchEventKinds.OVERFLOW;
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute;
+import static org.quartz.CronScheduleBuilder.monthlyOnDayAndHourAndMinute;
+import static org.quartz.CronScheduleBuilder.weeklyOnDayAndHourAndMinute;
+import static org.quartz.JobBuilder.newJob;
+import static org.quartz.TriggerBuilder.newTrigger;
 
 import java.io.IOException;
 import java.nio.file.FileSystems;
@@ -16,48 +37,72 @@
 import java.nio.file.WatchKey;
 import java.nio.file.WatchService;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Date;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.FutureTask;
+import java.util.regex.PatternSyntaxException;
 
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
+import org.quartz.CronExpression;
+import org.quartz.CronTrigger;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
+import org.quartz.TriggerKey;
+import org.quartz.impl.StdSchedulerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class OSBPSignalWatcher {
-
-	private Logger log = LoggerFactory.getLogger("watcher");
+public abstract class OSBPSignalWatcher extends OSBPSignalCommonData {
+	/** the log */
+	public Logger log = LoggerFactory.getLogger("watcher");
+	/** the scheduler */
+	private Scheduler scheduler;
 	/** the watcher service */
 	private WatchService watcher;
 	/** list of all created keys and paths */
 	private Map<WatchKey, Path> keys = null;
-	/** list of all signal type to watch */
-	private List<SignalTypeEnum> signals = null;
-
 	/**
 	 * determines if the all tree of a directory has to be watched for changes
 	 */
 	private boolean recursive = false;
-	// private static final long TIMEOUT = 10L;
-	// private static final TimeUnit TIMEUNIT = TimeUnit.SECONDS;
+	/** determine if the path has already been registered or not */
+	private boolean pathregistered = false;
+	/** the list of handler names and their file masks */
+	private static HashMap<String, String> masks = new HashMap<>();
+	/** the executor service for the processing of all tasks */
+	private static ExecutorService executorService = Executors.newCachedThreadPool();
 
-	/** the list of filemasks and the corresponding actions to execute */
-	private Map<String, SignalHandlerTypeEnum> masksAndactions = new HashMap<>();
-
-	public OSBPSignalWatcher() throws IOException {
-		this.watcher = FileSystems.getDefault().newWatchService();
-		this.keys = new HashMap<WatchKey, Path>();
-	}
-
-	public void setSignals(List<SignalTypeEnum> signals) {
-		this.signals = signals;
+	/**
+	 * Constructor.
+	 * 
+	 * @throws IOException
+	 */
+	public OSBPSignalWatcher() throws Exception {
+		initWatcher();
 	}
 
 	/**
-	 * Process all events for keys queued to the watcher
+	 * Initializes the {@link #watcher}.
+	 * 
+	 * @throws IOException
+	 *             possible thrown exception
+	 */
+	public void initWatcher() throws IOException {
+		this.watcher = FileSystems.getDefault().newWatchService();
+		this.keys = new HashMap<>();
+	}
+
+	/**
+	 * Process all events for keys queued to the watcher.
 	 */
 	public void processEvents() {
 		for (;;) {
@@ -91,7 +136,12 @@
 					log.debug(String.format("%s: %s\n", event.kind().name(), child));
 
 					// only allowed event can be handle
-					handleEvent(ev, child);
+					try {
+						handleEvent(child);
+					} catch (Exception e) {
+						log.error("WatcherService shortly interrupted due to: " + e.toString());
+						log.info("WatcherService resumed.");
+					}
 
 					// if directory is created, and watching recursively, then
 					// register it and its sub-directories
@@ -105,7 +155,6 @@
 						}
 					}
 				}
-
 				// reset key and remove from set if directory no longer
 				// accessible
 				boolean valid = key.reset();
@@ -118,42 +167,33 @@
 					}
 				}
 			}
-
 		}
 	}
 
 	/**
-	 * Checks if an event type has to be handle or not.
+	 * Checks if an event type has to be handle or not. Only create event are
+	 * allowed for now on.
 	 * 
 	 * @param event
 	 *            {@link WatchEvent<Path>} the event
 	 * @return true if yes, false if not
 	 */
 	public boolean isHandlingAllowed(Kind<?> event) {
-//		if (signals.contains(SignalTypeEnum.ALL)) {
-//			return true;
-//		}
-
-		switch (event.name()) {
-		case "ENTRY_CREATE":
-			return signals.contains(SignalTypeEnum.CREATESIGNALS);
-//		case "ENTRY_DELETE":
-//			return signals.contains(SignalTypeEnum.DELETESIGNALS);
-		case "ENTRY_MODIFY":
-			return signals.contains(SignalTypeEnum.MODIFYSIGNALS);
-		default:
+		if (event.name().equals("ENTRY_CREATE")) {
+			return true;
+		} else {
 			return false;
 		}
-
 	}
 
 	/**
-	 * Handling method for the user to extend
+	 * Handling operation to execute after the given file is created in the
+	 * watched directory.
 	 * 
-	 * @param event
-	 *            the {@link WatchEvent}
+	 * @param file
+	 *            the newly created file, to react on
 	 */
-	public void handleEvent(WatchEvent<Path> event, Path file) {
+	public void handleEvent(Path file) {
 	}
 
 	@SuppressWarnings("unchecked")
@@ -185,53 +225,15 @@
 	 * Register the given directory with the WatchService
 	 * 
 	 * @param directory
-	 * @param signals
 	 * @param combined
 	 *            true to create only one {@link WatchKey} for all event types,
 	 *            false to create separate key for each event type.
 	 * @throws IOException
 	 */
 	public void registerPathToWatcher(Path directory) throws IOException {
-		if (signals != null && !signals.isEmpty() && directory != null) {
-//			if (signals.contains(SignalTypeEnum.ALL)) {
-//				// create a default key for all kind of changes
-//				// and save the key for later use
-//				getRegisteredKeysAndPaths().put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_CREATE,
-//						StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY), directory);
-//			} 
-//			else {
-				for (SignalTypeEnum signal : signals) {
-					switch (signal) {
-					case CREATESIGNALS: {
-						// create a default key for all kind of changes
-						// and save the key for later use
-						getRegisteredKeysAndPaths()
-								.put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_CREATE), directory);
-						break;
-					}
-					case MODIFYSIGNALS: {
-						// create a default key for all kind of changes
-						// and save the key for later use
-						getRegisteredKeysAndPaths()
-								.put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_MODIFY), directory);
-						break;
-					}
-//					case DELETESIGNALS: {
-//						// create a default key for all kind of changes
-//						// and save the key for later use
-//						getRegisteredKeysAndPaths()
-//								.put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_DELETE), directory);
-//						break;
-//					}
-					default:
-						// create no keys
-						break;
-					}
-				}
-//			}
-		} else {
-			log.debug("directory or signal type missing");
-		}
+		log.info("Directory of path to watch: [" + directory + "] registered!");
+		getRegisteredKeysAndPaths().put(directory.register(getWatcher(), StandardWatchEventKinds.ENTRY_CREATE),
+				directory);
 	}
 
 	/**
@@ -244,14 +246,6 @@
 	}
 
 	/**
-	 * 
-	 * @return
-	 */
-	public int getWatcherState() {
-		return watcher != null ? 1 : -1;
-	}
-
-	/**
 	 * Closes the watcher service
 	 * 
 	 * @return true if yes or non existing, false if not
@@ -305,66 +299,419 @@
 	}
 
 	/**
-	 * Provides the appropriate action to execute based on the filename/filemask
-	 * check.
+	 * Checks if the given filename corresponds to one of the file masks
+	 * eventually defined in one handler of the watcher
 	 * 
 	 * @param filename
-	 *            filename
-	 * @return
+	 *            the filename to be checked
+	 * @return the corresponding handler name or null
 	 */
-	public SignalHandlerTypeEnum checkFileMask(String filename) {
-		if (filename != null && !filename.isEmpty()) {
-			for (String mask : masksAndactions.keySet()) {
-				String filemask = mask.substring(mask.indexOf("|") + 1);
-				// checks if a file matches
-				if (filename.toLowerCase().equals(filemask.toLowerCase())
-						|| filename.toLowerCase().contains(filemask.toLowerCase())
-						|| filename.toLowerCase().matches(filemask.toLowerCase())) {
-					return masksAndactions.get(mask);
+	public String isFileNameValid(String filename) {
+		if (filename != null && !filename.isEmpty() && !masks.isEmpty()) {
+			for (String handlername : masks.keySet()) {
+				String filemask = masks.get(handlername);
+				try {
+					if (filename.toLowerCase().equals(filemask.toLowerCase()) || filename.matches(filemask)) {
+						return handlername;
+					}
+				} catch (PatternSyntaxException e) {
+					log.error("The defined pattern [" + filemask + "] is invalid.");
 				}
 			}
 		}
-		// in the case of no filename matches
-		return SignalHandlerTypeEnum.DOAFTER;
+		return null; // in the case of no filename matches
 	}
 
-	public String isFileMaskValid(String filename, Kind<?> event) {
-		if (filename != null && !filename.isEmpty()) {
-			// checks if a filemask exist with the corresponding action
-			// filemask + create | filemask + modify | filemask + delete
-			for (String mask : masksAndactions.keySet()) {
-				String filemask = mask.substring(mask.indexOf("|") + 1);
-				// check if filename matches the mask
-				if (filename.toLowerCase().equals(filemask.toLowerCase())
-						|| filename.toLowerCase().contains(filemask.toLowerCase())
-						|| filename.toLowerCase().matches(filemask.toLowerCase())) {
-
-					// then if the action is also allowed
-					if (masksAndactions.get(mask).equals(getAcionTypeOnEvent(event))) {
-						return mask;
-					}
-				}
+	/**
+	 * Checks if the given directory ends with / or \, whatever is correct.
+	 * 
+	 * @param dirPath
+	 *            the path
+	 * @return true if yes, false if not
+	 */
+	public String checkPath(final String dirPath) {
+		
+		String cs = FileSystems.getDefault().getSeparator();
+		if (!dirPath.contains( cs )) {
+			cs = "/";
+			if (!dirPath.contains( cs )) {
+				return dirPath;
 			}
 		}
-		// in the case of no filename matches
+		
+		if (!dirPath.endsWith(cs)) {
+			return dirPath.concat(cs);
+		}
+ 
+		return dirPath;
+	}
+
+	/**
+	 * Gives the value of {@link #pathregistered}
+	 * 
+	 * @return true or false
+	 */
+	public boolean isPathregistered() {
+		return pathregistered;
+	}
+
+	/**
+	 * Set the value of {@link #pathregistered}
+	 * 
+	 * @param pathregistered
+	 *            value of {@link #pathregistered}
+	 */
+	public void setPathregistered(boolean pathregistered) {
+		this.pathregistered = pathregistered;
+	}
+
+	/**
+	 * Executes the given list of tasks sequentially.
+	 * 
+	 * @param handlername
+	 *            handler name, having the list of tasks to be executed
+	 * @param triggerfile
+	 *            the trigger file that has to be deleted at the end
+	 */
+	public void executeTasksSequentially(String handlername, final Path triggerfile) {
+		log.info("Start - Sequential execution of list of tasks from handler [" + handlername + "] ...");
+		for (WorkerThreadRunnable interchange : getListOfTasks().get(handlername)) {
+			// Making sure that the current task is done before continuing
+			try {
+				executorService.submit(interchange).get();
+			} catch (Exception e) {
+				log.error("Execution - " + interchange.getDirection() + " for " + interchange.getName()
+						+ " interupted!\n" + e.getMessage());
+			}
+		}
+		deleteFile(triggerfile); // always delete the triggerfile
+		log.info("End - Sequential execution of list of tasks from handler [" + handlername + "] ...");
+	}
+
+	/**
+	 * Executes the given list of tasks parallel.
+	 * 
+	 * @param handlername
+	 *            handler name, having the list of tasks to be executed
+	 * @param triggerfile
+	 *            the trigger file that has to be deleted at the end
+	 */
+	@SuppressWarnings("unchecked")
+	public void executeTasksParallel(String handlername, final Path triggerfile) {
+		log.info("Start - Parallel execution of list of tasks from handler [" + handlername + "] ...");
+		boolean allTasksDone = false;
+		ArrayList<FutureTask<WorkerThreadRunnable>> tasks = new ArrayList<>();
+		for (WorkerThreadRunnable dataint : getListOfTasks().get(handlername)) {
+			tasks.add((FutureTask<WorkerThreadRunnable>) executorService.submit(dataint));
+		}
+		while (!allTasksDone) {
+			allTasksDone = allTasksDone(tasks);
+		}
+		if (allTasksDone) {
+			log.info("All tasks done!");
+			deleteFile(triggerfile);
+		}
+		log.info("End - Parallel execution of list of tasks from handler [" + handlername + "] ...");
+	}
+
+	/**
+	 * Checks, if the given list of tasks has been fully processed.
+	 * 
+	 * @param tasks
+	 *            the list of tasks
+	 *            {@link ArrayList<FutureTask<WorkerThreadRunnable>>}
+	 * @return true if yes, false if not
+	 */
+	@Override
+	public boolean allTasksDone(ArrayList<FutureTask<WorkerThreadRunnable>> tasks) {
+		for (FutureTask<WorkerThreadRunnable> task : tasks) {
+			if (task != null && !task.isDone()) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	/**
+	 * Gives the list of file back.
+	 * 
+	 * @return {@link HashMap<String, String>} the list of file masks
+	 */
+	public HashMap<String, String> getMasks() {
+		return masks;
+	}
+
+	/**
+	 * Adds a new <handler name - file mask> pair to the {@link #masks}.
+	 * 
+	 * @param handlername
+	 *            the handler name
+	 * @param filemask
+	 *            the file mask
+	 */
+	public void addFileMasks(String handlername, String filemask) {
+		masks.put(handlername, filemask);
+	}
+
+	//////////// SCHEDULER FUNCTIONALITIES //////////
+
+	/**
+	 * Initializes the {@link #scheduler} field.
+	 * 
+	 * @param schedname
+	 * @param threadcount
+	 *            the maximum number of job that can be run simultaneously
+	 * @throws SchedulerException
+	 *             possible thrown exception
+	 */
+	public void initScheduler(String schedname, String threadcount) throws SchedulerException {
+		log.info("Initializes " + schedname + " ...");
+		Properties properties = new Properties();
+		properties.put("version", "2.2.1");
+		properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "AUTO");
+		properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME, schedname);
+		properties.put(StdSchedulerFactory.PROP_SCHED_NAME, schedname);
+		properties.put(StdSchedulerFactory.PROP_THREAD_POOL_PREFIX + ".threadCount", threadcount);
+		properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, "org.quartz.simpl.SimpleThreadPool");
+		scheduler = new StdSchedulerFactory(properties).getScheduler();
+		log.info(schedname + " successfully initialized!");
+	}
+
+	/**
+	 * Starts the {@link #scheduler}.
+	 * 
+	 * @throws SchedulerException
+	 */
+	public void startScheduler() throws SchedulerException {
+		scheduler.start();
+		log.info(scheduler.getSchedulerName() + " Service started!");
+	}
+
+	/**
+	 * Halts the Scheduler's firing of Triggers, and cleans up all resources
+	 * associated with the Scheduler.
+	 * 
+	 * @param waitForJobsToComplete
+	 *            whether or not the scheduler shuts down immediately or wait
+	 *            for jobs to finish.
+	 * @throws SchedulerException
+	 */
+	public void shutdownScheduler(boolean waitForJobsToComplete) throws SchedulerException {
+		log.info("Shutdowns scheduler ...");
+		scheduler.shutdown(waitForJobsToComplete);
+	}
+
+	/**
+	 * Halts the Scheduler's firing of Triggers, and cleans up all resources
+	 * associated with the Scheduler.
+	 * 
+	 * @throws SchedulerException
+	 */
+	public void shutdownScheduler() throws SchedulerException {
+		log.info("Shutdowns scheduler ...");
+		scheduler.shutdown();
+	}
+
+	/**
+	 * Pauses the {@link #scheduler}.
+	 * 
+	 * @throws SchedulerException
+	 *             possible thrown exception
+	 */
+	public void pauseScheduler() throws SchedulerException {
+		log.info("Pauses scheduler ...");
+		scheduler.pauseAll();
+	}
+
+	/**
+	 * Resumes the {@link #scheduler}.
+	 * 
+	 * @throws SchedulerException
+	 *             possible thrown exception
+	 */
+	public void resumeScheduler() throws SchedulerException {
+		log.info("Resumes scheduler ...");
+		scheduler.resumeAll();
+	}
+
+	/**
+	 * Gives the {@link #scheduler} back.
+	 * 
+	 * @return the {@link OSBPSignalScheduler}
+	 */
+	public Scheduler getScheduler() {
+		return scheduler;
+	}
+
+	/**
+	 * Schedules a given job based on a given trigger.
+	 * 
+	 * @param job
+	 *            the {@link JobDetail} to be scheduled
+	 * @param trigger
+	 *            the corresponding trigger
+	 * @return
+	 */
+	public Date scheduleJob(JobDetail job, Trigger trigger) {
+		try {
+			return scheduler.scheduleJob(job, trigger);
+		} catch (SchedulerException e) {
+			e.printStackTrace();
+		}
 		return null;
 	}
 
-	private SignalHandlerTypeEnum getAcionTypeOnEvent(Kind<?> event) {
-		switch (event.name()) {
-		case "ENTRY_CREATE":
-			return SignalHandlerTypeEnum.DOAFTERCREATE;
-		case "ENTRY_MODIFY":
-			return SignalHandlerTypeEnum.DOAFTERMODIFY;
-//		case "ENTRY_DELETE":
-//			return SignalHandlerTypeEnum.DOAFTERDELETE;
-		default:
-			return SignalHandlerTypeEnum.DOAFTER;
+	/**
+	 * Unschedules a job.
+	 * 
+	 * @param triggerkey
+	 *            the trigger key.
+	 */
+	public void unscheduleJob(TriggerKey triggerkey) {
+		try {
+			scheduler.unscheduleJob(triggerkey);
+		} catch (SchedulerException e1) {
+			e1.printStackTrace();
 		}
 	}
 
-	public void addFilemaskAndAction(String filemask, SignalHandlerTypeEnum action) {
-		this.masksAndactions.put(filemask, action);
+	/**
+	 * Creates a job based on the given watcher - handler name.
+	 * 
+	 * @param name
+	 *            Job name
+	 * @param groupname
+	 *            Group name
+	 * @param description
+	 *            Description of the job
+	 * @param issequential
+	 *            Execution type of the given lsit of tasks
+	 * @param handlername
+	 *            name of watcher - handler for this specific job.
+	 * @return {@link JobDetail} the newly created Job.
+	 */
+	public JobDetail createDataTransferJob(String name, String groupname, String description, boolean issequential,
+			String handlername) {
+		JobDetail job = newJob(OSBPSignalJob.class).usingJobData(OSBPSignalConstants.SEQUENTIAL, issequential)
+				.withDescription(description).withIdentity(name, groupname).build();
+		job.getJobDataMap().putIfAbsent(OSBPSignalConstants.TASKSLIST, handlername);
+		return job;
 	}
 
-}
+	/**
+	 * Creates an hourly based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createHourlyTrigger(String name, String groupname, int minute) {
+		log.debug("Creating createHourlyTrigger [" + name + "] for group [" + groupname + "] running hourly at ["
+				+ minute + "] minutes ...");
+
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(cronSchedule(String.format("0 %s * * * ?", minute))).build();
+
+		log.debug("createHourlyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a daily based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param hour
+	 *            The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly in a day
+	 *            fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createDailyTriggerAtHourandMins(String name, String groupname, int hour, int minute) {
+		log.debug("Creating DailyTrigger [" + name + "] for group [" + groupname + "] running at hour[" + hour
+				+ "] and [" + minute + "] minutes ...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(dailyAtHourAndMinute(hour, minute)).build();
+		log.debug("DailyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a weekly based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param dayOfWeek
+	 *            The day of the week on which the trigger has to be fired (0-6
+	 *            for Sunday-Saturday).
+	 * @param hour
+	 *            The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly in a day
+	 *            fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createWeeklyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfWeek, int hour,
+			int minute) {
+		log.debug("Creating Trigger [" + name + "] for group [" + groupname + "] ...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(weeklyOnDayAndHourAndMinute(dayOfWeek, hour, minute)).build();
+		log.debug("Trigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a monthly based trigger.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param dayOfMonth
+	 *            The day of the month on which the trigger has to be fired
+	 *            (1-31).
+	 * @param hour
+	 *            The exact hour, in which the trigger is daily fired (0-23).
+	 * @param minute
+	 *            The exact minute, in which the trigger is hourly in a day
+	 *            fired (0-59).
+	 * @return {@link CronTrigger} the newly created trigger.
+	 */
+	public CronTrigger createMonthlyTriggerOnDayAndHourAndMinute(String name, String groupname, int dayOfMonth,
+			int hour, int minute) {
+		log.debug("Creating MonthlyTrigger[" + name + "] for group [" + groupname + "] on Day[" + dayOfMonth
+				+ "] and Hour[" + hour + "] and [" + minute + "]Minute...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname)
+				.withSchedule(monthlyOnDayAndHourAndMinute(dayOfMonth, hour, minute)).build();
+		log.debug("MonthlyTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+
+	/**
+	 * Creates a cron based trigger, depending on the given cron-expression.
+	 * 
+	 * @param name
+	 *            Trigger name
+	 * @param groupname
+	 *            Group name
+	 * @param expression
+	 *            the {@link CronExpression} as string value
+	 * @return {@link CronTrigger} the newly created cron-trigger.
+	 */
+	public CronTrigger createCronTrigger(String name, String groupname, String expression) {
+		log.debug("Creating CronTrigger [" + name + "] for group [" + groupname + "] with CronExpression [" + expression
+				+ "]...");
+		CronTrigger trigger = newTrigger().withIdentity(name, groupname).withSchedule(cronSchedule(expression)).build();
+		log.debug("CronTrigger " + trigger + " successfully created.");
+		return trigger;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.xtend
index 26c609f..97e2af7 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/imports/ShouldImportProvider.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/imports/ShouldImportProvider.java
index 7b497be..6f986e5 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/imports/ShouldImportProvider.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/imports/ShouldImportProvider.java
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend
index 1ce0fc0..cc8151b 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -16,9 +18,9 @@
 
 package org.eclipse.osbp.xtext.signal.jvmmodel
 
-import java.io.IOException
 import java.nio.file.Path
 import java.util.HashSet
+import java.util.concurrent.ExecutorService
 import javax.inject.Inject
 import org.eclipse.osbp.core.api.persistence.IPersistenceService
 import org.eclipse.osbp.datainterchange.api.IDataInterchange
@@ -29,15 +31,21 @@
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML
+import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable.Direction
-import org.eclipse.osbp.xtext.signal.ListTransfer
+import org.eclipse.osbp.xtext.signal.CronScheduler
+import org.eclipse.osbp.xtext.signal.DailyScheduler
+import org.eclipse.osbp.xtext.signal.HourlyScheduler
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler
 import org.eclipse.osbp.xtext.signal.SignalActionEnum
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum
 import org.eclipse.osbp.xtext.signal.SignalPackage
+import org.eclipse.osbp.xtext.signal.SignalScheduler
 import org.eclipse.osbp.xtext.signal.SignalWatcher
-import org.eclipse.osbp.xtext.signal.SingleTransfer
+import org.eclipse.osbp.xtext.signal.TriggerFile
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler
 import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher
 import org.eclipse.xtext.common.types.JvmField
 import org.eclipse.xtext.common.types.JvmGenericType
@@ -52,8 +60,8 @@
 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 java.util.concurrent.ExecutorService
+
+import static org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants.*
 
 /**
  * <p>Infers a JVM model from the source model.</p> 
@@ -86,7 +94,6 @@
 	def dispatch void infer(SignalPackage signalPackage, IJvmDeclaredTypeAcceptor acceptor,
 		boolean isPreIndexingPhase) {
 		val pckgName = signalPackage.name;
-
 		// create watchers
 		for (watcher : signalPackage.watchers) {
 			var watcherClass = watcher.toClass(watcher.fullyQualifiedName)
@@ -106,30 +113,111 @@
 				it.toBinderOperations(watcher)
 			])
 		}
+		
+		var watcherConfiguration = signalPackage.toClass(signalPackage.fullyQualifiedName)
+			watcherConfiguration.simpleName = "WatcherConfigurations"
+			watcherConfiguration.packageName = pckgName
+			watcherConfiguration.abstract = true
+		
+		acceptor.accept(watcherConfiguration, [
+			it.fileHeader = signalPackage.documentation
+			it.toConfigOperations(signalPackage)
+		])
 	}
 	
+	def void toConfigOperations(JvmGenericType type, SignalPackage pck){
+		type.members += pck.toMethod("init", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			visibility = JvmVisibility.PUBLIC
+			documentation = "Initializes all watcher configurations of this package."
+			static = true
+			body = [append('''«pck.initConfigurations»''')]
+		])
+	}
+	
+	def String initConfigurations(SignalPackage pck){
+		var result = 
+		'''
+		OSBPSignalCommonData.initWatcherconfigurations();
+		'''
+		for(watcher : pck.watchers){
+			
+			val watchername = '''«pck.name».«watcher.name»'''.toString
+			result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername+DIRECTORY»","«watcher.directory»");
+			''')
+			
+			for(handler : watcher.handlers){
+				if(handler.triggerpolicy instanceof TriggerFile){
+					result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+FILE_TRIGGER»", "«(handler.triggerpolicy as TriggerFile).filemask»");
+					''')
+				}
+				else{
+					val signal = (handler.triggerpolicy as SignalScheduler)
+					if(signal.scheduler instanceof CronScheduler){
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+CRON_SCHEDULER»", "«(signal.scheduler as CronScheduler).expression»");
+						''')
+					}
+					else if(signal.scheduler instanceof HourlyScheduler){
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+HOURLY_SCHEDULER»","«(signal.scheduler as HourlyScheduler).minute»");
+						''')
+					}
+					else if(signal.scheduler instanceof DailyScheduler){
+						var daily = (signal.scheduler as DailyScheduler)
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+DAILY_SCHEDULER_HOUR»", "«daily.hour.toString»");
+						''')
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+DAILY_SCHEDULER_MIN»", "«daily.minute.toString»");
+						''')
+					}
+					else if(signal.scheduler instanceof WeeklyScheduler){
+						var weekly = (signal.scheduler as WeeklyScheduler)
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+WEEKLY_SCHEDULER_DAYOFWEEK»", "«weekly.dayofweek»");
+						''')
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+WEEKLY_SCHEDULER_HOUR»", "«weekly.hour.toString»");
+						''')
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+WEEKLY_SCHEDULER_MIN»", "«weekly.minute.toString»");
+						''')
+					}
+					else if(signal.scheduler instanceof MonthlyScheduler){
+						var monthly = (signal.scheduler as MonthlyScheduler)
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+MONTHLY_SCHEDULER_DAYOFMONTH»", "«monthly.dayofmonth.toString»");
+						''')
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+MONTHLY_SCHEDULER_HOUR»", "«monthly.hour.toString»");
+						''')
+						result = result.concat('''OSBPSignalCommonData.addWatcherConfig("«watchername».handler.«handler.name.toString+MONTHLY_SCHEDULER_MIN»", "«monthly.minute.toString»");
+						''')
+					}
+				}
+			}
+		}
+		result = result.concat('''
+		if(OSBPSignalCommonData.createOrUpdateConfigurationFile()){
+		    OSBPSignalCommonData.setConfigReady("«pck.fullyQualifiedName»", true);
+		}
+		''')
+		return result
+	}
+
 	def void toBinderOperations(JvmGenericType type, SignalWatcher watcher) {
-//		// getter sor services		
-//		type.members += watcher.toMethod("getDataInterchange", _typeReferenceBuilder.typeRef(IDataInterchange), [
-//			visibility = JvmVisibility.PUBLIC
-//			static = true
-//			body = [append('''return dataInterchange;''')]
-//		])
-//		type.members += watcher.toMethod("getBlobService", _typeReferenceBuilder.typeRef(IBlobService), [
-//			visibility = JvmVisibility.PUBLIC
-//			static = true
-//			body = [append('''return blobService;''')]
-//		])
-//		type.members += watcher.toMethod("getPersistenceService", _typeReferenceBuilder.typeRef(IPersistenceService), [
-//			visibility = JvmVisibility.PUBLIC
-//			static = true
-//			body = [append('''return persistenceService;''')]
-//		])
-//		type.members += watcher.toMethod("getUserAccessService", _typeReferenceBuilder.typeRef(IUserAccessService), [
-//			visibility = JvmVisibility.PUBLIC
-//			static = true
-//			body = [append('''return userAccessService;''')]
-//		])
+		// getter sor services		
+		type.members += watcher.toMethod("getDataInterchange", _typeReferenceBuilder.typeRef(IDataInterchange), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append('''return dataInterchange;''')]
+		])
+		type.members += watcher.toMethod("getBlobService", _typeReferenceBuilder.typeRef(IBlobService), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append('''return blobService;''')]
+		])
+		type.members += watcher.toMethod("getPersistenceService", _typeReferenceBuilder.typeRef(IPersistenceService), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append('''return persistenceService;''')]
+		])
+		type.members += watcher.toMethod("getUserAccessService", _typeReferenceBuilder.typeRef(IUserAccessService), [
+			visibility = JvmVisibility.PUBLIC
+			static = true
+			body = [append('''return userAccessService;''')]
+		])
 		// bind datainterchange service
 		type.members += watcher.toMethod("bindDataInterchangeMethod", _typeReferenceBuilder.typeRef(Void::TYPE), [
 			var annotationRef = _annotationTypesBuilder.annotationRef(typeof(Reference))
@@ -139,9 +227,11 @@
 			visibility = JvmVisibility.PUBLIC
 			synchronized = true
 			parameters += watcher.toParameter("dataInterchange", _typeReferenceBuilder.typeRef(IDataInterchange))
-			body = [append('''
-			this.dataInterchange = dataInterchange;
-			log.debug("Signal DataInterchange bound");''')]
+			body = [
+				append('''
+				this.dataInterchange = dataInterchange;
+				log.info("Signal DataInterchange bound");''')
+			]
 		])
 		// unbind datainterchange service
 		type.members += watcher.toMethod("unbindDataInterchangeMethod", _typeReferenceBuilder.typeRef(Void::TYPE), [
@@ -150,8 +240,8 @@
 			parameters += watcher.toParameter("dataInterchange", _typeReferenceBuilder.typeRef(IDataInterchange))
 			body = [
 				append('''
-				this.dataInterchange = null;
-				log.debug("Signal DataInterchange unbound");
+					this.dataInterchange = null;
+					log.info("Signal DataInterchange unbound");
 				''')
 			]
 		])
@@ -168,7 +258,7 @@
 				append(
 			'''
 					this.blobService = blobService;
-					log.debug("Signal BlobService bound");
+					log.info("Signal BlobService bound");
 				''')
 			]
 		])
@@ -181,7 +271,7 @@
 				append(
 			'''
 					this.blobService = null;
-					log.debug("Signal BlobService unbound");
+					log.info("Signal BlobService unbound");
 				''')
 			]
 		])
@@ -198,7 +288,7 @@
 				append(
 			'''
 					this.persistenceService = persistenceService;
-					log.debug("Signal PersistenceService bound");
+					log.info("Signal PersistenceService bound");
 				''')
 			]
 		])
@@ -211,7 +301,7 @@
 				append(
 			'''
 					this.persistenceService = null;
-					log.debug("Signal PersistenceService unbound");
+					log.info("Signal PersistenceService unbound");
 				''')
 			]
 		])
@@ -226,9 +316,9 @@
 			parameters += watcher.toParameter("userAccessService", _typeReferenceBuilder.typeRef(IUserAccessService))
 			body = [
 				append(
-			'''
-					this.userAccessService = userAccessService;
-					log.debug("Signal UserAccessService bound");
+				'''
+				this.userAccessService = userAccessService;
+				log.info("Signal UserAccessService bound");
 				''')
 			]
 		])
@@ -241,7 +331,7 @@
 				append(
 			'''
 				this.userAccessService = null;
-				log.debug("Signal UserAccessService unbound");''')
+				log.info("Signal UserAccessService unbound");''')
 			]
 		])
 	}
@@ -259,7 +349,7 @@
 		return dataInterchange.name.toFirstLower
 	}
 
-	def String getBasicRunConfiguration(DataInterchange dataInterchange, boolean fqClass,
+	def String getBasicRunConfiguration(String watcherfullQName, DataInterchange dataInterchange, boolean fqClass,
 		Direction direction, boolean asynch) {
 		var className = ""
 		if (fqClass) {
@@ -269,54 +359,62 @@
 		}
 		return '''
 			«className» «dataInterchange.getDefaultVariableName» = new «className»();
-			«dataInterchange.getDefaultVariableName».setFileURL(directory + FileSystems.getDefault().getSeparator() + filename);
+			String url = getHandlerPropertyFromConfigurationFile(directorykey);
+			«dataInterchange.getDefaultVariableName».setFileURL(checkPath(url != null ? url : getWatcherConfig(directorykey)) + filename);
 			«dataInterchange.getDefaultVariableName».setPersistenceService(persistenceService);
 			«dataInterchange.getDefaultVariableName».setDataInterchange(dataInterchange);
 			«dataInterchange.getDefaultVariableName».setBlobService(blobService);
+			«if(direction.equals(Direction.IMPORT)){
+			'''«dataInterchange.getDefaultVariableName».setDeleteFileAfterImport(«dataInterchange.isDeleteFileAfterImport»);'''				
+		}»
 			«dataInterchange.getDefaultVariableName()».setDirection(WorkerThreadRunnable.Direction.«direction.name.toUpperCase»);
-			return «dataInterchange.getDefaultVariableName»;'''
+			return «dataInterchange.getDefaultVariableName()»;
+		'''
 	}
 
 	def void toWatcherOperations(JvmGenericType type, SignalWatcher watcher) {
-		// creating the handleEvent operation, detailing the order 
-		// of execution of each operation after a signal is caught
-		type.members += watcher.toMethod("handleEvent", _typeReferenceBuilder.typeRef(Void::TYPE), [
-			annotations += _annotationTypesBuilder.annotationRef(Override)
-			parameters += watcher.toParameter("event", _typeReferenceBuilder.typeRef("WatchEvent<Path>"))
-			parameters += watcher.toParameter("file", _typeReferenceBuilder.typeRef(Path))
-			body = [append('''«watcher.handleEvent»''')]
+		// create watcher executeWatcherService
+		type.members += watcher.toMethod("executeWatcherService", _typeReferenceBuilder.typeRef(Void::TYPE), [
+			body = [append('''«watcher.executeWatcherService»''')]
 		])
-
-		// creating executetask operation
-		type.members += watcher.toMethod("executeTasks", _typeReferenceBuilder.typeRef(Void::TYPE), [
-			parameters += watcher.toParameter("interchanges", _typeReferenceBuilder.typeRef("ArrayList<WorkerThreadRunnable>"))
-			parameters += watcher.toParameter("synchronous", _typeReferenceBuilder.typeRef(boolean))
-			body = [append('''«watcher.executeTasks»''')]
-		])
-
-		// create all handlers operations
-		operationlist = new HashSet()
-		if (watcher !== null && watcher.handlers !== null && !watcher.handlers.empty) {
-			for (handler : watcher.handlers) {
-				if (handler.data instanceof SingleTransfer) {
-					// only one interchange is available 
-					val transferdata = handler.data as SingleTransfer
-					createAppropriateInterchangeOperations(type, watcher, transferdata.interchange)
-				} else {
-					// a list of interchange is available 
-					val transferdata = handler.data as ListTransfer
-					for (interchange : transferdata.interchanges) {
-						createAppropriateInterchangeOperations(type, watcher, interchange)
-					}
-				}
-			}
-		}
-		
 		// create watcher initTasksLists
 		type.members += watcher.toMethod("initTasksLists", _typeReferenceBuilder.typeRef(Void::TYPE), [
 			body = [append('''«watcher.initTasksLists»''')]
 		])
 		
+		if(hasHandlers(watcher)){
+			// create watcher updateOrSetHandlerConfiguration
+			type.members += watcher.toMethod("updateOrSetHandlerConfiguration", _typeReferenceBuilder.typeRef(Void::TYPE), [
+				documentation = "Sets or updates the list of file masks of all file mask based handlers, if an external configuration file exists and has been changed on runtime."
+				body = [append('''«watcher.updateOrSetHandlerConfiguration»''')]
+			])
+			
+			// creating the handleEvent operation, detailing the order 
+			// of execution of each operation after a signal is caught
+			type.members += watcher.toMethod("handleEvent", _typeReferenceBuilder.typeRef(Void::TYPE), [
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				parameters += watcher.toParameter("file", _typeReferenceBuilder.typeRef(Path))
+				body = [append('''«watcher.handleEvent»''')]
+			])
+		}
+		
+		// create all handlers operations
+		operationlist = new HashSet()
+		if (watcher !== null && watcher.handlers !== null && !watcher.handlers.empty) {
+			for (handler : watcher.handlers) {
+				// a list of interchange is available 
+				for (interchange : handler.interchanges) {
+					createAppropriateInterchangeOperations(type, watcher, interchange)
+				}
+			}
+		}
+
+		if (hasSchedulers(watcher)) {
+			// create watcher scheduleAllJobs
+			type.members += watcher.toMethod("scheduleAllJobs", _typeReferenceBuilder.typeRef(Void::TYPE), [
+				body = [append('''«watcher.scheduleAllJobs»''')]
+			])
+		}
 		// create watcher stopthread
 		type.members += watcher.toMethod("stopThread", _typeReferenceBuilder.typeRef(Void::TYPE), [
 			body = [append('''active = false;''')]
@@ -331,65 +429,26 @@
 			annotations += _annotationTypesBuilder.annotationRef(Deactivate)
 			body = [append('''«watcher.deactivate»''')]
 		])
-		
-	}
-	
-	def String executeTasks(SignalWatcher watcher){
-		return '''
-		for (WorkerThreadRunnable interchange : interchanges) {
-			if(synchronous){
-				//Making sure that the current task is done before continuing 
-				try {
-					log.debug("Watcher: Start "+interchange.getDirection()+" for interchange "+interchange.getName()+"!");
-					executorService.submit(interchange).get();
-					log.debug("Watcher: "+interchange.getDirection()+" for "+ interchange.getName() + " successfully ended!");
-				} catch (Exception e) {
-					log.debug("Watcher: "+interchange.getDirection()+" for "+ interchange.getName() + " interupted!\n"+e.getMessage());
-				}
-			}
-			else{
-				// Just executre the task and move onto the next one
-				executorService.execute(interchange);
-			}
-		}'''
 	}
 
 	def String handleEvent(SignalWatcher watcher) {
 		var result = '''
-			// get what to do based on the filename
-			String filemask = isFileMaskValid(file.getFileName().toString(), event.kind());
-			if(filemask != null){
-				switch (filemask) {
+			updateOrSetHandlerConfiguration();
+			String handlername = isFileNameValid(file.getFileName().toString());
+			if(handlername != null){
+				switch (handlername) {
 		'''
-		
-		for(handler : watcher.handlers){
-			var is_synch = (handler.executiontype ?: SignalExecutionTypeEnum.SYNC).equals(SignalExecutionTypeEnum.SYNC)
-			if(handler.data instanceof SingleTransfer){
-				var handlerdata = handler.data as SingleTransfer
+		for (handler : watcher.handlers) {
+			if (handler.triggerpolicy instanceof TriggerFile) {
 				result = result.concat(
 				'''
-						case "«handler.name+"|"+handler.filemask»":
-						«if(is_synch){
-							'''
-							try {
-								log.debug("Watcher: Start «handlerdata.interchange.dataAction.literal.toFirstUpper» for interchange «handlerdata.interchange.dataRef.name.toFirstUpper»!");
-								executorService.submit(«handlerdata.interchange.getAppropriateInterchangeOperationName»(directory + "«handlerdata.interchange.fileName»")).get();
-								log.debug("Watcher: «handlerdata.interchange.dataAction.literal.toFirstUpper» for interchange «handlerdata.interchange.dataRef.name.toFirstUpper» successfully ended!");
-							}catch (Exception e) {
-								log.debug("Watcher: «handlerdata.interchange.dataAction.literal.toFirstUpper» for interchange «handlerdata.interchange.dataRef.name.toFirstUpper» interupted!\n"+e.getMessage());
-							} break;
-							'''
-						}else{
-							'''executorService.execute(«handlerdata.interchange.getAppropriateInterchangeOperationName»(directory + "«handlerdata.interchange.fileName»")); break;'''
-						}»
-				''')
-			}else{
-				result = result.concat(
-				'''
-						case "«handler.name+"|"+handler.filemask»":
-						executeTasks(listOfTasks.get("«handler.name+"|"+handler.filemask»"), «is_synch»); break;
-				''')
-			}
+				«if(handler.executiontype.equals(SignalExecutionTypeEnum.NOSEQ)){
+					'''		case "«handler.name»": super.executeTasksParallel("«handler.name»", file); break;'''
+				}else{
+					'''		case "«handler.name»": super.executeTasksSequentially("«handler.name»", file); break;'''
+				}»
+			''')
+			} // for triggerFiles
 		}
 
 		result = result.concat(
@@ -397,46 +456,80 @@
 				default: break;
 			}
 		}
-	   	else{
-	    	log.debug("No action executed for file ["+file+"] on event ["+event.kind().name()+"].");
-	    }''')
-		
+		else{ log.info("«watcher.name.toFirstUpper» - No action executed for file ["+file+"].");}''')
+
 		return result
 	}
 
 	def void toWatcherConstructor(JvmGenericType type, SignalWatcher watcher) {
 		type.members += watcher.toConstructor [
-			exceptions += _typeReferenceBuilder.typeRef(IOException)
-			body = [append(
+			exceptions += _typeReferenceBuilder.typeRef(Exception)
+			body = [
+				append(
 			'''
-			super();
-			executorService = Executors.newFixedThreadPool(10);''')]
+				super();
+				executorService = Executors.newCachedThreadPool();''')
+			]
 		]
 	}
 	
-	def String initTasksLists(SignalWatcher watcher){
+	def String updateOrSetHandlerConfiguration(SignalWatcher watcher){
+		var result = 
+		'''
+		String key, maskcfg;
+		'''
+		for (handler : watcher.handlers) {
+			if (handler.triggerpolicy instanceof TriggerFile) {
+				result = result.concat('''
+				key = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.FILE_TRIGGER;
+				maskcfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(key));
+				addFileMasks("«handler.name»", maskcfg != null ? maskcfg : getWatcherConfig(key));
+				''')
+			}// for TriggerFiles
+		}
+		return result
+	}
+
+	def String initTasksLists(SignalWatcher watcher) {
 		var result = '''
-		ArrayList<WorkerThreadRunnable> data = null;
-		listOfTasks = new HashMap<>();
+			initListOfTasks(); ArrayList<WorkerThreadRunnable> data = null;
 		'''
 
-		for(handler : watcher.handlers){
-			if(handler.data instanceof ListTransfer){
-				var handlerdata = handler.data as ListTransfer
-				
-				result = result.concat('''data = new ArrayList<WorkerThreadRunnable>();
+		for (handler : watcher.handlers) {
+
+			if (handler.triggerpolicy instanceof TriggerFile) {
+
+				result = result.concat('''
+				data = new ArrayList<WorkerThreadRunnable>();
 				''')
-				
-				for (interchange : handlerdata.interchanges) {
-					result = result.concat('''data.add(«interchange.appropriateInterchangeOperationName»("«interchange.fileName»"));
-					''')
+
+				for (interchange : handler.interchanges) {
+					result = result.
+						concat('''data.add(«interchange.appropriateInterchangeOperationName»("«interchange.fileName»"));
+						''')
 				}
-				result = result.concat('''listOfTasks.put("«handler.name+"|"+handler.filemask»", data);
+
+				result = result.concat('''
+					getListOfTasks().put("«handler.name»", data);
 				''');
-			}
-			result = result.concat('''
-			addFilemaskAndAction("«handler.name+"|"+handler.filemask»", SignalHandlerTypeEnum.«handler.actionType.literal.toUpperCase»);
-			''')
+			}// for TriggerFiles
+			else {
+
+				result = result.concat('''
+				data = new ArrayList<WorkerThreadRunnable>();
+				''')
+
+				for (interchange : handler.interchanges) {
+					result = result.
+						concat('''data.add(«interchange.appropriateInterchangeOperationName»("«interchange.fileName»"));
+						''')
+				}
+
+				result = result.concat('''
+					getListOfTasks().put("«handler.name»", data);
+				''');
+			} // for Scheduler
+
 		}
 		return result
 	}
@@ -445,50 +538,50 @@
 		var operation_name = ""
 		if (interchange.dataAction == SignalActionEnum.DATAIMPORT && interchange.dataRef !== null) {
 			operation_name = "import" + interchange.dataRef.name.toFirstUpper
-			
+
 		} else if (interchange.dataRef !== null) {
 			operation_name = "export" + interchange.dataRef.name.toFirstUpper
 		}
 		return operation_name
 	}
-	
-	def createAppropriateInterchangeOperations(JvmGenericType type, SignalWatcher watcher, SignalDatainterchange interchange) {
+
+	def createAppropriateInterchangeOperations(JvmGenericType type, SignalWatcher watcher,
+		SignalDatainterchange interchange) {
 		var operationname = interchange.appropriateInterchangeOperationName
-		
-		//create the operation only if it has not already been created
-		if(!operationlist.contains(operationname)){
-			if(interchange.dataAction == SignalActionEnum.DATAIMPORT){
-				type.members +=
-				watcher.toMethod(operationname, _typeReferenceBuilder.typeRef("WorkerThreadRunnable"), 
-				[
+
+		// create the operation only if it has not already been created
+		if (!operationlist.contains(operationname)) {
+			if (interchange.dataAction == SignalActionEnum.DATAIMPORT) {
+				type.members += watcher.toMethod(operationname, _typeReferenceBuilder.typeRef(WorkerThreadRunnable), [
 					parameters += watcher.toParameter("filename", _typeReferenceBuilder.typeRef(String))
-					body = [append('''«interchange.dataRef.getBasicRunConfiguration(true, Direction.IMPORT, false)»''')]
+					body = [
+						append('''«watcher.fullyQualifiedName.toString.getBasicRunConfiguration(interchange.dataRef,true, Direction.IMPORT, false)»''')
+					]
+				])
+			} else {
+				type.members += watcher.toMethod(operationname, _typeReferenceBuilder.typeRef("WorkerThreadRunnable"), [
+					parameters += watcher.toParameter("filename", _typeReferenceBuilder.typeRef(String))
+					body = [
+						append('''«watcher.fullyQualifiedName.toString.getBasicRunConfiguration(interchange.dataRef,true, Direction.EXPORT, false)»''')
+					]
 				])
 			}
-			else{
-				type.members +=
-				watcher.toMethod(operationname, _typeReferenceBuilder.typeRef("WorkerThreadRunnable"), 
-				[
-					parameters += watcher.toParameter("filename", _typeReferenceBuilder.typeRef(String))
-					body = [append('''«interchange.dataRef.getBasicRunConfiguration(true, Direction.EXPORT, false)»''')]
-				])
-			} 
 			operationlist.add(operationname)
 		}
 	}
 
 	def void toWatcherFields(JvmGenericType type, SignalWatcher watcher) {
 		var JvmField field = null
-		// create logger field
-		field = watcher.toField("log", _typeReferenceBuilder.typeRef(Logger)) [
+		// create watcher id field
+		field = watcher.toField("watcherid", _typeReferenceBuilder.typeRef(String)) [
 			visibility = JvmVisibility::PRIVATE
-			setInitializer([append('''LoggerFactory.getLogger("watcher")''')])
+			setInitializer([append('''"«watcher.fullyQualifiedName»"''')])
 		]
 		type.members += field
 		// create directory field
-		field = watcher.toField("directory", _typeReferenceBuilder.typeRef(String)) [
+		field = watcher.toField("directorykey", _typeReferenceBuilder.typeRef(String)) [
 			visibility = JvmVisibility::PRIVATE
-			setInitializer([append('''"«watcher.directory»"''')])
+			setInitializer([append('''watcherid + OSBPSignalConstants.DIRECTORY''')])
 		]
 		type.members += field
 		// create thread field
@@ -508,12 +601,6 @@
 			static = true
 		]
 		type.members += field
-		// create listOftasks field
-		field = watcher.toField("listOfTasks",
-			_typeReferenceBuilder.typeRef("Map<String, ArrayList<WorkerThreadRunnable>>")) [
-			visibility = JvmVisibility::PRIVATE
-		]
-		type.members += field
 		// create persistence service field
 		field = watcher.toField("persistenceService", _typeReferenceBuilder.typeRef(IPersistenceService))
 		field.static = true
@@ -538,39 +625,222 @@
 
 	def String getActivate(SignalWatcher watcher) {
 		return '''
-			thread = new Thread() {
-				@Override
-					public void run() {
-						//«watcher.name.toFirstUpper+"Watcher"» watcherservice = null;
-							try {
-								//watcherservice = new «watcher.name.toFirstUpper+"Watcher"»();
-								//watcherservice.setSignals(Arrays.asList(SignalTypeEnum.«watcher.signal.literal.toUpperCase»));
-								//watcherservice.registerPathToWatcher(Paths.get(directory));
-								setSignals(Arrays.asList(SignalTypeEnum.«watcher.signal.literal.toUpperCase»));
-								registerPathToWatcher(Paths.get(directory));
-								while (active) {
-									log.debug("Start watcher Service «watcher.name.toFirstUpper+"Watcher"»");
-									//watcherservice.processEvents();
-									initTasksLists();
-									processEvents();
-								}
-							} catch (Exception e) {
-								log.debug("Thread interrupted " + e.getMessage());
-								//watcherservice.closeWatcher();
-								closeWatcher();
-							}
+		thread = new Thread("«watcher.name.toFirstUpper»Watcher") {
+			@Override
+			public void run() {
+		«if(watcher.eContainer instanceof SignalPackage){
+			var firstwatcher = (watcher.eContainer as SignalPackage).watchers.get(0).name
+			if(watcher.name == firstwatcher){
+			'''
+					WatcherConfigurations.init();
+			'''
+			}
+			else{
+			'''
+					log.info("- «watcher.name.toFirstUpper»Watcher waiting for watcher configurations to be initialized");
+					while(!isConfigReady("«watcher.eContainer.fullyQualifiedName»")){}
+			'''
+			}
+		}»
+				executeWatcherService();
+			}
+		};
+		thread.start();'''
+	}
+
+	def String getExecuteWatcherService(SignalWatcher watcher) {
+		return 
+		'''
+		try {
+			if (!isPathregistered()) {
+				String url = getHandlerPropertyFromConfigurationFile(directorykey);
+				url = url != null ? url : getWatcherConfig(directorykey);
+				URL a = isDirectoryValidURL(url);
+				if(a != null && a.getProtocol().equals("file")){
+					if(existsDirectory(url)){    				
+						registerPathToWatcher(Paths.get(url));
+						setPathregistered(true);
+					}else{
+						log.error("Path [" + url + "] not existing! Directory not registered!");
 					}
-			};
-			thread.start();'''
+				}
+			}
+			initTasksLists();
+			«if(hasHandlers(watcher)){
+			'''
+			updateOrSetHandlerConfiguration();
+			'''
+			}»
+			«if(hasSchedulers(watcher)){
+			'''
+			initScheduler("«watcher.name.toFirstUpper»Scheduler", "«getSchedulerCount(watcher)»");
+			scheduleAllJobs();
+			startScheduler();
+			'''
+			}»
+			«if(hasHandlers(watcher)){
+			'''
+			while (active) {
+				log.info("«watcher.name.toFirstUpper» Service started!");
+				processEvents();
+			}
+			'''
+			}»
+			log.info("WatcherService «watcher.name.toFirstUpper» successfully started.");
+		} catch (Exception e) {
+			log.error("WatcherService «watcher.name.toFirstUpper» interrupted due to: ", e);
+		}'''
 	}
 
 	def String getDeactivate(SignalWatcher watcher) {
 		return '''
-			try {
-				stopThread();
-				thread.join();
-			} catch (InterruptedException e) {
-				e.printStackTrace();
-			}'''
+		try {
+			«if(hasSchedulers(watcher)){
+				'''
+				if(getScheduler() != null){
+					shutdownScheduler();
+				}
+				'''
+			}»
+			stopThread();
+			thread.join();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		log.info("Watcher shutted down...");
+		'''
 	}
+
+	def String scheduleAllJobs(SignalWatcher watcher) {
+		var index = 1
+		var result = '''
+			log.info("Starting scheduling all jobs ...");
+			Trigger trigger; JobDetail job; Date ft; String expr; int hour; int min; int dOw; int dOm; String key;String keyOne;String keyTwo;
+		'''
+		for (handler : watcher.handlers) {
+			if (handler.triggerpolicy instanceof SignalScheduler) {
+				var signal = handler.triggerpolicy as SignalScheduler
+				
+				if (signal.scheduler instanceof CronScheduler) {
+					var scheduler = signal.scheduler as CronScheduler
+	
+					if (scheduler !== null && scheduler.expression !== null && !scheduler.expression.empty) {
+						result = result.concat('''
+							job = createDataTransferJob("«watcher.fullyQualifiedName»job«index»", "jobs", "-", «handler.executiontype.equals(SignalExecutionTypeEnum.SEQ)», "«handler.name»");
+							key = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.CRON_SCHEDULER;
+							expr = getCronExpressionValue(getHandlerPropertyFromConfigurationFile(key));
+							trigger = createCronTrigger("«watcher.fullyQualifiedName»trigger«index»", "triggers", expr != null ? expr : getWatcherConfig(key));
+							ft = scheduleJob(job, trigger);
+							log.info("Job«index» has been scheduled to run at: " + ft);
+						''')
+					}
+				} else if (signal.scheduler instanceof HourlyScheduler) {
+					var scheduler = signal.scheduler as HourlyScheduler
+					if (scheduler !== null && scheduler.minute > -1) {
+						result = result.concat('''
+							job = createDataTransferJob("«watcher.fullyQualifiedName»job«index»", "jobs", "-", «handler.executiontype.equals(SignalExecutionTypeEnum.SEQ)», "«handler.name»");
+							key = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.HOURLY_SCHEDULER;
+							min = getMinutesValue(getHandlerPropertyFromConfigurationFile(key));
+							trigger = createHourlyTrigger("«watcher.fullyQualifiedName»trigger«index»", "triggers", min>0? min : getMinutesValue(getWatcherConfig(key)));
+							ft = scheduleJob(job, trigger);
+							log.info("Job«index» has been scheduled to run at: " + ft);
+						''')
+					}
+				} else if (signal.scheduler instanceof DailyScheduler) {
+					var scheduler = signal.scheduler as DailyScheduler
+	
+					if (scheduler !== null && scheduler.hour > -1 && scheduler.minute > -1) {
+						result = result.concat('''
+							job = createDataTransferJob("«watcher.fullyQualifiedName»job«index»", "jobs", "-", «handler.executiontype.equals(SignalExecutionTypeEnum.SEQ)», "«handler.name»");
+							key = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.DAILY_SCHEDULER_HOUR;
+							hour = getHourValue(getHandlerPropertyFromConfigurationFile(key));
+							keyOne = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.DAILY_SCHEDULER_MIN;
+							min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyOne));
+							trigger = createDailyTriggerAtHourandMins("«watcher.fullyQualifiedName»trigger«index»", "triggers", hour>0 ? hour : getHourValue(getWatcherConfig(key)),
+							 min>0 ? min : getMinutesValue(getWatcherConfig(keyOne)));
+							ft = scheduleJob(job, trigger);
+							log.info("Job«index» has been scheduled to run at: " + ft);
+						''')
+					}
+				} else if (signal.scheduler instanceof WeeklyScheduler) {
+					var scheduler = signal.scheduler as WeeklyScheduler
+	
+					if (scheduler !== null && scheduler.dayofweek !== null && scheduler.hour > -1 &&
+						scheduler.minute > -1) {
+						result = result.concat('''
+							job = createDataTransferJob("«watcher.fullyQualifiedName»job«index»", "jobs", "-", «handler.executiontype.equals(SignalExecutionTypeEnum.SEQ)», "«handler.name»");
+							key = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK;
+							dOw = getDayOfWeekValue(getHandlerPropertyFromConfigurationFile(key));
+							keyOne = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.WEEKLY_SCHEDULER_HOUR;
+							hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));
+							keyTwo = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.WEEKLY_SCHEDULER_MIN;
+							min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));
+							trigger = createWeeklyTriggerOnDayAndHourAndMinute("«watcher.fullyQualifiedName»trigger«index»", "triggers", dOw>0? dOw : getDayOfWeekValue(getWatcherConfig(key)), 
+							hour>0 ? hour : getHourValue(getWatcherConfig(keyOne)), min>0 ? min : getMinutesValue(getWatcherConfig(keyTwo)));
+							ft = scheduleJob(job, trigger);
+							log.info("Job«index» has been scheduled to run at: " + ft);
+						''')
+					}
+				} else if (signal.scheduler instanceof MonthlyScheduler) {
+					var scheduler = signal.scheduler as MonthlyScheduler
+	
+					if (scheduler !== null && scheduler.dayofmonth > -1 && scheduler.hour > -1 && scheduler.minute > -1) {
+						result = result.concat('''
+							job = createDataTransferJob("«watcher.fullyQualifiedName»job«index»", "jobs", "-", «handler.executiontype.equals(SignalExecutionTypeEnum.SEQ)», "«handler.name»");
+							key = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH;
+							dOm = getDayOfMonthValue(getHandlerPropertyFromConfigurationFile(key));
+							keyOne = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.MONTHLY_SCHEDULER_HOUR;
+							hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));
+							keyTwo = watcherid + ".handler.«handler.name»" + OSBPSignalConstants.MONTHLY_SCHEDULER_MIN;
+							min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));
+							trigger = createMonthlyTriggerOnDayAndHourAndMinute("«watcher.fullyQualifiedName»trigger«index»", "triggers", dOm>0? dOm : getDayOfMonthValue(getWatcherConfig(key)),
+							 hour>0 ? hour : getHourValue(getWatcherConfig(keyOne)), min>0 ? min : getMinutesValue(getWatcherConfig(keyTwo)));
+							ft = scheduleJob(job, trigger);
+							log.info("Job«index» has been scheduled to run at: " + ft);
+						''')
+					}
+				}
+				index++
+			}
+			else{
+				//filemask
+			}
+		}
+		result = result.concat('''log.info("Scheduling all jobs done ...");
+		''')
+		return result
+	}
+	
+	def boolean hasSchedulers(SignalWatcher watcher) {
+		if (watcher !== null && watcher.handlers !== null && !watcher.handlers.isEmpty) {
+			for (handler : watcher.handlers) {
+				if (handler.triggerpolicy instanceof SignalScheduler) {
+					return true
+				}
+			}
+		}
+		return false;
+	}
+	def int getSchedulerCount(SignalWatcher watcher) {
+		if (watcher !== null && watcher.handlers !== null && !watcher.handlers.isEmpty) {
+			var count = 0
+			for (handler : watcher.handlers) {
+				if (handler.triggerpolicy instanceof SignalScheduler) {	count++	}
+			}
+			return count
+		}
+		return -1;
+	}
+	
+	def boolean hasHandlers(SignalWatcher watcher) {
+		if (watcher !== null && watcher.handlers !== null && !watcher.handlers.isEmpty) {
+			for (handler : watcher.handlers) {
+				if (handler.triggerpolicy instanceof TriggerFile) {
+					return true
+				}
+			}
+		}
+		return false;
+	}
+
 }
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend
index f3d7718..a88377b 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.xtend
@@ -3,74 +3,101 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  * 
  *  This copyright notice shows up in the generated Java code
- *
+ * 
  */
- 
+
 package org.eclipse.osbp.xtext.signal.jvmmodel
 
+import java.io.File
+import java.io.FileInputStream
+import java.io.IOException
+import java.io.PrintWriter
+import java.io.StringWriter
+import java.net.URL
 import java.nio.file.FileSystems
+import java.nio.file.Files
 import java.nio.file.Path
 import java.nio.file.Paths
 import java.nio.file.WatchEvent
 import java.util.ArrayList
-import java.util.Arrays
+import java.util.Date
 import java.util.HashMap
 import java.util.Map
+import java.util.Properties
 import java.util.concurrent.Executors
 import javax.inject.Inject
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.resource.Resource
 import org.eclipse.osbp.core.api.persistence.IPersistenceService
 import org.eclipse.osbp.datainterchange.api.IDataInterchange
+import org.eclipse.osbp.preferences.ProductConfiguration
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalCommonData
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants
 import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher
 import org.eclipse.xtext.generator.IFileSystemAccess
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig
 import org.eclipse.xtext.xbase.compiler.ImportManager
+import org.quartz.JobDetail
+import org.quartz.SchedulerException
+import org.quartz.Trigger
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 
 class SignalModelGenerator extends I18NModelGenerator {
 	@Inject extension BasicDslGeneratorUtils
-	
+
 	var public static String pckgName = null
-	
-	
+
 	override createAppendable(EObject context, ImportManager importManager, GeneratorConfig config) {
 		// required to initialize the needed builder to avoid deprecated methods
 		builder = context.eResource
 		// ---------
-		addImportFor(importManager, _typeReferenceBuilder,
-			SignalTypeEnum,
-			SignalHandlerTypeEnum,
+		addImportFor(
+			importManager,
+			_typeReferenceBuilder,
 			OSBPSignalWatcher,
+			OSBPSignalConstants,
 			Paths,
 			WorkerThreadRunnable,
 			IPersistenceService,
 			IDataInterchange,
+			Files,
+			OSBPSignalCommonData,
 			FileSystems,
 			Logger,
 			LoggerFactory,
 			HashMap,
-			Arrays,
 			WatchEvent,
 			Path,
+			URL,
 			Executors,
 			Map,
-			ArrayList
+			ArrayList,
+			ProductConfiguration,
+			File,
+			FileInputStream,
+			Properties,
+			StringWriter,
+			PrintWriter,
+			SchedulerException,
+			IOException,
+			Date,
+			JobDetail,
+			Trigger
 		)
 		super.createAppendable(context, importManager, config)
 	}
@@ -79,6 +106,5 @@
 //		addTranslatables("startProcessText,answerYesText,answerNoText,designer,designmode,undo,redo,new,change,export,download")
 		super.doGenerate(resource, fsa)
 	}
-	
-	
-}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend
index 3e9ff8c..4f0325b 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.xtend
@@ -3,9 +3,11 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend
index ef252fc..5468e0e 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.xtend
@@ -3,139 +3,295 @@
  *  Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
  *                                                                            
  *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
+ *  are made available under the terms of the Eclipse Public License 2.0        
  *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *  https://www.eclipse.org/legal/epl-2.0/                                 
+ *                                 
+ *  SPDX-License-Identifier: EPL-2.0                                 
  *                                                                            
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  * generated by Xtext 2.11.0
- *
+ * 
  */
 
 package org.eclipse.osbp.xtext.signal.validation
 
+import java.net.MalformedURLException
+import java.net.URL
+import java.nio.file.Files
+import java.nio.file.Paths
+import java.text.ParseException
 import java.util.HashSet
+import org.eclipse.osbp.utils.common.SystemInformation
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFile
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML
+import org.eclipse.osbp.xtext.signal.CronScheduler
+import org.eclipse.osbp.xtext.signal.DailyScheduler
+import org.eclipse.osbp.xtext.signal.HourlyScheduler
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage
 import org.eclipse.osbp.xtext.signal.SignalHandler
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum
 import org.eclipse.osbp.xtext.signal.SignalPackage
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum
+import org.eclipse.osbp.xtext.signal.SignalScheduler
 import org.eclipse.osbp.xtext.signal.SignalWatcher
+import org.eclipse.osbp.xtext.signal.TriggerFile
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants
 import org.eclipse.xtext.validation.Check
+import org.quartz.CronExpression
+
+import static org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants.*
 
 /**
  * This class contains custom validation rules. 
- *
+ * 
  * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#validation
  */
 class SignalDSLValidator extends AbstractSignalDSLValidator {
-	
+
 	@Check
-	def checkSignalHandling(SignalWatcher watcher) {
-		for(handler : watcher.handlers){
-			if(handler !== null){
-				// check handler action type
-				if(watcher !== null && handler.actionType !== null){
-					checkHandlerActionType(handler)
-					var signal = watcher.signal 
-//					if(signal !== null && signal.equals(SignalTypeEnum.ALL)){
-//						// no problem						
-//					}
-//					else if (signal !== null && signal.equals(SignalTypeEnum.DELETESIGNALS)) {
-//						if(!SignalHandlerTypeEnum.DOAFTERDELETE.equals(handler.actionType)){
-//							error("Only the handler type doAfterDelete is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE)
-//						}						
-//					}
-					if ( signal !== null && signal.equals(SignalTypeEnum.CREATESIGNALS)){
-						if (!SignalHandlerTypeEnum.DOAFTERCREATE.equals(handler.actionType)){
-							error("Only the handler type doAfterCreate is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE)
-						}
-					}
-					else if (signal !== null && signal.equals(SignalTypeEnum.MODIFYSIGNALS)){
-						if (!SignalHandlerTypeEnum.DOAFTERMODIFY.equals(handler.actionType)){
-							error("Only the handler type doAföterModify is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE)
-						}
-					}
-				}
-			}
-		}
-	}
-	
-	def checkHandlerActionType(SignalHandler handler){
-		var signal = (handler.eContainer as SignalWatcher).signal 
-//		if(signal !== null && signal.equals(SignalTypeEnum.ALL)){
-//			// no problem						
-//		}
-//		else if (signal !== null && signal.equals(SignalTypeEnum.DELETESIGNALS)) {
-//			if(!SignalHandlerTypeEnum.DOAFTERDELETE.equals(handler.actionType)){
-//				error("Only the handler type doAfterDelete is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE)
-//			}						
-//		}
-		if ( signal !== null && signal.equals(SignalTypeEnum.CREATESIGNALS)){
-			if (!SignalHandlerTypeEnum.DOAFTERCREATE.equals(handler.actionType)){
-				error("Only the handler type doAfterCreate is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE)
-			}
-		}
-		else if (signal !== null && signal.equals(SignalTypeEnum.MODIFYSIGNALS)){
-			if (!SignalHandlerTypeEnum.DOAFTERMODIFY.equals(handler.actionType)){
-				error("Only the handler type doAfterModify is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE)
-			}
-		}
-	}
-	
-	@Check
-	def checkDuplicateWatcherNames(SignalPackage pkg){
+	def checkDuplicateWatcherNames(SignalPackage pkg) {
 		var watchers = new HashSet<String>()
-		for(watcher : pkg.watchers){
-			if(!watchers.contains(watcher.name)){
+		for (watcher : pkg.watchers) {
+			if (!watchers.contains(watcher.name)) {
 				watchers.add(watcher.name)
-			}
-			else{
-				error("The watcher id has to be unique.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__NAME)
+			} else {
+				error("The watcher id has to be unique and [" + watcher.name + "] is already in use. Please change it.",
+					watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__NAME)
 			}
 		}
 	}
-	
+
 	@Check
-	def checkDuplicateHandlerNames(SignalWatcher watcher){
+	def checkDuplicateHandlerNames(SignalWatcher watcher) {
 		var handlers = new HashSet<String>()
-		for(handler : watcher.handlers){
-			if(!handlers.contains(handler.name)){
+		for (handler : watcher.handlers) {
+			if (!handlers.contains(handler.name)) {
 				handlers.add(handler.name)
-			}
-			else{
+			} else {
 				error("The handler id has to be unique.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__NAME)
 			}
 		}
 	}
 
 	@Check
-	def checkDuplicateDirectoryNames(SignalPackage pkg){
-		var watcherdir = new HashSet<String>()
-		for(watcher : pkg.watchers){
-			if(!watcherdir.contains(watcher.directory)){
-				watcherdir.add(watcher.directory)
-			}
-			else{
-				error("The watcher directory '"+watcher.directory+"' is already in use. Please choose another directory.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY)
+	def boolean checkFileNameValidity(SignalHandler handler) {
+		for (interchange : handler.interchanges) {
+			if (interchange.dataRef !== null && interchange.fileName !== null &&
+				interchange.fileName.length > FILE_EXTENSION_MIN_SIZE) {
+				if (!isExtensionValid(interchange.fileName)) {
+					error(
+						"The filename extension you have entered is not currently supported. Only file with either following extension are allowed: .csv .edi or .xml",
+						interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME)
+				}
+				var allowed_extension = getValidExtensionToInterchange(interchange.dataRef.fileEndpoint)
+				if (allowed_extension !== null &&
+					!isExtensionAllowedToInterchange(interchange.fileName, allowed_extension)) {
+					error(
+						"The filename extension you have entered is not valid with [" + interchange.dataRef.name +
+							"] definition. Only filename with " + allowed_extension + " as extension are allowed!",
+						interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME)
+				}
+				val filename = interchange.fileName.substring(0,
+					interchange.fileName.length - (FILE_EXTENSION_MIN_SIZE))
+				if (!isFileNameWithoutExtensionValid(filename)) {
+					error(
+						"The filename contains one or more of the following non-allowed characters / \\ : * ? > < \" ' | please change it.",
+						interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME)
+				}
 			}
 		}
 	}
-	
-	def boolean checkDuplicateFileMasks(SignalWatcher watcher){
-		var filemasks = new HashSet<String>()
-		for(handler : watcher.handlers){
-			if(!filemasks.contains(handler.name+"."+handler.filemask)){
-				filemasks.add(handler.name+"."+handler.filemask)
+
+	def boolean isExtensionValid(String filename) {
+		return (filename.endsWith(CSV_EXTENSION) || filename.endsWith(CSV_EXTENSION.toUpperCase) ||
+			filename.endsWith(EDI_EXTENSION) || filename.endsWith(EDI_EXTENSION.toUpperCase) ||
+			filename.endsWith(XML_EXTENSION) || filename.endsWith(XML_EXTENSION.toUpperCase)
+		)
+	}
+
+	def boolean isExtensionAllowedToInterchange(String filename, String allowedextension) {
+		return (filename.endsWith(allowedextension) || filename.endsWith(allowedextension.toUpperCase))
+	}
+
+	def String getValidExtensionToInterchange(DataInterchangeFile file) {
+		if (file instanceof DataInterchangeFileCSV) {
+			return CSV_EXTENSION
+		}
+		if (file instanceof DataInterchangeFileEDI) {
+			return EDI_EXTENSION
+		}
+		if (file instanceof DataInterchangeFileXML) {
+			return XML_EXTENSION
+		}
+		return null
+	}
+
+	def boolean isFileNameWithoutExtensionValid(String filename) {
+		if(SystemInformation.isWindowsOS()){
+			return !filename.contains('/') && !filename.contains('\\') && !filename.contains(':') && ( !filename.contains('*') && !filename.contains('?')
+			&& !filename.contains('>') && !filename.contains('<') && !filename.contains('"')  && !filename.contains('|'))
+			//based on win10 allowed characters on 12.04.2018 
+		}
+		else if(SystemInformation.isMacOS()){
+			return 
+			!filename.contains('/') && !filename.contains('\\') && !filename.contains('-') && ( !filename.contains('*') && !filename.contains('?')
+			&& !filename.contains('[') && !filename.contains(']') && !filename.contains('"')  && !filename.contains('\'') && !filename.contains('{') && !filename.contains('}'))	
+			// based on http://www.informit.com/articles/article.aspx?p=1144082&seqNum=5 accessed on 12.04.2018
+		}
+		else if(SystemInformation.isUnixOS()){
+			return 
+			!filename.contains('/') && !filename.contains('\\') && !filename.contains(':') && ( !filename.contains('*') && !filename.contains('?')
+			&& !filename.contains('>') && !filename.contains('<') && !filename.contains('"')  && !filename.contains('|')
+			)
+		}
+		return true
+	}
+
+	@Check
+	def checkDuplicateDirectoryNames(SignalPackage pkg) {
+		var watcherdir = new HashSet<String>()
+		for (watcher : pkg.watchers) {
+			if (!watcherdir.contains(watcher.directory)) {
+				watcherdir.add(watcher.directory)
+			} else {
+				error("The watcher directory '" + watcher.directory +
+					"' is already in use. Please choose another directory.", watcher,
+					SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY)
 			}
-			else{
-				error("The handler file mask can't be the same as another one, inside a watcher on the same directory.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__FILEMASK)
-				return true
+		}
+	}
+
+	@Check
+	def boolean checkDuplicateFileMasks(SignalWatcher watcher) {
+		var filemasks = new HashSet<String>()
+		for (handler : watcher.handlers) {
+			if (handler.triggerpolicy !== null && handler.triggerpolicy instanceof TriggerFile) {
+				var temp = handler.triggerpolicy as TriggerFile
+				if (!filemasks.contains(temp.filemask)) {
+					filemasks.add(temp.filemask)
+				} else {
+					error(
+						"This file mask is already in use, please change it.",
+						temp, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK)
+					return true
+				}
 			}
 		}
 		return false
 	}
+
+	@Check
+	def void checkSignalSchedulerValidity(SignalScheduler signal) {
+		if (signal.scheduler !== null && signal.scheduler instanceof CronScheduler) {
+			checkCronExpressionValidity(signal.scheduler as CronScheduler)
+		} else if (signal.scheduler !== null && signal.scheduler instanceof HourlyScheduler) {
+			checkHourlySchedulerValidity(signal.scheduler as HourlyScheduler)
+		} else if (signal.scheduler !== null && signal.scheduler instanceof DailyScheduler) {
+			checkDailySchedulerValidity(signal.scheduler as DailyScheduler)
+		} else if (signal.scheduler !== null && signal.scheduler instanceof WeeklyScheduler) {
+			checkWeeklySchedulerValidity(signal.scheduler as WeeklyScheduler)
+		} else if (signal.scheduler !== null && signal.scheduler instanceof MonthlyScheduler) {
+			checkMonthlySchedulerValidity(signal.scheduler as MonthlyScheduler)
+		}
+	}
+
+	def void checkCronExpressionValidity(CronScheduler scheduler) {
+		var expression = scheduler.expression // format: s m h dm m dw
+		try {
+			if (!CronExpression.isValidExpression(expression)) {
+				CronExpression.validateExpression(expression)
+			}
+		} catch (ParseException exception) {
+			error("The cron expression you have entered is invalid.\n\n" + exception +
+				OSBPSignalConstants.CRONEXP_NOTICE, scheduler, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION)
+		}
+	}
+
+	def void checkHourlySchedulerValidity(HourlyScheduler scheduler) {
+		if (!(scheduler.minute >= 0 && scheduler.minute <= 59)) {
+			error("The minute entry has to be between 0 and 59.", scheduler,
+				SignalDSLPackage.Literals.HOURLY_SCHEDULER__MINUTE)
+		}
+	}
 	
+	def void checkDailySchedulerValidity(DailyScheduler scheduler) { 
+		if (!(scheduler.hour >= 0 && scheduler.hour <= 23)) {
+			error("The hour entry has to be between 0 and 23.", scheduler,
+				SignalDSLPackage.Literals.DAILY_SCHEDULER__HOUR)
+		}
+		if (!(scheduler.minute >= 0 && scheduler.minute <= 59)) {
+			error("The minute entry has to be between 0 and 59.", scheduler,
+				SignalDSLPackage.Literals.DAILY_SCHEDULER__MINUTE)
+		}
+	}
+	def void checkWeeklySchedulerValidity(WeeklyScheduler scheduler) { 
+		if (!(scheduler.hour >= 0 && scheduler.hour <= 23)) {
+			error("The hour entry has to be between 0 and 23.", scheduler,
+				SignalDSLPackage.Literals.WEEKLY_SCHEDULER__HOUR)
+		}
+		if (!(scheduler.minute >= 0 && scheduler.minute <= 59)) {
+			error("The minute entry has to be between 0 and 59.", scheduler,
+				SignalDSLPackage.Literals.WEEKLY_SCHEDULER__MINUTE)
+		}
+		
+	}
+	def void checkMonthlySchedulerValidity(MonthlyScheduler scheduler) { 
+		if (!(scheduler.dayofmonth >= 1 && scheduler.dayofmonth <= 31)) {
+			error("The hour entry has to be between 1 and 31.", scheduler,
+				SignalDSLPackage.Literals.MONTHLY_SCHEDULER__DAYOFMONTH)
+		}
+		if (!(scheduler.hour >= 0 && scheduler.hour <= 23)) {
+			error("The hour entry has to be between 0 and 23.", scheduler,
+				SignalDSLPackage.Literals.MONTHLY_SCHEDULER__HOUR)
+		}
+		if (!(scheduler.minute >= 0 && scheduler.minute <= 59)) {
+			error("The minute entry has to be between 0 and 59.", scheduler,
+				SignalDSLPackage.Literals.MONTHLY_SCHEDULER__MINUTE)
+		}
+	}
+
+	@Check
+	def checkURLValidity(SignalHandler handler) {
+		if(handler.eContainer instanceof SignalWatcher){
+			var url = getDirectoryURL(((handler.eContainer as SignalWatcher).directory))
+			if(url !== null && !url.protocol.equals("file") && (handler.triggerpolicy instanceof TriggerFile)){
+				error("Only scheduler based handlers are allowed, since the watcher directory is not a file url.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__TRIGGERPOLICY)
+			}
+		}
+	}
+	
+	def getDirectoryURL(String directory) {
+	    try {
+			return new URL(directory);
+		} catch (MalformedURLException e1) {
+			if(e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol")) {
+				try {
+					return Paths.get(directory).toUri().toURL();
+				} catch (MalformedURLException e2) {
+					return null					
+				}
+			}
+		}
+		return null
+	}
+	
+	@Check
+	def checkDirectoryValidity(SignalWatcher watcher) {
+		var url = getDirectoryURL(watcher.directory)
+		if(url !== null && url.protocol.equals("file") && !existsDirectory(watcher.directory)){
+			error("This directory doesn't exist. Please correct the path you have entered.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY)
+		}
+	}
+	
+	def boolean existsDirectory(String path) {
+		try {
+			return Files.isDirectory(Paths.get(path));
+		} catch (Exception e) {	}
+		return false;
+	}
 }
diff --git a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/valueconverter/SignalValueConverterService.java b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/valueconverter/SignalValueConverterService.java
index 4e9dcd8..2af2bb4 100644
--- a/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/valueconverter/SignalValueConverterService.java
+++ b/org.eclipse.osbp.xtext.signal/src/org/eclipse/osbp/xtext/signal/valueconverter/SignalValueConverterService.java
@@ -1,9 +1,11 @@
 /**
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Eclipse Public License 2.0 
  * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
  * 
  * Contributors:
  * 		Christophe Loetz - Initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java
index d8ca4f1..73961bb 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/formatting/SignalDSLFormatter.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java
index 9b54492..f86f5dd 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalDSLJvmModelInferrer.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,7 +16,6 @@
 package org.eclipse.osbp.xtext.signal.jvmmodel;
 
 import com.google.common.base.Objects;
-import java.io.IOException;
 import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.HashSet;
@@ -33,16 +34,24 @@
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI;
 import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML;
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
-import org.eclipse.osbp.xtext.signal.DataTransfer;
-import org.eclipse.osbp.xtext.signal.ListTransfer;
+import org.eclipse.osbp.xtext.signal.CronScheduler;
+import org.eclipse.osbp.xtext.signal.DailyScheduler;
+import org.eclipse.osbp.xtext.signal.DayOfWeekEnum;
+import org.eclipse.osbp.xtext.signal.HourlyScheduler;
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
+import org.eclipse.osbp.xtext.signal.Scheduler;
 import org.eclipse.osbp.xtext.signal.SignalActionEnum;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
 import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
 import org.eclipse.osbp.xtext.signal.SignalExecutionTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
-import org.eclipse.osbp.xtext.signal.SingleTransfer;
+import org.eclipse.osbp.xtext.signal.TriggerFile;
+import org.eclipse.osbp.xtext.signal.TriggerPolicy;
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants;
 import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher;
 import org.eclipse.osbp.xtext.signal.jvmmodel.SignalModelGenerator;
 import org.eclipse.xtend2.lib.StringConcatenation;
@@ -56,6 +65,7 @@
 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;
@@ -69,7 +79,6 @@
 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>Infers a JVM model from the source model.</p>
@@ -137,93 +146,308 @@
         acceptor.<JvmGenericType>accept(watcherClass, _function);
       }
     }
+    JvmGenericType watcherConfiguration = this._jvmTypesBuilder.toClass(signalPackage, this._iQualifiedNameProvider.getFullyQualifiedName(signalPackage));
+    watcherConfiguration.setSimpleName("WatcherConfigurations");
+    watcherConfiguration.setPackageName(pckgName);
+    watcherConfiguration.setAbstract(true);
+    final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+      this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(signalPackage));
+      this.toConfigOperations(it, signalPackage);
+    };
+    acceptor.<JvmGenericType>accept(watcherConfiguration, _function);
+  }
+  
+  public void toConfigOperations(final JvmGenericType type, final SignalPackage pck) {
+    EList<JvmMember> _members = type.getMembers();
+    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      this._jvmTypesBuilder.setDocumentation(it, "Initializes all watcher configurations of this package.");
+      it.setStatic(true);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _initConfigurations = this.initConfigurations(pck);
+        _builder.append(_initConfigurations);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
+    };
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(pck, "init", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
+  }
+  
+  public String initConfigurations(final SignalPackage pck) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("OSBPSignalCommonData.initWatcherconfigurations();");
+    _builder.newLine();
+    String result = _builder.toString();
+    EList<SignalWatcher> _watchers = pck.getWatchers();
+    for (final SignalWatcher watcher : _watchers) {
+      {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        String _name = pck.getName();
+        _builder_1.append(_name);
+        _builder_1.append(".");
+        String _name_1 = watcher.getName();
+        _builder_1.append(_name_1);
+        final String watchername = _builder_1.toString();
+        StringConcatenation _builder_2 = new StringConcatenation();
+        _builder_2.append("OSBPSignalCommonData.addWatcherConfig(\"");
+        _builder_2.append((watchername + OSBPSignalConstants.DIRECTORY));
+        _builder_2.append("\",\"");
+        String _directory = watcher.getDirectory();
+        _builder_2.append(_directory);
+        _builder_2.append("\");");
+        _builder_2.newLineIfNotEmpty();
+        result = result.concat(_builder_2.toString());
+        EList<SignalHandler> _handlers = watcher.getHandlers();
+        for (final SignalHandler handler : _handlers) {
+          TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+          if ((_triggerpolicy instanceof TriggerFile)) {
+            StringConcatenation _builder_3 = new StringConcatenation();
+            _builder_3.append("OSBPSignalCommonData.addWatcherConfig(\"");
+            _builder_3.append(watchername);
+            _builder_3.append(".handler.");
+            String _string = handler.getName().toString();
+            String _plus = (_string + OSBPSignalConstants.FILE_TRIGGER);
+            _builder_3.append(_plus);
+            _builder_3.append("\", \"");
+            TriggerPolicy _triggerpolicy_1 = handler.getTriggerpolicy();
+            String _filemask = ((TriggerFile) _triggerpolicy_1).getFilemask();
+            _builder_3.append(_filemask);
+            _builder_3.append("\");");
+            _builder_3.newLineIfNotEmpty();
+            result = result.concat(_builder_3.toString());
+          } else {
+            TriggerPolicy _triggerpolicy_2 = handler.getTriggerpolicy();
+            final SignalScheduler signal = ((SignalScheduler) _triggerpolicy_2);
+            Scheduler _scheduler = signal.getScheduler();
+            if ((_scheduler instanceof CronScheduler)) {
+              StringConcatenation _builder_4 = new StringConcatenation();
+              _builder_4.append("OSBPSignalCommonData.addWatcherConfig(\"");
+              _builder_4.append(watchername);
+              _builder_4.append(".handler.");
+              String _string_1 = handler.getName().toString();
+              String _plus_1 = (_string_1 + OSBPSignalConstants.CRON_SCHEDULER);
+              _builder_4.append(_plus_1);
+              _builder_4.append("\", \"");
+              Scheduler _scheduler_1 = signal.getScheduler();
+              String _expression = ((CronScheduler) _scheduler_1).getExpression();
+              _builder_4.append(_expression);
+              _builder_4.append("\");");
+              _builder_4.newLineIfNotEmpty();
+              result = result.concat(_builder_4.toString());
+            } else {
+              Scheduler _scheduler_2 = signal.getScheduler();
+              if ((_scheduler_2 instanceof HourlyScheduler)) {
+                StringConcatenation _builder_5 = new StringConcatenation();
+                _builder_5.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                _builder_5.append(watchername);
+                _builder_5.append(".handler.");
+                String _string_2 = handler.getName().toString();
+                String _plus_2 = (_string_2 + OSBPSignalConstants.HOURLY_SCHEDULER);
+                _builder_5.append(_plus_2);
+                _builder_5.append("\",\"");
+                Scheduler _scheduler_3 = signal.getScheduler();
+                int _minute = ((HourlyScheduler) _scheduler_3).getMinute();
+                _builder_5.append(_minute);
+                _builder_5.append("\");");
+                _builder_5.newLineIfNotEmpty();
+                result = result.concat(_builder_5.toString());
+              } else {
+                Scheduler _scheduler_4 = signal.getScheduler();
+                if ((_scheduler_4 instanceof DailyScheduler)) {
+                  Scheduler _scheduler_5 = signal.getScheduler();
+                  DailyScheduler daily = ((DailyScheduler) _scheduler_5);
+                  StringConcatenation _builder_6 = new StringConcatenation();
+                  _builder_6.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                  _builder_6.append(watchername);
+                  _builder_6.append(".handler.");
+                  String _string_3 = handler.getName().toString();
+                  String _plus_3 = (_string_3 + OSBPSignalConstants.DAILY_SCHEDULER_HOUR);
+                  _builder_6.append(_plus_3);
+                  _builder_6.append("\", \"");
+                  String _string_4 = Integer.valueOf(daily.getHour()).toString();
+                  _builder_6.append(_string_4);
+                  _builder_6.append("\");");
+                  _builder_6.newLineIfNotEmpty();
+                  result = result.concat(_builder_6.toString());
+                  StringConcatenation _builder_7 = new StringConcatenation();
+                  _builder_7.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                  _builder_7.append(watchername);
+                  _builder_7.append(".handler.");
+                  String _string_5 = handler.getName().toString();
+                  String _plus_4 = (_string_5 + OSBPSignalConstants.DAILY_SCHEDULER_MIN);
+                  _builder_7.append(_plus_4);
+                  _builder_7.append("\", \"");
+                  String _string_6 = Integer.valueOf(daily.getMinute()).toString();
+                  _builder_7.append(_string_6);
+                  _builder_7.append("\");");
+                  _builder_7.newLineIfNotEmpty();
+                  result = result.concat(_builder_7.toString());
+                } else {
+                  Scheduler _scheduler_6 = signal.getScheduler();
+                  if ((_scheduler_6 instanceof WeeklyScheduler)) {
+                    Scheduler _scheduler_7 = signal.getScheduler();
+                    WeeklyScheduler weekly = ((WeeklyScheduler) _scheduler_7);
+                    StringConcatenation _builder_8 = new StringConcatenation();
+                    _builder_8.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                    _builder_8.append(watchername);
+                    _builder_8.append(".handler.");
+                    String _string_7 = handler.getName().toString();
+                    String _plus_5 = (_string_7 + OSBPSignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK);
+                    _builder_8.append(_plus_5);
+                    _builder_8.append("\", \"");
+                    DayOfWeekEnum _dayofweek = weekly.getDayofweek();
+                    _builder_8.append(_dayofweek);
+                    _builder_8.append("\");");
+                    _builder_8.newLineIfNotEmpty();
+                    result = result.concat(_builder_8.toString());
+                    StringConcatenation _builder_9 = new StringConcatenation();
+                    _builder_9.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                    _builder_9.append(watchername);
+                    _builder_9.append(".handler.");
+                    String _string_8 = handler.getName().toString();
+                    String _plus_6 = (_string_8 + OSBPSignalConstants.WEEKLY_SCHEDULER_HOUR);
+                    _builder_9.append(_plus_6);
+                    _builder_9.append("\", \"");
+                    String _string_9 = Integer.valueOf(weekly.getHour()).toString();
+                    _builder_9.append(_string_9);
+                    _builder_9.append("\");");
+                    _builder_9.newLineIfNotEmpty();
+                    result = result.concat(_builder_9.toString());
+                    StringConcatenation _builder_10 = new StringConcatenation();
+                    _builder_10.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                    _builder_10.append(watchername);
+                    _builder_10.append(".handler.");
+                    String _string_10 = handler.getName().toString();
+                    String _plus_7 = (_string_10 + OSBPSignalConstants.WEEKLY_SCHEDULER_MIN);
+                    _builder_10.append(_plus_7);
+                    _builder_10.append("\", \"");
+                    String _string_11 = Integer.valueOf(weekly.getMinute()).toString();
+                    _builder_10.append(_string_11);
+                    _builder_10.append("\");");
+                    _builder_10.newLineIfNotEmpty();
+                    result = result.concat(_builder_10.toString());
+                  } else {
+                    Scheduler _scheduler_8 = signal.getScheduler();
+                    if ((_scheduler_8 instanceof MonthlyScheduler)) {
+                      Scheduler _scheduler_9 = signal.getScheduler();
+                      MonthlyScheduler monthly = ((MonthlyScheduler) _scheduler_9);
+                      StringConcatenation _builder_11 = new StringConcatenation();
+                      _builder_11.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                      _builder_11.append(watchername);
+                      _builder_11.append(".handler.");
+                      String _string_12 = handler.getName().toString();
+                      String _plus_8 = (_string_12 + OSBPSignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH);
+                      _builder_11.append(_plus_8);
+                      _builder_11.append("\", \"");
+                      String _string_13 = Integer.valueOf(monthly.getDayofmonth()).toString();
+                      _builder_11.append(_string_13);
+                      _builder_11.append("\");");
+                      _builder_11.newLineIfNotEmpty();
+                      result = result.concat(_builder_11.toString());
+                      StringConcatenation _builder_12 = new StringConcatenation();
+                      _builder_12.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                      _builder_12.append(watchername);
+                      _builder_12.append(".handler.");
+                      String _string_14 = handler.getName().toString();
+                      String _plus_9 = (_string_14 + OSBPSignalConstants.MONTHLY_SCHEDULER_HOUR);
+                      _builder_12.append(_plus_9);
+                      _builder_12.append("\", \"");
+                      String _string_15 = Integer.valueOf(monthly.getHour()).toString();
+                      _builder_12.append(_string_15);
+                      _builder_12.append("\");");
+                      _builder_12.newLineIfNotEmpty();
+                      result = result.concat(_builder_12.toString());
+                      StringConcatenation _builder_13 = new StringConcatenation();
+                      _builder_13.append("OSBPSignalCommonData.addWatcherConfig(\"");
+                      _builder_13.append(watchername);
+                      _builder_13.append(".handler.");
+                      String _string_16 = handler.getName().toString();
+                      String _plus_10 = (_string_16 + OSBPSignalConstants.MONTHLY_SCHEDULER_MIN);
+                      _builder_13.append(_plus_10);
+                      _builder_13.append("\", \"");
+                      String _string_17 = Integer.valueOf(monthly.getMinute()).toString();
+                      _builder_13.append(_string_17);
+                      _builder_13.append("\");");
+                      _builder_13.newLineIfNotEmpty();
+                      result = result.concat(_builder_13.toString());
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    StringConcatenation _builder_1 = new StringConcatenation();
+    _builder_1.append("if(OSBPSignalCommonData.createOrUpdateConfigurationFile()){");
+    _builder_1.newLine();
+    _builder_1.append("    ");
+    _builder_1.append("OSBPSignalCommonData.setConfigReady(\"");
+    QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pck);
+    _builder_1.append(_fullyQualifiedName, "    ");
+    _builder_1.append("\", true);");
+    _builder_1.newLineIfNotEmpty();
+    _builder_1.append("}");
+    _builder_1.newLine();
+    result = result.concat(_builder_1.toString());
+    return result;
   }
   
   public void toBinderOperations(final JvmGenericType type, final SignalWatcher watcher) {
     EList<JvmMember> _members = type.getMembers();
     final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
-      JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
-      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
       it.setVisibility(JvmVisibility.PUBLIC);
-      it.setSynchronized(true);
-      EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      it.setStatic(true);
       final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.dataInterchange = dataInterchange;");
-        _builder.newLine();
-        _builder.append("log.debug(\"Signal DataInterchange bound\");");
+        _builder.append("return dataInterchange;");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "bindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "getDataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class), _function);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
     EList<JvmMember> _members_1 = type.getMembers();
     final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
-      it.setSynchronized(true);
-      EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      it.setStatic(true);
       final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.dataInterchange = null;");
-        _builder.newLine();
-        _builder.append("log.debug(\"Signal DataInterchange unbound\");");
-        _builder.newLine();
+        _builder.append("return blobService;");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_2);
     };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "unbindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "getBlobService", this._typeReferenceBuilder.typeRef(IBlobService.class), _function_1);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
     EList<JvmMember> _members_2 = type.getMembers();
     final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
-      JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
-      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
-      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
       it.setVisibility(JvmVisibility.PUBLIC);
-      it.setSynchronized(true);
-      EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      it.setStatic(true);
       final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.blobService = blobService;");
-        _builder.newLine();
-        _builder.append("log.debug(\"Signal BlobService bound\");");
-        _builder.newLine();
+        _builder.append("return persistenceService;");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_3);
     };
-    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "bindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "getPersistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class), _function_2);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
     EList<JvmMember> _members_3 = type.getMembers();
     final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
-      it.setSynchronized(true);
-      EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      it.setStatic(true);
       final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.blobService = null;");
-        _builder.newLine();
-        _builder.append("log.debug(\"Signal BlobService unbound\");");
-        _builder.newLine();
+        _builder.append("return userAccessService;");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_4);
     };
-    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "unbindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3);
+    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "getUserAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class), _function_3);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
     EList<JvmMember> _members_4 = type.getMembers();
     final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
@@ -235,38 +459,37 @@
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.persistenceService = persistenceService;");
+        _builder.append("this.dataInterchange = dataInterchange;");
         _builder.newLine();
-        _builder.append("log.debug(\"Signal PersistenceService bound\");");
-        _builder.newLine();
+        _builder.append("log.info(\"Signal DataInterchange bound\");");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_5);
     };
-    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
+    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "bindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
     EList<JvmMember> _members_5 = type.getMembers();
     final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.persistenceService = null;");
+        _builder.append("this.dataInterchange = null;");
         _builder.newLine();
-        _builder.append("log.debug(\"Signal PersistenceService unbound\");");
+        _builder.append("log.info(\"Signal DataInterchange unbound\");");
         _builder.newLine();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_6);
     };
-    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "unbindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
+    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "unbindDataInterchangeMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
     EList<JvmMember> _members_6 = type.getMembers();
     final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
@@ -278,38 +501,124 @@
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.userAccessService = userAccessService;");
+        _builder.append("this.blobService = blobService;");
         _builder.newLine();
-        _builder.append("log.debug(\"Signal UserAccessService bound\");");
+        _builder.append("log.info(\"Signal BlobService bound\");");
         _builder.newLine();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_7);
     };
-    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(watcher, "bindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
+    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(watcher, "bindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
     EList<JvmMember> _members_7 = type.getMembers();
     final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
       it.setVisibility(JvmVisibility.PUBLIC);
       it.setSynchronized(true);
       EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
       this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
       final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("this.userAccessService = null;");
+        _builder.append("this.blobService = null;");
         _builder.newLine();
-        _builder.append("log.debug(\"Signal UserAccessService unbound\");");
+        _builder.append("log.info(\"Signal BlobService unbound\");");
+        _builder.newLine();
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_8);
     };
-    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(watcher, "unbindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
+    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(watcher, "unbindBlobMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
+    EList<JvmMember> _members_8 = type.getMembers();
+    final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
+      JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
+      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
+      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+      it.setVisibility(JvmVisibility.PUBLIC);
+      it.setSynchronized(true);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("this.persistenceService = persistenceService;");
+        _builder.newLine();
+        _builder.append("log.info(\"Signal PersistenceService bound\");");
+        _builder.newLine();
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_9);
+    };
+    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(watcher, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
+    EList<JvmMember> _members_9 = type.getMembers();
+    final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      it.setSynchronized(true);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("this.persistenceService = null;");
+        _builder.newLine();
+        _builder.append("log.info(\"Signal PersistenceService unbound\");");
+        _builder.newLine();
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_10);
+    };
+    JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(watcher, "unbindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
+    EList<JvmMember> _members_10 = type.getMembers();
+    final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
+      JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
+      this._annotationExtension.addAnnAttr(annotationRef, watcher, "cardinality", ReferenceCardinality.MANDATORY);
+      this._annotationExtension.addAnnAttr(annotationRef, watcher, "policy", ReferencePolicy.STATIC);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
+      it.setVisibility(JvmVisibility.PUBLIC);
+      it.setSynchronized(true);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("this.userAccessService = userAccessService;");
+        _builder.newLine();
+        _builder.append("log.info(\"Signal UserAccessService bound\");");
+        _builder.newLine();
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_11);
+    };
+    JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(watcher, "bindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
+    EList<JvmMember> _members_11 = type.getMembers();
+    final Procedure1<JvmOperation> _function_11 = (JvmOperation it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      it.setSynchronized(true);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("this.userAccessService = null;");
+        _builder.newLine();
+        _builder.append("log.info(\"Signal UserAccessService unbound\");");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_12);
+    };
+    JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(watcher, "unbindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_11);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
   }
   
   public String getFileURL(final DataInterchange dataInterchange) {
@@ -341,7 +650,7 @@
     return StringExtensions.toFirstLower(dataInterchange.getName());
   }
   
-  public String getBasicRunConfiguration(final DataInterchange dataInterchange, final boolean fqClass, final WorkerThreadRunnable.Direction direction, final boolean asynch) {
+  public String getBasicRunConfiguration(final String watcherfullQName, final DataInterchange dataInterchange, final boolean fqClass, final WorkerThreadRunnable.Direction direction, final boolean asynch) {
     String className = "";
     if (fqClass) {
       className = this._iQualifiedNameProvider.getFullyQualifiedName(dataInterchange).toString();
@@ -357,9 +666,11 @@
     _builder.append(className);
     _builder.append("();");
     _builder.newLineIfNotEmpty();
+    _builder.append("String url = getHandlerPropertyFromConfigurationFile(directorykey);");
+    _builder.newLine();
     String _defaultVariableName_1 = this.getDefaultVariableName(dataInterchange);
     _builder.append(_defaultVariableName_1);
-    _builder.append(".setFileURL(directory + FileSystems.getDefault().getSeparator() + filename);");
+    _builder.append(".setFileURL(checkPath(url != null ? url : getWatcherConfig(directorykey)) + filename);");
     _builder.newLineIfNotEmpty();
     String _defaultVariableName_2 = this.getDefaultVariableName(dataInterchange);
     _builder.append(_defaultVariableName_2);
@@ -373,323 +684,224 @@
     _builder.append(_defaultVariableName_4);
     _builder.append(".setBlobService(blobService);");
     _builder.newLineIfNotEmpty();
-    String _defaultVariableName_5 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_5);
+    CharSequence _xifexpression = null;
+    boolean _equals = direction.equals(WorkerThreadRunnable.Direction.IMPORT);
+    if (_equals) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      String _defaultVariableName_5 = this.getDefaultVariableName(dataInterchange);
+      _builder_1.append(_defaultVariableName_5);
+      _builder_1.append(".setDeleteFileAfterImport(");
+      boolean _isDeleteFileAfterImport = dataInterchange.isDeleteFileAfterImport();
+      _builder_1.append(_isDeleteFileAfterImport);
+      _builder_1.append(");");
+      _xifexpression = _builder_1;
+    }
+    _builder.append(_xifexpression);
+    _builder.newLineIfNotEmpty();
+    String _defaultVariableName_6 = this.getDefaultVariableName(dataInterchange);
+    _builder.append(_defaultVariableName_6);
     _builder.append(".setDirection(WorkerThreadRunnable.Direction.");
     String _upperCase = direction.name().toUpperCase();
     _builder.append(_upperCase);
     _builder.append(");");
     _builder.newLineIfNotEmpty();
     _builder.append("return ");
-    String _defaultVariableName_6 = this.getDefaultVariableName(dataInterchange);
-    _builder.append(_defaultVariableName_6);
+    String _defaultVariableName_7 = this.getDefaultVariableName(dataInterchange);
+    _builder.append(_defaultVariableName_7);
     _builder.append(";");
+    _builder.newLineIfNotEmpty();
     return _builder.toString();
   }
   
   public void toWatcherOperations(final JvmGenericType type, final SignalWatcher watcher) {
     EList<JvmMember> _members = type.getMembers();
     final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
-      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
-      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "event", this._typeReferenceBuilder.typeRef("WatchEvent<Path>"));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
-      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(watcher, "file", this._typeReferenceBuilder.typeRef(Path.class));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
       final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        String _handleEvent = this.handleEvent(watcher);
-        _builder.append(_handleEvent);
+        String _executeWatcherService = this.getExecuteWatcherService(watcher);
+        _builder.append(_executeWatcherService);
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "handleEvent", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, "executeWatcherService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
     EList<JvmMember> _members_1 = type.getMembers();
     final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
-      EList<JvmFormalParameter> _parameters = it.getParameters();
-      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "interchanges", this._typeReferenceBuilder.typeRef("ArrayList<WorkerThreadRunnable>"));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
-      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(watcher, "synchronous", this._typeReferenceBuilder.typeRef(boolean.class));
-      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
       final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        String _executeTasks = this.executeTasks(watcher);
-        _builder.append(_executeTasks);
-        it_1.append(_builder);
-      };
-      this._jvmTypesBuilder.setBody(it, _function_2);
-    };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "executeTasks", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
-    HashSet<String> _hashSet = new HashSet<String>();
-    this.operationlist = _hashSet;
-    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
-      EList<SignalHandler> _handlers = watcher.getHandlers();
-      for (final SignalHandler handler : _handlers) {
-        DataTransfer _data = handler.getData();
-        if ((_data instanceof SingleTransfer)) {
-          DataTransfer _data_1 = handler.getData();
-          final SingleTransfer transferdata = ((SingleTransfer) _data_1);
-          this.createAppropriateInterchangeOperations(type, watcher, transferdata.getInterchange());
-        } else {
-          DataTransfer _data_2 = handler.getData();
-          final ListTransfer transferdata_1 = ((ListTransfer) _data_2);
-          EList<SignalDatainterchange> _interchanges = transferdata_1.getInterchanges();
-          for (final SignalDatainterchange interchange : _interchanges) {
-            this.createAppropriateInterchangeOperations(type, watcher, interchange);
-          }
-        }
-      }
-    }
-    EList<JvmMember> _members_2 = type.getMembers();
-    final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
-      final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
-        StringConcatenation _builder = new StringConcatenation();
         String _initTasksLists = this.initTasksLists(watcher);
         _builder.append(_initTasksLists);
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_3);
+      this._jvmTypesBuilder.setBody(it, _function_2);
     };
-    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "initTasksLists", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
-    EList<JvmMember> _members_3 = type.getMembers();
-    final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
-      final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(watcher, "initTasksLists", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
+    boolean _hasHandlers = this.hasHandlers(watcher);
+    if (_hasHandlers) {
+      EList<JvmMember> _members_2 = type.getMembers();
+      final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
+        this._jvmTypesBuilder.setDocumentation(it, "Sets or updates the list of file masks of all file mask based handlers, if an external configuration file exists and has been changed on runtime.");
+        final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _updateOrSetHandlerConfiguration = this.updateOrSetHandlerConfiguration(watcher);
+          _builder.append(_updateOrSetHandlerConfiguration);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_3);
+      };
+      JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(watcher, "updateOrSetHandlerConfiguration", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
+      EList<JvmMember> _members_3 = type.getMembers();
+      final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(watcher, "file", this._typeReferenceBuilder.typeRef(Path.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _handleEvent = this.handleEvent(watcher);
+          _builder.append(_handleEvent);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_4);
+      };
+      JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "handleEvent", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
+    }
+    HashSet<String> _hashSet = new HashSet<String>();
+    this.operationlist = _hashSet;
+    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
+      EList<SignalHandler> _handlers = watcher.getHandlers();
+      for (final SignalHandler handler : _handlers) {
+        EList<SignalDatainterchange> _interchanges = handler.getInterchanges();
+        for (final SignalDatainterchange interchange : _interchanges) {
+          this.createAppropriateInterchangeOperations(type, watcher, interchange);
+        }
+      }
+    }
+    boolean _hasSchedulers = this.hasSchedulers(watcher);
+    if (_hasSchedulers) {
+      EList<JvmMember> _members_4 = type.getMembers();
+      final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
+        final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _scheduleAllJobs = this.scheduleAllJobs(watcher);
+          _builder.append(_scheduleAllJobs);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_5);
+      };
+      JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "scheduleAllJobs", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+    }
+    EList<JvmMember> _members_5 = type.getMembers();
+    final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
+      final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         _builder.append("active = false;");
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_4);
+      this._jvmTypesBuilder.setBody(it, _function_6);
     };
-    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(watcher, "stopThread", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
-    EList<JvmMember> _members_4 = type.getMembers();
-    final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
+    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "stopThread", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
+    EList<JvmMember> _members_6 = type.getMembers();
+    final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Activate.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
+      final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         String _activate = this.getActivate(watcher);
         _builder.append(_activate);
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_5);
+      this._jvmTypesBuilder.setBody(it, _function_7);
     };
-    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(watcher, "activate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_4);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
-    EList<JvmMember> _members_5 = type.getMembers();
-    final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
+    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(watcher, "activate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
+    EList<JvmMember> _members_7 = type.getMembers();
+    final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
       EList<JvmAnnotationReference> _annotations = it.getAnnotations();
       JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Deactivate.class);
       this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
+      final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         String _deactivate = this.getDeactivate(watcher);
         _builder.append(_deactivate);
         it_1.append(_builder);
       };
-      this._jvmTypesBuilder.setBody(it, _function_6);
+      this._jvmTypesBuilder.setBody(it, _function_8);
     };
-    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(watcher, "deactivate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
-  }
-  
-  public String executeTasks(final SignalWatcher watcher) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("for (WorkerThreadRunnable interchange : interchanges) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("if(synchronous){");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("//Making sure that the current task is done before continuing ");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("try {");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("log.debug(\"Watcher: Start \"+interchange.getDirection()+\" for interchange \"+interchange.getName()+\"!\");");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("executorService.submit(interchange).get();");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("log.debug(\"Watcher: \"+interchange.getDirection()+\" for \"+ interchange.getName() + \" successfully ended!\");");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("} catch (Exception e) {");
-    _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("log.debug(\"Watcher: \"+interchange.getDirection()+\" for \"+ interchange.getName() + \" interupted!\\n\"+e.getMessage());");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("else{");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("// Just executre the task and move onto the next one");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("executorService.execute(interchange);");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("}");
-    return _builder.toString();
+    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(watcher, "deactivate", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
   }
   
   public String handleEvent(final SignalWatcher watcher) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("// get what to do based on the filename");
+    _builder.append("updateOrSetHandlerConfiguration();");
     _builder.newLine();
-    _builder.append("String filemask = isFileMaskValid(file.getFileName().toString(), event.kind());");
+    _builder.append("String handlername = isFileNameValid(file.getFileName().toString());");
     _builder.newLine();
-    _builder.append("if(filemask != null){");
+    _builder.append("if(handlername != null){");
     _builder.newLine();
     _builder.append("\t");
-    _builder.append("switch (filemask) {");
+    _builder.append("switch (handlername) {");
     _builder.newLine();
     String result = _builder.toString();
     EList<SignalHandler> _handlers = watcher.getHandlers();
     for (final SignalHandler handler : _handlers) {
-      {
-        SignalExecutionTypeEnum _elvis = null;
-        SignalExecutionTypeEnum _executiontype = handler.getExecutiontype();
-        if (_executiontype != null) {
-          _elvis = _executiontype;
-        } else {
-          _elvis = SignalExecutionTypeEnum.SYNC;
-        }
-        boolean is_synch = _elvis.equals(SignalExecutionTypeEnum.SYNC);
-        DataTransfer _data = handler.getData();
-        if ((_data instanceof SingleTransfer)) {
-          DataTransfer _data_1 = handler.getData();
-          SingleTransfer handlerdata = ((SingleTransfer) _data_1);
-          StringConcatenation _builder_1 = new StringConcatenation();
-          _builder_1.append("case \"");
+      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+      if ((_triggerpolicy instanceof TriggerFile)) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        CharSequence _xifexpression = null;
+        boolean _equals = handler.getExecutiontype().equals(SignalExecutionTypeEnum.NOSEQ);
+        if (_equals) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("\t\t");
+          _builder_2.append("case \"");
           String _name = handler.getName();
-          String _plus = (_name + "|");
-          String _filemask = handler.getFilemask();
-          String _plus_1 = (_plus + _filemask);
-          _builder_1.append(_plus_1);
-          _builder_1.append("\":");
-          _builder_1.newLineIfNotEmpty();
-          CharSequence _xifexpression = null;
-          if (is_synch) {
-            StringConcatenation _builder_2 = new StringConcatenation();
-            _builder_2.append("try {");
-            _builder_2.newLine();
-            _builder_2.append("\t");
-            _builder_2.append("log.debug(\"Watcher: Start ");
-            String _firstUpper = StringExtensions.toFirstUpper(handlerdata.getInterchange().getDataAction().getLiteral());
-            _builder_2.append(_firstUpper, "\t");
-            _builder_2.append(" for interchange ");
-            String _firstUpper_1 = StringExtensions.toFirstUpper(handlerdata.getInterchange().getDataRef().getName());
-            _builder_2.append(_firstUpper_1, "\t");
-            _builder_2.append("!\");");
-            _builder_2.newLineIfNotEmpty();
-            _builder_2.append("\t");
-            _builder_2.append("executorService.submit(");
-            String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(handlerdata.getInterchange());
-            _builder_2.append(_appropriateInterchangeOperationName, "\t");
-            _builder_2.append("(directory + \"");
-            String _fileName = handlerdata.getInterchange().getFileName();
-            _builder_2.append(_fileName, "\t");
-            _builder_2.append("\")).get();");
-            _builder_2.newLineIfNotEmpty();
-            _builder_2.append("\t");
-            _builder_2.append("log.debug(\"Watcher: ");
-            String _firstUpper_2 = StringExtensions.toFirstUpper(handlerdata.getInterchange().getDataAction().getLiteral());
-            _builder_2.append(_firstUpper_2, "\t");
-            _builder_2.append(" for interchange ");
-            String _firstUpper_3 = StringExtensions.toFirstUpper(handlerdata.getInterchange().getDataRef().getName());
-            _builder_2.append(_firstUpper_3, "\t");
-            _builder_2.append(" successfully ended!\");");
-            _builder_2.newLineIfNotEmpty();
-            _builder_2.append("}catch (Exception e) {");
-            _builder_2.newLine();
-            _builder_2.append("\t");
-            _builder_2.append("log.debug(\"Watcher: ");
-            String _firstUpper_4 = StringExtensions.toFirstUpper(handlerdata.getInterchange().getDataAction().getLiteral());
-            _builder_2.append(_firstUpper_4, "\t");
-            _builder_2.append(" for interchange ");
-            String _firstUpper_5 = StringExtensions.toFirstUpper(handlerdata.getInterchange().getDataRef().getName());
-            _builder_2.append(_firstUpper_5, "\t");
-            _builder_2.append(" interupted!\\n\"+e.getMessage());");
-            _builder_2.newLineIfNotEmpty();
-            _builder_2.append("} break;");
-            _builder_2.newLine();
-            _xifexpression = _builder_2;
-          } else {
-            StringConcatenation _builder_3 = new StringConcatenation();
-            _builder_3.append("executorService.execute(");
-            String _appropriateInterchangeOperationName_1 = this.getAppropriateInterchangeOperationName(handlerdata.getInterchange());
-            _builder_3.append(_appropriateInterchangeOperationName_1);
-            _builder_3.append("(directory + \"");
-            String _fileName_1 = handlerdata.getInterchange().getFileName();
-            _builder_3.append(_fileName_1);
-            _builder_3.append("\")); break;");
-            _xifexpression = _builder_3;
-          }
-          _builder_1.append(_xifexpression);
-          _builder_1.newLineIfNotEmpty();
-          result = result.concat(_builder_1.toString());
-        } else {
-          StringConcatenation _builder_4 = new StringConcatenation();
-          _builder_4.append("case \"");
+          _builder_2.append(_name, "\t\t");
+          _builder_2.append("\": super.executeTasksParallel(\"");
           String _name_1 = handler.getName();
-          String _plus_2 = (_name_1 + "|");
-          String _filemask_1 = handler.getFilemask();
-          String _plus_3 = (_plus_2 + _filemask_1);
-          _builder_4.append(_plus_3);
-          _builder_4.append("\":");
-          _builder_4.newLineIfNotEmpty();
-          _builder_4.append("executeTasks(listOfTasks.get(\"");
+          _builder_2.append(_name_1, "\t\t");
+          _builder_2.append("\", file); break;");
+          _xifexpression = _builder_2;
+        } else {
+          StringConcatenation _builder_3 = new StringConcatenation();
+          _builder_3.append("\t\t");
+          _builder_3.append("case \"");
           String _name_2 = handler.getName();
-          String _plus_4 = (_name_2 + "|");
-          String _filemask_2 = handler.getFilemask();
-          String _plus_5 = (_plus_4 + _filemask_2);
-          _builder_4.append(_plus_5);
-          _builder_4.append("\"), ");
-          _builder_4.append(is_synch);
-          _builder_4.append("); break;");
-          _builder_4.newLineIfNotEmpty();
-          result = result.concat(_builder_4.toString());
+          _builder_3.append(_name_2, "\t\t");
+          _builder_3.append("\": super.executeTasksSequentially(\"");
+          String _name_3 = handler.getName();
+          _builder_3.append(_name_3, "\t\t");
+          _builder_3.append("\", file); break;");
+          _xifexpression = _builder_3;
         }
+        _builder_1.append(_xifexpression);
+        _builder_1.newLineIfNotEmpty();
+        result = result.concat(_builder_1.toString());
       }
     }
-    StringConcatenation _builder_1 = new StringConcatenation();
-    _builder_1.append("\t\t");
-    _builder_1.append("default: break;");
-    _builder_1.newLine();
-    _builder_1.append("\t");
-    _builder_1.append("}");
-    _builder_1.newLine();
-    _builder_1.append("}");
-    _builder_1.newLine();
-    _builder_1.append("\t   \t");
-    _builder_1.append("else{");
-    _builder_1.newLine();
-    _builder_1.append("\t    \t");
-    _builder_1.append("log.debug(\"No action executed for file [\"+file+\"] on event [\"+event.kind().name()+\"].\");");
-    _builder_1.newLine();
-    _builder_1.append("\t    ");
-    _builder_1.append("}");
-    result = result.concat(_builder_1.toString());
+    StringConcatenation _builder_4 = new StringConcatenation();
+    _builder_4.append("\t\t");
+    _builder_4.append("default: break;");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("else{ log.info(\"");
+    String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
+    _builder_4.append(_firstUpper);
+    _builder_4.append(" - No action executed for file [\"+file+\"].\");}");
+    result = result.concat(_builder_4.toString());
     return result;
   }
   
@@ -697,13 +909,13 @@
     EList<JvmMember> _members = type.getMembers();
     final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
       EList<JvmTypeReference> _exceptions = it.getExceptions();
-      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(IOException.class);
+      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Exception.class);
       this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
       final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
         _builder.append("super();");
         _builder.newLine();
-        _builder.append("executorService = Executors.newFixedThreadPool(10);");
+        _builder.append("executorService = Executors.newCachedThreadPool();");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setBody(it, _function_1);
@@ -712,61 +924,92 @@
     this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
   }
   
-  public String initTasksLists(final SignalWatcher watcher) {
+  public String updateOrSetHandlerConfiguration(final SignalWatcher watcher) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("ArrayList<WorkerThreadRunnable> data = null;");
-    _builder.newLine();
-    _builder.append("listOfTasks = new HashMap<>();");
+    _builder.append("String key, maskcfg;");
     _builder.newLine();
     String result = _builder.toString();
     EList<SignalHandler> _handlers = watcher.getHandlers();
     for (final SignalHandler handler : _handlers) {
-      {
-        DataTransfer _data = handler.getData();
-        if ((_data instanceof ListTransfer)) {
-          DataTransfer _data_1 = handler.getData();
-          ListTransfer handlerdata = ((ListTransfer) _data_1);
-          StringConcatenation _builder_1 = new StringConcatenation();
-          _builder_1.append("data = new ArrayList<WorkerThreadRunnable>();");
-          _builder_1.newLine();
-          result = result.concat(_builder_1.toString());
-          EList<SignalDatainterchange> _interchanges = handlerdata.getInterchanges();
-          for (final SignalDatainterchange interchange : _interchanges) {
-            StringConcatenation _builder_2 = new StringConcatenation();
-            _builder_2.append("data.add(");
-            String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(interchange);
-            _builder_2.append(_appropriateInterchangeOperationName);
-            _builder_2.append("(\"");
-            String _fileName = interchange.getFileName();
-            _builder_2.append(_fileName);
-            _builder_2.append("\"));");
-            _builder_2.newLineIfNotEmpty();
-            result = result.concat(_builder_2.toString());
-          }
-          StringConcatenation _builder_3 = new StringConcatenation();
-          _builder_3.append("listOfTasks.put(\"");
-          String _name = handler.getName();
-          String _plus = (_name + "|");
-          String _filemask = handler.getFilemask();
-          String _plus_1 = (_plus + _filemask);
-          _builder_3.append(_plus_1);
-          _builder_3.append("\", data);");
-          _builder_3.newLineIfNotEmpty();
-          result = result.concat(_builder_3.toString());
-        }
-        StringConcatenation _builder_4 = new StringConcatenation();
-        _builder_4.append("addFilemaskAndAction(\"");
+      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+      if ((_triggerpolicy instanceof TriggerFile)) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("key = watcherid + \".handler.");
+        String _name = handler.getName();
+        _builder_1.append(_name);
+        _builder_1.append("\" + OSBPSignalConstants.FILE_TRIGGER;");
+        _builder_1.newLineIfNotEmpty();
+        _builder_1.append("maskcfg = getFilemaskValue(getHandlerPropertyFromConfigurationFile(key));");
+        _builder_1.newLine();
+        _builder_1.append("addFileMasks(\"");
         String _name_1 = handler.getName();
-        String _plus_2 = (_name_1 + "|");
-        String _filemask_1 = handler.getFilemask();
-        String _plus_3 = (_plus_2 + _filemask_1);
-        _builder_4.append(_plus_3);
-        _builder_4.append("\", SignalHandlerTypeEnum.");
-        String _upperCase = handler.getActionType().getLiteral().toUpperCase();
-        _builder_4.append(_upperCase);
-        _builder_4.append(");");
-        _builder_4.newLineIfNotEmpty();
+        _builder_1.append(_name_1);
+        _builder_1.append("\", maskcfg != null ? maskcfg : getWatcherConfig(key));");
+        _builder_1.newLineIfNotEmpty();
+        result = result.concat(_builder_1.toString());
+      }
+    }
+    return result;
+  }
+  
+  public String initTasksLists(final SignalWatcher watcher) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("initListOfTasks(); ArrayList<WorkerThreadRunnable> data = null;");
+    _builder.newLine();
+    String result = _builder.toString();
+    EList<SignalHandler> _handlers = watcher.getHandlers();
+    for (final SignalHandler handler : _handlers) {
+      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+      if ((_triggerpolicy instanceof TriggerFile)) {
+        StringConcatenation _builder_1 = new StringConcatenation();
+        _builder_1.append("data = new ArrayList<WorkerThreadRunnable>();");
+        _builder_1.newLine();
+        result = result.concat(_builder_1.toString());
+        EList<SignalDatainterchange> _interchanges = handler.getInterchanges();
+        for (final SignalDatainterchange interchange : _interchanges) {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("data.add(");
+          String _appropriateInterchangeOperationName = this.getAppropriateInterchangeOperationName(interchange);
+          _builder_2.append(_appropriateInterchangeOperationName);
+          _builder_2.append("(\"");
+          String _fileName = interchange.getFileName();
+          _builder_2.append(_fileName);
+          _builder_2.append("\"));");
+          _builder_2.newLineIfNotEmpty();
+          result = result.concat(_builder_2.toString());
+        }
+        StringConcatenation _builder_3 = new StringConcatenation();
+        _builder_3.append("getListOfTasks().put(\"");
+        String _name = handler.getName();
+        _builder_3.append(_name);
+        _builder_3.append("\", data);");
+        _builder_3.newLineIfNotEmpty();
+        result = result.concat(_builder_3.toString());
+      } else {
+        StringConcatenation _builder_4 = new StringConcatenation();
+        _builder_4.append("data = new ArrayList<WorkerThreadRunnable>();");
+        _builder_4.newLine();
         result = result.concat(_builder_4.toString());
+        EList<SignalDatainterchange> _interchanges_1 = handler.getInterchanges();
+        for (final SignalDatainterchange interchange_1 : _interchanges_1) {
+          StringConcatenation _builder_5 = new StringConcatenation();
+          _builder_5.append("data.add(");
+          String _appropriateInterchangeOperationName_1 = this.getAppropriateInterchangeOperationName(interchange_1);
+          _builder_5.append(_appropriateInterchangeOperationName_1);
+          _builder_5.append("(\"");
+          String _fileName_1 = interchange_1.getFileName();
+          _builder_5.append(_fileName_1);
+          _builder_5.append("\"));");
+          _builder_5.newLineIfNotEmpty();
+          result = result.concat(_builder_5.toString());
+        }
+        StringConcatenation _builder_6 = new StringConcatenation();
+        _builder_6.append("getListOfTasks().put(\"");
+        String _name_1 = handler.getName();
+        _builder_6.append(_name_1);
+        _builder_6.append("\", data);");
+        _builder_6.newLineIfNotEmpty();
+        result = result.concat(_builder_6.toString());
       }
     }
     return result;
@@ -810,13 +1053,13 @@
               this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
               final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
                 StringConcatenation _builder = new StringConcatenation();
-                String _basicRunConfiguration = this.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT, false);
+                String _basicRunConfiguration = this.getBasicRunConfiguration(this._iQualifiedNameProvider.getFullyQualifiedName(watcher).toString(), interchange.getDataRef(), true, WorkerThreadRunnable.Direction.IMPORT, false);
                 _builder.append(_basicRunConfiguration);
                 it_1.append(_builder);
               };
               this._jvmTypesBuilder.setBody(it, _function_1);
             };
-            JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef("WorkerThreadRunnable"), _function);
+            JvmOperation _method = this._jvmTypesBuilder.toMethod(watcher, operationname, this._typeReferenceBuilder.typeRef(WorkerThreadRunnable.class), _function);
             this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
           } else {
             EList<JvmMember> _members_1 = type.getMembers();
@@ -826,7 +1069,7 @@
               this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
               final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
                 StringConcatenation _builder = new StringConcatenation();
-                String _basicRunConfiguration = this.getBasicRunConfiguration(interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT, false);
+                String _basicRunConfiguration = this.getBasicRunConfiguration(this._iQualifiedNameProvider.getFullyQualifiedName(watcher).toString(), interchange.getDataRef(), true, WorkerThreadRunnable.Direction.EXPORT, false);
                 _builder.append(_basicRunConfiguration);
                 it_1.append(_builder);
               };
@@ -850,27 +1093,27 @@
       it.setVisibility(JvmVisibility.PRIVATE);
       final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("LoggerFactory.getLogger(\"watcher\")");
+        _builder.append("\"");
+        QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+        _builder.append(_fullyQualifiedName);
+        _builder.append("\"");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    field = this._jvmTypesBuilder.toField(watcher, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
+    field = this._jvmTypesBuilder.toField(watcher, "watcherid", this._typeReferenceBuilder.typeRef(String.class), _function);
     EList<JvmMember> _members = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
     final Procedure1<JvmField> _function_1 = (JvmField it) -> {
       it.setVisibility(JvmVisibility.PRIVATE);
       final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append("\"");
-        String _directory = watcher.getDirectory();
-        _builder.append(_directory);
-        _builder.append("\"");
+        _builder.append("watcherid + OSBPSignalConstants.DIRECTORY");
         it_1.append(_builder);
       };
       this._jvmTypesBuilder.setInitializer(it, _function_2);
     };
-    field = this._jvmTypesBuilder.toField(watcher, "directory", this._typeReferenceBuilder.typeRef(String.class), _function_1);
+    field = this._jvmTypesBuilder.toField(watcher, "directorykey", this._typeReferenceBuilder.typeRef(String.class), _function_1);
     EList<JvmMember> _members_1 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
     final Procedure1<JvmField> _function_2 = (JvmField it) -> {
@@ -898,118 +1141,80 @@
     field = this._jvmTypesBuilder.toField(watcher, "executorService", this._typeReferenceBuilder.typeRef(ExecutorService.class), _function_4);
     EList<JvmMember> _members_4 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
-    final Procedure1<JvmField> _function_5 = (JvmField it) -> {
-      it.setVisibility(JvmVisibility.PRIVATE);
-    };
-    field = this._jvmTypesBuilder.toField(watcher, "listOfTasks", 
-      this._typeReferenceBuilder.typeRef("Map<String, ArrayList<WorkerThreadRunnable>>"), _function_5);
+    field = this._jvmTypesBuilder.toField(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+    field.setStatic(true);
+    field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_5 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
-    field = this._jvmTypesBuilder.toField(watcher, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
+    field = this._jvmTypesBuilder.toField(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
     field.setStatic(true);
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_6 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field);
-    field = this._jvmTypesBuilder.toField(watcher, "dataInterchange", this._typeReferenceBuilder.typeRef(IDataInterchange.class));
+    field = this._jvmTypesBuilder.toField(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
     field.setStatic(true);
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_7 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field);
-    field = this._jvmTypesBuilder.toField(watcher, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
+    field = this._jvmTypesBuilder.toField(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
     field.setStatic(true);
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members_8 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field);
-    field = this._jvmTypesBuilder.toField(watcher, "blobService", this._typeReferenceBuilder.typeRef(IBlobService.class));
-    field.setStatic(true);
-    field.setVisibility(JvmVisibility.PRIVATE);
-    EList<JvmMember> _members_9 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_9, field);
   }
   
   public String getActivate(final SignalWatcher watcher) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("thread = new Thread() {");
-    _builder.newLine();
+    _builder.append("thread = new Thread(\"");
+    String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
+    _builder.append(_firstUpper);
+    _builder.append("Watcher\") {");
+    _builder.newLineIfNotEmpty();
     _builder.append("\t");
     _builder.append("@Override");
     _builder.newLine();
-    _builder.append("\t\t");
+    _builder.append("\t");
     _builder.append("public void run() {");
     _builder.newLine();
-    _builder.append("\t\t\t");
-    _builder.append("//");
-    String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
-    String _plus = (_firstUpper + "Watcher");
-    _builder.append(_plus, "\t\t\t");
-    _builder.append(" watcherservice = null;");
+    CharSequence _xifexpression = null;
+    EObject _eContainer = watcher.eContainer();
+    if ((_eContainer instanceof SignalPackage)) {
+      CharSequence _xblockexpression = null;
+      {
+        EObject _eContainer_1 = watcher.eContainer();
+        String firstwatcher = ((SignalPackage) _eContainer_1).getWatchers().get(0).getName();
+        CharSequence _xifexpression_1 = null;
+        String _name = watcher.getName();
+        boolean _equals = Objects.equal(_name, firstwatcher);
+        if (_equals) {
+          StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("WatcherConfigurations.init();");
+          _builder_1.newLine();
+          _xifexpression_1 = _builder_1;
+        } else {
+          StringConcatenation _builder_2 = new StringConcatenation();
+          _builder_2.append("log.info(\"- ");
+          String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
+          _builder_2.append(_firstUpper_1);
+          _builder_2.append("Watcher waiting for watcher configurations to be initialized\");");
+          _builder_2.newLineIfNotEmpty();
+          _builder_2.append("while(!isConfigReady(\"");
+          QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher.eContainer());
+          _builder_2.append(_fullyQualifiedName);
+          _builder_2.append("\")){}");
+          _builder_2.newLineIfNotEmpty();
+          _xifexpression_1 = _builder_2;
+        }
+        _xblockexpression = _xifexpression_1;
+      }
+      _xifexpression = _xblockexpression;
+    }
+    _builder.append(_xifexpression);
     _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t\t");
-    _builder.append("try {");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("//watcherservice = new ");
-    String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
-    String _plus_1 = (_firstUpper_1 + "Watcher");
-    _builder.append(_plus_1, "\t\t\t\t\t");
-    _builder.append("();");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("//watcherservice.setSignals(Arrays.asList(SignalTypeEnum.");
-    String _upperCase = watcher.getSignal().getLiteral().toUpperCase();
-    _builder.append(_upperCase, "\t\t\t\t\t");
-    _builder.append("));");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("//watcherservice.registerPathToWatcher(Paths.get(directory));");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("setSignals(Arrays.asList(SignalTypeEnum.");
-    String _upperCase_1 = watcher.getSignal().getLiteral().toUpperCase();
-    _builder.append(_upperCase_1, "\t\t\t\t\t");
-    _builder.append("));");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("registerPathToWatcher(Paths.get(directory));");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("while (active) {");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t\t");
-    _builder.append("log.debug(\"Start watcher Service ");
-    String _firstUpper_2 = StringExtensions.toFirstUpper(watcher.getName());
-    String _plus_2 = (_firstUpper_2 + "Watcher");
-    _builder.append(_plus_2, "\t\t\t\t\t\t");
-    _builder.append("\");");
-    _builder.newLineIfNotEmpty();
-    _builder.append("\t\t\t\t\t\t");
-    _builder.append("//watcherservice.processEvents();");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t\t");
-    _builder.append("initTasksLists();");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t\t");
-    _builder.append("processEvents();");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("}");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    _builder.append("} catch (Exception e) {");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("log.debug(\"Thread interrupted \" + e.getMessage());");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("//watcherservice.closeWatcher();");
-    _builder.newLine();
-    _builder.append("\t\t\t\t\t");
-    _builder.append("closeWatcher();");
-    _builder.newLine();
-    _builder.append("\t\t\t\t");
-    _builder.append("}");
-    _builder.newLine();
     _builder.append("\t\t");
+    _builder.append("executeWatcherService();");
+    _builder.newLine();
+    _builder.append("\t");
     _builder.append("}");
     _builder.newLine();
     _builder.append("};");
@@ -1018,25 +1223,486 @@
     return _builder.toString();
   }
   
+  public String getExecuteWatcherService(final SignalWatcher watcher) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("try {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("if (!isPathregistered()) {");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("String url = getHandlerPropertyFromConfigurationFile(directorykey);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("url = url != null ? url : getWatcherConfig(directorykey);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("URL a = isDirectoryValidURL(url);");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("if(a != null && a.getProtocol().equals(\"file\")){");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("if(existsDirectory(url)){    \t\t\t\t");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("registerPathToWatcher(Paths.get(url));");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("setPathregistered(true);");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("}else{");
+    _builder.newLine();
+    _builder.append("\t\t\t\t");
+    _builder.append("log.error(\"Path [\" + url + \"] not existing! Directory not registered!\");");
+    _builder.newLine();
+    _builder.append("\t\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("initTasksLists();");
+    _builder.newLine();
+    _builder.append("\t");
+    CharSequence _xifexpression = null;
+    boolean _hasHandlers = this.hasHandlers(watcher);
+    if (_hasHandlers) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("updateOrSetHandlerConfiguration();");
+      _builder_1.newLine();
+      _xifexpression = _builder_1;
+    }
+    _builder.append(_xifexpression, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    CharSequence _xifexpression_1 = null;
+    boolean _hasSchedulers = this.hasSchedulers(watcher);
+    if (_hasSchedulers) {
+      StringConcatenation _builder_2 = new StringConcatenation();
+      _builder_2.append("initScheduler(\"");
+      String _firstUpper = StringExtensions.toFirstUpper(watcher.getName());
+      _builder_2.append(_firstUpper);
+      _builder_2.append("Scheduler\", \"");
+      int _schedulerCount = this.getSchedulerCount(watcher);
+      _builder_2.append(_schedulerCount);
+      _builder_2.append("\");");
+      _builder_2.newLineIfNotEmpty();
+      _builder_2.append("scheduleAllJobs();");
+      _builder_2.newLine();
+      _builder_2.append("startScheduler();");
+      _builder_2.newLine();
+      _xifexpression_1 = _builder_2;
+    }
+    _builder.append(_xifexpression_1, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    CharSequence _xifexpression_2 = null;
+    boolean _hasHandlers_1 = this.hasHandlers(watcher);
+    if (_hasHandlers_1) {
+      StringConcatenation _builder_3 = new StringConcatenation();
+      _builder_3.append("while (active) {");
+      _builder_3.newLine();
+      _builder_3.append("\t");
+      _builder_3.append("log.info(\"");
+      String _firstUpper_1 = StringExtensions.toFirstUpper(watcher.getName());
+      _builder_3.append(_firstUpper_1, "\t");
+      _builder_3.append(" Service started!\");");
+      _builder_3.newLineIfNotEmpty();
+      _builder_3.append("\t");
+      _builder_3.append("processEvents();");
+      _builder_3.newLine();
+      _builder_3.append("}");
+      _builder_3.newLine();
+      _xifexpression_2 = _builder_3;
+    }
+    _builder.append(_xifexpression_2, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("log.info(\"WatcherService ");
+    String _firstUpper_2 = StringExtensions.toFirstUpper(watcher.getName());
+    _builder.append(_firstUpper_2, "\t");
+    _builder.append(" successfully started.\");");
+    _builder.newLineIfNotEmpty();
+    _builder.append("} catch (Exception e) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("log.error(\"WatcherService ");
+    String _firstUpper_3 = StringExtensions.toFirstUpper(watcher.getName());
+    _builder.append(_firstUpper_3, "\t");
+    _builder.append(" interrupted due to: \", e);");
+    _builder.newLineIfNotEmpty();
+    _builder.append("}");
+    return _builder.toString();
+  }
+  
   public String getDeactivate(final SignalWatcher watcher) {
     StringConcatenation _builder = new StringConcatenation();
     _builder.append("try {");
     _builder.newLine();
     _builder.append("\t");
+    CharSequence _xifexpression = null;
+    boolean _hasSchedulers = this.hasSchedulers(watcher);
+    if (_hasSchedulers) {
+      StringConcatenation _builder_1 = new StringConcatenation();
+      _builder_1.append("if(getScheduler() != null){");
+      _builder_1.newLine();
+      _builder_1.append("\t");
+      _builder_1.append("shutdownScheduler();");
+      _builder_1.newLine();
+      _builder_1.append("}");
+      _builder_1.newLine();
+      _xifexpression = _builder_1;
+    }
+    _builder.append(_xifexpression, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
     _builder.append("stopThread();");
     _builder.newLine();
     _builder.append("\t");
     _builder.append("thread.join();");
     _builder.newLine();
-    _builder.append("} catch (InterruptedException e) {");
+    _builder.append("} catch (Exception e) {");
     _builder.newLine();
     _builder.append("\t");
     _builder.append("e.printStackTrace();");
     _builder.newLine();
     _builder.append("}");
+    _builder.newLine();
+    _builder.append("log.info(\"Watcher shutted down...\");");
+    _builder.newLine();
     return _builder.toString();
   }
   
+  public String scheduleAllJobs(final SignalWatcher watcher) {
+    int index = 1;
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("log.info(\"Starting scheduling all jobs ...\");");
+    _builder.newLine();
+    _builder.append("Trigger trigger; JobDetail job; Date ft; String expr; int hour; int min; int dOw; int dOm; String key;String keyOne;String keyTwo;");
+    _builder.newLine();
+    String result = _builder.toString();
+    EList<SignalHandler> _handlers = watcher.getHandlers();
+    for (final SignalHandler handler : _handlers) {
+      TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+      if ((_triggerpolicy instanceof SignalScheduler)) {
+        TriggerPolicy _triggerpolicy_1 = handler.getTriggerpolicy();
+        SignalScheduler signal = ((SignalScheduler) _triggerpolicy_1);
+        Scheduler _scheduler = signal.getScheduler();
+        if ((_scheduler instanceof CronScheduler)) {
+          Scheduler _scheduler_1 = signal.getScheduler();
+          CronScheduler scheduler = ((CronScheduler) _scheduler_1);
+          if ((((scheduler != null) && (scheduler.getExpression() != null)) && (!scheduler.getExpression().isEmpty()))) {
+            StringConcatenation _builder_1 = new StringConcatenation();
+            _builder_1.append("job = createDataTransferJob(\"");
+            QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+            _builder_1.append(_fullyQualifiedName);
+            _builder_1.append("job");
+            _builder_1.append(index);
+            _builder_1.append("\", \"jobs\", \"-\", ");
+            boolean _equals = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+            _builder_1.append(_equals);
+            _builder_1.append(", \"");
+            String _name = handler.getName();
+            _builder_1.append(_name);
+            _builder_1.append("\");");
+            _builder_1.newLineIfNotEmpty();
+            _builder_1.append("key = watcherid + \".handler.");
+            String _name_1 = handler.getName();
+            _builder_1.append(_name_1);
+            _builder_1.append("\" + OSBPSignalConstants.CRON_SCHEDULER;");
+            _builder_1.newLineIfNotEmpty();
+            _builder_1.append("expr = getCronExpressionValue(getHandlerPropertyFromConfigurationFile(key));");
+            _builder_1.newLine();
+            _builder_1.append("trigger = createCronTrigger(\"");
+            QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+            _builder_1.append(_fullyQualifiedName_1);
+            _builder_1.append("trigger");
+            _builder_1.append(index);
+            _builder_1.append("\", \"triggers\", expr != null ? expr : getWatcherConfig(key));");
+            _builder_1.newLineIfNotEmpty();
+            _builder_1.append("ft = scheduleJob(job, trigger);");
+            _builder_1.newLine();
+            _builder_1.append("log.info(\"Job");
+            _builder_1.append(index);
+            _builder_1.append(" has been scheduled to run at: \" + ft);");
+            _builder_1.newLineIfNotEmpty();
+            result = result.concat(_builder_1.toString());
+          }
+        } else {
+          Scheduler _scheduler_2 = signal.getScheduler();
+          if ((_scheduler_2 instanceof HourlyScheduler)) {
+            Scheduler _scheduler_3 = signal.getScheduler();
+            HourlyScheduler scheduler_1 = ((HourlyScheduler) _scheduler_3);
+            if (((scheduler_1 != null) && (scheduler_1.getMinute() > (-1)))) {
+              StringConcatenation _builder_2 = new StringConcatenation();
+              _builder_2.append("job = createDataTransferJob(\"");
+              QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+              _builder_2.append(_fullyQualifiedName_2);
+              _builder_2.append("job");
+              _builder_2.append(index);
+              _builder_2.append("\", \"jobs\", \"-\", ");
+              boolean _equals_1 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+              _builder_2.append(_equals_1);
+              _builder_2.append(", \"");
+              String _name_2 = handler.getName();
+              _builder_2.append(_name_2);
+              _builder_2.append("\");");
+              _builder_2.newLineIfNotEmpty();
+              _builder_2.append("key = watcherid + \".handler.");
+              String _name_3 = handler.getName();
+              _builder_2.append(_name_3);
+              _builder_2.append("\" + OSBPSignalConstants.HOURLY_SCHEDULER;");
+              _builder_2.newLineIfNotEmpty();
+              _builder_2.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(key));");
+              _builder_2.newLine();
+              _builder_2.append("trigger = createHourlyTrigger(\"");
+              QualifiedName _fullyQualifiedName_3 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+              _builder_2.append(_fullyQualifiedName_3);
+              _builder_2.append("trigger");
+              _builder_2.append(index);
+              _builder_2.append("\", \"triggers\", min>0? min : getMinutesValue(getWatcherConfig(key)));");
+              _builder_2.newLineIfNotEmpty();
+              _builder_2.append("ft = scheduleJob(job, trigger);");
+              _builder_2.newLine();
+              _builder_2.append("log.info(\"Job");
+              _builder_2.append(index);
+              _builder_2.append(" has been scheduled to run at: \" + ft);");
+              _builder_2.newLineIfNotEmpty();
+              result = result.concat(_builder_2.toString());
+            }
+          } else {
+            Scheduler _scheduler_4 = signal.getScheduler();
+            if ((_scheduler_4 instanceof DailyScheduler)) {
+              Scheduler _scheduler_5 = signal.getScheduler();
+              DailyScheduler scheduler_2 = ((DailyScheduler) _scheduler_5);
+              if ((((scheduler_2 != null) && (scheduler_2.getHour() > (-1))) && (scheduler_2.getMinute() > (-1)))) {
+                StringConcatenation _builder_3 = new StringConcatenation();
+                _builder_3.append("job = createDataTransferJob(\"");
+                QualifiedName _fullyQualifiedName_4 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+                _builder_3.append(_fullyQualifiedName_4);
+                _builder_3.append("job");
+                _builder_3.append(index);
+                _builder_3.append("\", \"jobs\", \"-\", ");
+                boolean _equals_2 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+                _builder_3.append(_equals_2);
+                _builder_3.append(", \"");
+                String _name_4 = handler.getName();
+                _builder_3.append(_name_4);
+                _builder_3.append("\");");
+                _builder_3.newLineIfNotEmpty();
+                _builder_3.append("key = watcherid + \".handler.");
+                String _name_5 = handler.getName();
+                _builder_3.append(_name_5);
+                _builder_3.append("\" + OSBPSignalConstants.DAILY_SCHEDULER_HOUR;");
+                _builder_3.newLineIfNotEmpty();
+                _builder_3.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(key));");
+                _builder_3.newLine();
+                _builder_3.append("keyOne = watcherid + \".handler.");
+                String _name_6 = handler.getName();
+                _builder_3.append(_name_6);
+                _builder_3.append("\" + OSBPSignalConstants.DAILY_SCHEDULER_MIN;");
+                _builder_3.newLineIfNotEmpty();
+                _builder_3.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyOne));");
+                _builder_3.newLine();
+                _builder_3.append("trigger = createDailyTriggerAtHourandMins(\"");
+                QualifiedName _fullyQualifiedName_5 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+                _builder_3.append(_fullyQualifiedName_5);
+                _builder_3.append("trigger");
+                _builder_3.append(index);
+                _builder_3.append("\", \"triggers\", hour>0 ? hour : getHourValue(getWatcherConfig(key)),");
+                _builder_3.newLineIfNotEmpty();
+                _builder_3.append(" ");
+                _builder_3.append("min>0 ? min : getMinutesValue(getWatcherConfig(keyOne)));");
+                _builder_3.newLine();
+                _builder_3.append("ft = scheduleJob(job, trigger);");
+                _builder_3.newLine();
+                _builder_3.append("log.info(\"Job");
+                _builder_3.append(index);
+                _builder_3.append(" has been scheduled to run at: \" + ft);");
+                _builder_3.newLineIfNotEmpty();
+                result = result.concat(_builder_3.toString());
+              }
+            } else {
+              Scheduler _scheduler_6 = signal.getScheduler();
+              if ((_scheduler_6 instanceof WeeklyScheduler)) {
+                Scheduler _scheduler_7 = signal.getScheduler();
+                WeeklyScheduler scheduler_3 = ((WeeklyScheduler) _scheduler_7);
+                if (((((scheduler_3 != null) && (scheduler_3.getDayofweek() != null)) && (scheduler_3.getHour() > (-1))) && 
+                  (scheduler_3.getMinute() > (-1)))) {
+                  StringConcatenation _builder_4 = new StringConcatenation();
+                  _builder_4.append("job = createDataTransferJob(\"");
+                  QualifiedName _fullyQualifiedName_6 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+                  _builder_4.append(_fullyQualifiedName_6);
+                  _builder_4.append("job");
+                  _builder_4.append(index);
+                  _builder_4.append("\", \"jobs\", \"-\", ");
+                  boolean _equals_3 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+                  _builder_4.append(_equals_3);
+                  _builder_4.append(", \"");
+                  String _name_7 = handler.getName();
+                  _builder_4.append(_name_7);
+                  _builder_4.append("\");");
+                  _builder_4.newLineIfNotEmpty();
+                  _builder_4.append("key = watcherid + \".handler.");
+                  String _name_8 = handler.getName();
+                  _builder_4.append(_name_8);
+                  _builder_4.append("\" + OSBPSignalConstants.WEEKLY_SCHEDULER_DAYOFWEEK;");
+                  _builder_4.newLineIfNotEmpty();
+                  _builder_4.append("dOw = getDayOfWeekValue(getHandlerPropertyFromConfigurationFile(key));");
+                  _builder_4.newLine();
+                  _builder_4.append("keyOne = watcherid + \".handler.");
+                  String _name_9 = handler.getName();
+                  _builder_4.append(_name_9);
+                  _builder_4.append("\" + OSBPSignalConstants.WEEKLY_SCHEDULER_HOUR;");
+                  _builder_4.newLineIfNotEmpty();
+                  _builder_4.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
+                  _builder_4.newLine();
+                  _builder_4.append("keyTwo = watcherid + \".handler.");
+                  String _name_10 = handler.getName();
+                  _builder_4.append(_name_10);
+                  _builder_4.append("\" + OSBPSignalConstants.WEEKLY_SCHEDULER_MIN;");
+                  _builder_4.newLineIfNotEmpty();
+                  _builder_4.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
+                  _builder_4.newLine();
+                  _builder_4.append("trigger = createWeeklyTriggerOnDayAndHourAndMinute(\"");
+                  QualifiedName _fullyQualifiedName_7 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+                  _builder_4.append(_fullyQualifiedName_7);
+                  _builder_4.append("trigger");
+                  _builder_4.append(index);
+                  _builder_4.append("\", \"triggers\", dOw>0? dOw : getDayOfWeekValue(getWatcherConfig(key)), ");
+                  _builder_4.newLineIfNotEmpty();
+                  _builder_4.append("hour>0 ? hour : getHourValue(getWatcherConfig(keyOne)), min>0 ? min : getMinutesValue(getWatcherConfig(keyTwo)));");
+                  _builder_4.newLine();
+                  _builder_4.append("ft = scheduleJob(job, trigger);");
+                  _builder_4.newLine();
+                  _builder_4.append("log.info(\"Job");
+                  _builder_4.append(index);
+                  _builder_4.append(" has been scheduled to run at: \" + ft);");
+                  _builder_4.newLineIfNotEmpty();
+                  result = result.concat(_builder_4.toString());
+                }
+              } else {
+                Scheduler _scheduler_8 = signal.getScheduler();
+                if ((_scheduler_8 instanceof MonthlyScheduler)) {
+                  Scheduler _scheduler_9 = signal.getScheduler();
+                  MonthlyScheduler scheduler_4 = ((MonthlyScheduler) _scheduler_9);
+                  if (((((scheduler_4 != null) && (scheduler_4.getDayofmonth() > (-1))) && (scheduler_4.getHour() > (-1))) && (scheduler_4.getMinute() > (-1)))) {
+                    StringConcatenation _builder_5 = new StringConcatenation();
+                    _builder_5.append("job = createDataTransferJob(\"");
+                    QualifiedName _fullyQualifiedName_8 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+                    _builder_5.append(_fullyQualifiedName_8);
+                    _builder_5.append("job");
+                    _builder_5.append(index);
+                    _builder_5.append("\", \"jobs\", \"-\", ");
+                    boolean _equals_4 = handler.getExecutiontype().equals(SignalExecutionTypeEnum.SEQ);
+                    _builder_5.append(_equals_4);
+                    _builder_5.append(", \"");
+                    String _name_11 = handler.getName();
+                    _builder_5.append(_name_11);
+                    _builder_5.append("\");");
+                    _builder_5.newLineIfNotEmpty();
+                    _builder_5.append("key = watcherid + \".handler.");
+                    String _name_12 = handler.getName();
+                    _builder_5.append(_name_12);
+                    _builder_5.append("\" + OSBPSignalConstants.MONTHLY_SCHEDULER_DAYOFMONTH;");
+                    _builder_5.newLineIfNotEmpty();
+                    _builder_5.append("dOm = getDayOfMonthValue(getHandlerPropertyFromConfigurationFile(key));");
+                    _builder_5.newLine();
+                    _builder_5.append("keyOne = watcherid + \".handler.");
+                    String _name_13 = handler.getName();
+                    _builder_5.append(_name_13);
+                    _builder_5.append("\" + OSBPSignalConstants.MONTHLY_SCHEDULER_HOUR;");
+                    _builder_5.newLineIfNotEmpty();
+                    _builder_5.append("hour = getHourValue(getHandlerPropertyFromConfigurationFile(keyOne));");
+                    _builder_5.newLine();
+                    _builder_5.append("keyTwo = watcherid + \".handler.");
+                    String _name_14 = handler.getName();
+                    _builder_5.append(_name_14);
+                    _builder_5.append("\" + OSBPSignalConstants.MONTHLY_SCHEDULER_MIN;");
+                    _builder_5.newLineIfNotEmpty();
+                    _builder_5.append("min = getMinutesValue(getHandlerPropertyFromConfigurationFile(keyTwo));");
+                    _builder_5.newLine();
+                    _builder_5.append("trigger = createMonthlyTriggerOnDayAndHourAndMinute(\"");
+                    QualifiedName _fullyQualifiedName_9 = this._iQualifiedNameProvider.getFullyQualifiedName(watcher);
+                    _builder_5.append(_fullyQualifiedName_9);
+                    _builder_5.append("trigger");
+                    _builder_5.append(index);
+                    _builder_5.append("\", \"triggers\", dOm>0? dOm : getDayOfMonthValue(getWatcherConfig(key)),");
+                    _builder_5.newLineIfNotEmpty();
+                    _builder_5.append(" ");
+                    _builder_5.append("hour>0 ? hour : getHourValue(getWatcherConfig(keyOne)), min>0 ? min : getMinutesValue(getWatcherConfig(keyTwo)));");
+                    _builder_5.newLine();
+                    _builder_5.append("ft = scheduleJob(job, trigger);");
+                    _builder_5.newLine();
+                    _builder_5.append("log.info(\"Job");
+                    _builder_5.append(index);
+                    _builder_5.append(" has been scheduled to run at: \" + ft);");
+                    _builder_5.newLineIfNotEmpty();
+                    result = result.concat(_builder_5.toString());
+                  }
+                }
+              }
+            }
+          }
+        }
+        index++;
+      } else {
+      }
+    }
+    StringConcatenation _builder_6 = new StringConcatenation();
+    _builder_6.append("log.info(\"Scheduling all jobs done ...\");");
+    _builder_6.newLine();
+    result = result.concat(_builder_6.toString());
+    return result;
+  }
+  
+  public boolean hasSchedulers(final SignalWatcher watcher) {
+    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
+      EList<SignalHandler> _handlers = watcher.getHandlers();
+      for (final SignalHandler handler : _handlers) {
+        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+        if ((_triggerpolicy instanceof SignalScheduler)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  public int getSchedulerCount(final SignalWatcher watcher) {
+    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
+      int count = 0;
+      EList<SignalHandler> _handlers = watcher.getHandlers();
+      for (final SignalHandler handler : _handlers) {
+        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+        if ((_triggerpolicy instanceof SignalScheduler)) {
+          count++;
+        }
+      }
+      return count;
+    }
+    return (-1);
+  }
+  
+  public boolean hasHandlers(final SignalWatcher watcher) {
+    if ((((watcher != null) && (watcher.getHandlers() != null)) && (!watcher.getHandlers().isEmpty()))) {
+      EList<SignalHandler> _handlers = watcher.getHandlers();
+      for (final SignalHandler handler : _handlers) {
+        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+        if ((_triggerpolicy instanceof TriggerFile)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
   public void infer(final EObject signalPackage, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
     if (signalPackage instanceof SignalPackage) {
       _infer((SignalPackage)signalPackage, acceptor, isPreIndexingPhase);
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java
index 62b52a1..2b8c3fb 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/jvmmodel/SignalModelGenerator.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -14,31 +16,43 @@
  */
 package org.eclipse.osbp.xtext.signal.jvmmodel;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
 import java.nio.file.FileSystems;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.WatchEvent;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Properties;
 import java.util.concurrent.Executors;
 import javax.inject.Inject;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.osbp.core.api.persistence.IPersistenceService;
 import org.eclipse.osbp.datainterchange.api.IDataInterchange;
+import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
 import org.eclipse.osbp.xtext.datainterchange.common.WorkerThreadRunnable;
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalCommonData;
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants;
 import org.eclipse.osbp.xtext.signal.common.OSBPSignalWatcher;
 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.output.TreeAppendable;
 import org.eclipse.xtext.xbase.lib.Extension;
+import org.quartz.JobDetail;
+import org.quartz.SchedulerException;
+import org.quartz.Trigger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,24 +69,37 @@
     TreeAppendable _xblockexpression = null;
     {
       this.setBuilder(context.eResource());
-      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, 
-        SignalTypeEnum.class, 
-        SignalHandlerTypeEnum.class, 
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, 
+        this._typeReferenceBuilder, 
         OSBPSignalWatcher.class, 
+        OSBPSignalConstants.class, 
         Paths.class, 
         WorkerThreadRunnable.class, 
         IPersistenceService.class, 
         IDataInterchange.class, 
+        Files.class, 
+        OSBPSignalCommonData.class, 
         FileSystems.class, 
         Logger.class, 
         LoggerFactory.class, 
         HashMap.class, 
-        Arrays.class, 
         WatchEvent.class, 
         Path.class, 
+        URL.class, 
         Executors.class, 
         Map.class, 
-        ArrayList.class);
+        ArrayList.class, 
+        ProductConfiguration.class, 
+        File.class, 
+        FileInputStream.class, 
+        Properties.class, 
+        StringWriter.class, 
+        PrintWriter.class, 
+        SchedulerException.class, 
+        IOException.class, 
+        Date.class, 
+        JobDetail.class, 
+        Trigger.class);
       _xblockexpression = super.createAppendable(context, importManager, config);
     }
     return _xblockexpression;
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java
index cf0f5df..5a894bc 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/scoping/SignalDSLScopeProvider.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
diff --git a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java
index bb8ff73..9eadc69 100644
--- a/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java
+++ b/org.eclipse.osbp.xtext.signal/xtend-gen/org/eclipse/osbp/xtext/signal/validation/SignalDSLValidator.java
@@ -2,9 +2,11 @@
  * Copyright (c) 2011, 2018 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  * 
  *  All rights reserved. This program and the accompanying materials
- *  are made available under the terms of the Eclipse Public License v1.0
+ *  are made available under the terms of the Eclipse Public License 2.0 
  *  which accompanies this distribution, and is available at
- *  http://www.eclipse.org/legal/epl-v10.html
+ *  https://www.eclipse.org/legal/epl-2.0/
+ *
+ *  SPDX-License-Identifier: EPL-2.0
  * 
  *  Contributors:
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
@@ -13,17 +15,38 @@
  */
 package org.eclipse.osbp.xtext.signal.validation;
 
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.text.ParseException;
 import java.util.HashSet;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.utils.common.SystemInformation;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFile;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileCSV;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileEDI;
+import org.eclipse.osbp.xtext.datainterchange.DataInterchangeFileXML;
+import org.eclipse.osbp.xtext.signal.CronScheduler;
+import org.eclipse.osbp.xtext.signal.DailyScheduler;
+import org.eclipse.osbp.xtext.signal.HourlyScheduler;
+import org.eclipse.osbp.xtext.signal.MonthlyScheduler;
+import org.eclipse.osbp.xtext.signal.Scheduler;
 import org.eclipse.osbp.xtext.signal.SignalDSLPackage;
+import org.eclipse.osbp.xtext.signal.SignalDatainterchange;
 import org.eclipse.osbp.xtext.signal.SignalHandler;
-import org.eclipse.osbp.xtext.signal.SignalHandlerTypeEnum;
 import org.eclipse.osbp.xtext.signal.SignalPackage;
-import org.eclipse.osbp.xtext.signal.SignalTypeEnum;
+import org.eclipse.osbp.xtext.signal.SignalScheduler;
 import org.eclipse.osbp.xtext.signal.SignalWatcher;
+import org.eclipse.osbp.xtext.signal.TriggerFile;
+import org.eclipse.osbp.xtext.signal.TriggerPolicy;
+import org.eclipse.osbp.xtext.signal.WeeklyScheduler;
+import org.eclipse.osbp.xtext.signal.common.OSBPSignalConstants;
 import org.eclipse.osbp.xtext.signal.validation.AbstractSignalDSLValidator;
 import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.xbase.lib.Exceptions;
+import org.quartz.CronExpression;
 
 /**
  * This class contains custom validation rules.
@@ -33,54 +56,6 @@
 @SuppressWarnings("all")
 public class SignalDSLValidator extends AbstractSignalDSLValidator {
   @Check
-  public void checkSignalHandling(final SignalWatcher watcher) {
-    EList<SignalHandler> _handlers = watcher.getHandlers();
-    for (final SignalHandler handler : _handlers) {
-      if ((handler != null)) {
-        if (((watcher != null) && (handler.getActionType() != null))) {
-          this.checkHandlerActionType(handler);
-          SignalTypeEnum signal = watcher.getSignal();
-          if (((signal != null) && signal.equals(SignalTypeEnum.CREATESIGNALS))) {
-            boolean _equals = SignalHandlerTypeEnum.DOAFTERCREATE.equals(handler.getActionType());
-            boolean _not = (!_equals);
-            if (_not) {
-              this.error("Only the handler type doAfterCreate is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE);
-            }
-          } else {
-            if (((signal != null) && signal.equals(SignalTypeEnum.MODIFYSIGNALS))) {
-              boolean _equals_1 = SignalHandlerTypeEnum.DOAFTERMODIFY.equals(handler.getActionType());
-              boolean _not_1 = (!_equals_1);
-              if (_not_1) {
-                this.error("Only the handler type doAföterModify is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE);
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-  
-  public void checkHandlerActionType(final SignalHandler handler) {
-    EObject _eContainer = handler.eContainer();
-    SignalTypeEnum signal = ((SignalWatcher) _eContainer).getSignal();
-    if (((signal != null) && signal.equals(SignalTypeEnum.CREATESIGNALS))) {
-      boolean _equals = SignalHandlerTypeEnum.DOAFTERCREATE.equals(handler.getActionType());
-      boolean _not = (!_equals);
-      if (_not) {
-        this.error("Only the handler type doAfterCreate is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE);
-      }
-    } else {
-      if (((signal != null) && signal.equals(SignalTypeEnum.MODIFYSIGNALS))) {
-        boolean _equals_1 = SignalHandlerTypeEnum.DOAFTERMODIFY.equals(handler.getActionType());
-        boolean _not_1 = (!_equals_1);
-        if (_not_1) {
-          this.error("Only the handler type doAfterModify is allowed here.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__ACTION_TYPE);
-        }
-      }
-    }
-  }
-  
-  @Check
   public void checkDuplicateWatcherNames(final SignalPackage pkg) {
     HashSet<String> watchers = new HashSet<String>();
     EList<SignalWatcher> _watchers = pkg.getWatchers();
@@ -90,7 +65,10 @@
       if (_not) {
         watchers.add(watcher.getName());
       } else {
-        this.error("The watcher id has to be unique.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__NAME);
+        String _name = watcher.getName();
+        String _plus = ("The watcher id has to be unique and [" + _name);
+        String _plus_1 = (_plus + "] is already in use. Please change it.");
+        this.error(_plus_1, watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__NAME);
       }
     }
   }
@@ -111,6 +89,85 @@
   }
   
   @Check
+  public boolean checkFileNameValidity(final SignalHandler handler) {
+    EList<SignalDatainterchange> _interchanges = handler.getInterchanges();
+    for (final SignalDatainterchange interchange : _interchanges) {
+      if ((((interchange.getDataRef() != null) && (interchange.getFileName() != null)) && 
+        (interchange.getFileName().length() > OSBPSignalConstants.FILE_EXTENSION_MIN_SIZE))) {
+        boolean _isExtensionValid = this.isExtensionValid(interchange.getFileName());
+        boolean _not = (!_isExtensionValid);
+        if (_not) {
+          this.error(
+            "The filename extension you have entered is not currently supported. Only file with either following extension are allowed: .csv .edi or .xml", interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME);
+        }
+        String allowed_extension = this.getValidExtensionToInterchange(interchange.getDataRef().getFileEndpoint());
+        if (((allowed_extension != null) && 
+          (!this.isExtensionAllowedToInterchange(interchange.getFileName(), allowed_extension)))) {
+          String _name = interchange.getDataRef().getName();
+          String _plus = ("The filename extension you have entered is not valid with [" + _name);
+          String _plus_1 = (_plus + 
+            "] definition. Only filename with ");
+          String _plus_2 = (_plus_1 + allowed_extension);
+          String _plus_3 = (_plus_2 + " as extension are allowed!");
+          this.error(_plus_3, interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME);
+        }
+        String _fileName = interchange.getFileName();
+        int _length = interchange.getFileName().length();
+        int _minus = (_length - OSBPSignalConstants.FILE_EXTENSION_MIN_SIZE);
+        final String filename = _fileName.substring(0, _minus);
+        boolean _isFileNameWithoutExtensionValid = this.isFileNameWithoutExtensionValid(filename);
+        boolean _not_1 = (!_isFileNameWithoutExtensionValid);
+        if (_not_1) {
+          this.error(
+            "The filename contains one or more of the following non-allowed characters / \\ : * ? > < \" \' | please change it.", interchange, SignalDSLPackage.Literals.SIGNAL_DATAINTERCHANGE__FILE_NAME);
+        }
+      }
+    }
+    return false;
+  }
+  
+  public boolean isExtensionValid(final String filename) {
+    return (((((filename.endsWith(OSBPSignalConstants.CSV_EXTENSION) || filename.endsWith(OSBPSignalConstants.CSV_EXTENSION.toUpperCase())) || 
+      filename.endsWith(OSBPSignalConstants.EDI_EXTENSION)) || filename.endsWith(OSBPSignalConstants.EDI_EXTENSION.toUpperCase())) || 
+      filename.endsWith(OSBPSignalConstants.XML_EXTENSION)) || filename.endsWith(OSBPSignalConstants.XML_EXTENSION.toUpperCase()));
+  }
+  
+  public boolean isExtensionAllowedToInterchange(final String filename, final String allowedextension) {
+    return (filename.endsWith(allowedextension) || filename.endsWith(allowedextension.toUpperCase()));
+  }
+  
+  public String getValidExtensionToInterchange(final DataInterchangeFile file) {
+    if ((file instanceof DataInterchangeFileCSV)) {
+      return OSBPSignalConstants.CSV_EXTENSION;
+    }
+    if ((file instanceof DataInterchangeFileEDI)) {
+      return OSBPSignalConstants.EDI_EXTENSION;
+    }
+    if ((file instanceof DataInterchangeFileXML)) {
+      return OSBPSignalConstants.XML_EXTENSION;
+    }
+    return null;
+  }
+  
+  public boolean isFileNameWithoutExtensionValid(final String filename) {
+    boolean _isWindowsOS = SystemInformation.isWindowsOS();
+    if (_isWindowsOS) {
+      return ((((!filename.contains("/")) && (!filename.contains("\\"))) && (!filename.contains(":"))) && ((((((!filename.contains("*")) && (!filename.contains("?"))) && (!filename.contains(">"))) && (!filename.contains("<"))) && (!filename.contains("\""))) && (!filename.contains("|"))));
+    } else {
+      boolean _isMacOS = SystemInformation.isMacOS();
+      if (_isMacOS) {
+        return ((((!filename.contains("/")) && (!filename.contains("\\"))) && (!filename.contains("-"))) && ((((((((!filename.contains("*")) && (!filename.contains("?"))) && (!filename.contains("["))) && (!filename.contains("]"))) && (!filename.contains("\""))) && (!filename.contains("\'"))) && (!filename.contains("{"))) && (!filename.contains("}"))));
+      } else {
+        boolean _isUnixOS = SystemInformation.isUnixOS();
+        if (_isUnixOS) {
+          return ((((!filename.contains("/")) && (!filename.contains("\\"))) && (!filename.contains(":"))) && ((((((!filename.contains("*")) && (!filename.contains("?"))) && (!filename.contains(">"))) && (!filename.contains("<"))) && (!filename.contains("\""))) && (!filename.contains("|"))));
+        }
+      }
+    }
+    return true;
+  }
+  
+  @Check
   public void checkDuplicateDirectoryNames(final SignalPackage pkg) {
     HashSet<String> watcherdir = new HashSet<String>();
     EList<SignalWatcher> _watchers = pkg.getWatchers();
@@ -122,31 +179,188 @@
       } else {
         String _directory = watcher.getDirectory();
         String _plus = ("The watcher directory \'" + _directory);
-        String _plus_1 = (_plus + "\' is already in use. Please choose another directory.");
-        this.error(_plus_1, watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY);
+        String _plus_1 = (_plus + 
+          "\' is already in use. Please choose another directory.");
+        this.error(_plus_1, watcher, 
+          SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY);
       }
     }
   }
   
+  @Check
   public boolean checkDuplicateFileMasks(final SignalWatcher watcher) {
     HashSet<String> filemasks = new HashSet<String>();
     EList<SignalHandler> _handlers = watcher.getHandlers();
     for (final SignalHandler handler : _handlers) {
-      String _name = handler.getName();
-      String _plus = (_name + ".");
-      String _filemask = handler.getFilemask();
-      String _plus_1 = (_plus + _filemask);
-      boolean _contains = filemasks.contains(_plus_1);
-      boolean _not = (!_contains);
-      if (_not) {
-        String _name_1 = handler.getName();
-        String _plus_2 = (_name_1 + ".");
-        String _filemask_1 = handler.getFilemask();
-        String _plus_3 = (_plus_2 + _filemask_1);
-        filemasks.add(_plus_3);
+      if (((handler.getTriggerpolicy() != null) && (handler.getTriggerpolicy() instanceof TriggerFile))) {
+        TriggerPolicy _triggerpolicy = handler.getTriggerpolicy();
+        TriggerFile temp = ((TriggerFile) _triggerpolicy);
+        boolean _contains = filemasks.contains(temp.getFilemask());
+        boolean _not = (!_contains);
+        if (_not) {
+          filemasks.add(temp.getFilemask());
+        } else {
+          this.error(
+            "This file mask is already in use, please change it.", temp, SignalDSLPackage.Literals.TRIGGER_FILE__FILEMASK);
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+  
+  @Check
+  public void checkSignalSchedulerValidity(final SignalScheduler signal) {
+    if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof CronScheduler))) {
+      Scheduler _scheduler = signal.getScheduler();
+      this.checkCronExpressionValidity(((CronScheduler) _scheduler));
+    } else {
+      if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof HourlyScheduler))) {
+        Scheduler _scheduler_1 = signal.getScheduler();
+        this.checkHourlySchedulerValidity(((HourlyScheduler) _scheduler_1));
       } else {
-        this.error("The handler file mask can\'t be the same as another one, inside a watcher on the same directory.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__FILEMASK);
-        return true;
+        if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof DailyScheduler))) {
+          Scheduler _scheduler_2 = signal.getScheduler();
+          this.checkDailySchedulerValidity(((DailyScheduler) _scheduler_2));
+        } else {
+          if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof WeeklyScheduler))) {
+            Scheduler _scheduler_3 = signal.getScheduler();
+            this.checkWeeklySchedulerValidity(((WeeklyScheduler) _scheduler_3));
+          } else {
+            if (((signal.getScheduler() != null) && (signal.getScheduler() instanceof MonthlyScheduler))) {
+              Scheduler _scheduler_4 = signal.getScheduler();
+              this.checkMonthlySchedulerValidity(((MonthlyScheduler) _scheduler_4));
+            }
+          }
+        }
+      }
+    }
+  }
+  
+  public void checkCronExpressionValidity(final CronScheduler scheduler) {
+    String expression = scheduler.getExpression();
+    try {
+      boolean _isValidExpression = CronExpression.isValidExpression(expression);
+      boolean _not = (!_isValidExpression);
+      if (_not) {
+        CronExpression.validateExpression(expression);
+      }
+    } catch (final Throwable _t) {
+      if (_t instanceof ParseException) {
+        final ParseException exception = (ParseException)_t;
+        this.error((("The cron expression you have entered is invalid.\n\n" + exception) + 
+          OSBPSignalConstants.CRONEXP_NOTICE), scheduler, SignalDSLPackage.Literals.CRON_SCHEDULER__EXPRESSION);
+      } else {
+        throw Exceptions.sneakyThrow(_t);
+      }
+    }
+  }
+  
+  public void checkHourlySchedulerValidity(final HourlyScheduler scheduler) {
+    boolean _not = (!((scheduler.getMinute() >= 0) && (scheduler.getMinute() <= 59)));
+    if (_not) {
+      this.error("The minute entry has to be between 0 and 59.", scheduler, 
+        SignalDSLPackage.Literals.HOURLY_SCHEDULER__MINUTE);
+    }
+  }
+  
+  public void checkDailySchedulerValidity(final DailyScheduler scheduler) {
+    boolean _not = (!((scheduler.getHour() >= 0) && (scheduler.getHour() <= 23)));
+    if (_not) {
+      this.error("The hour entry has to be between 0 and 23.", scheduler, 
+        SignalDSLPackage.Literals.DAILY_SCHEDULER__HOUR);
+    }
+    boolean _not_1 = (!((scheduler.getMinute() >= 0) && (scheduler.getMinute() <= 59)));
+    if (_not_1) {
+      this.error("The minute entry has to be between 0 and 59.", scheduler, 
+        SignalDSLPackage.Literals.DAILY_SCHEDULER__MINUTE);
+    }
+  }
+  
+  public void checkWeeklySchedulerValidity(final WeeklyScheduler scheduler) {
+    boolean _not = (!((scheduler.getHour() >= 0) && (scheduler.getHour() <= 23)));
+    if (_not) {
+      this.error("The hour entry has to be between 0 and 23.", scheduler, 
+        SignalDSLPackage.Literals.WEEKLY_SCHEDULER__HOUR);
+    }
+    boolean _not_1 = (!((scheduler.getMinute() >= 0) && (scheduler.getMinute() <= 59)));
+    if (_not_1) {
+      this.error("The minute entry has to be between 0 and 59.", scheduler, 
+        SignalDSLPackage.Literals.WEEKLY_SCHEDULER__MINUTE);
+    }
+  }
+  
+  public void checkMonthlySchedulerValidity(final MonthlyScheduler scheduler) {
+    boolean _not = (!((scheduler.getDayofmonth() >= 1) && (scheduler.getDayofmonth() <= 31)));
+    if (_not) {
+      this.error("The hour entry has to be between 1 and 31.", scheduler, 
+        SignalDSLPackage.Literals.MONTHLY_SCHEDULER__DAYOFMONTH);
+    }
+    boolean _not_1 = (!((scheduler.getHour() >= 0) && (scheduler.getHour() <= 23)));
+    if (_not_1) {
+      this.error("The hour entry has to be between 0 and 23.", scheduler, 
+        SignalDSLPackage.Literals.MONTHLY_SCHEDULER__HOUR);
+    }
+    boolean _not_2 = (!((scheduler.getMinute() >= 0) && (scheduler.getMinute() <= 59)));
+    if (_not_2) {
+      this.error("The minute entry has to be between 0 and 59.", scheduler, 
+        SignalDSLPackage.Literals.MONTHLY_SCHEDULER__MINUTE);
+    }
+  }
+  
+  @Check
+  public void checkURLValidity(final SignalHandler handler) {
+    EObject _eContainer = handler.eContainer();
+    if ((_eContainer instanceof SignalWatcher)) {
+      EObject _eContainer_1 = handler.eContainer();
+      URL url = this.getDirectoryURL(((SignalWatcher) _eContainer_1).getDirectory());
+      if ((((url != null) && (!url.getProtocol().equals("file"))) && (handler.getTriggerpolicy() instanceof TriggerFile))) {
+        this.error("Only scheduler based handlers are allowed, since the watcher directory is not a file url.", handler, SignalDSLPackage.Literals.SIGNAL_HANDLER__TRIGGERPOLICY);
+      }
+    }
+  }
+  
+  public URL getDirectoryURL(final String directory) {
+    try {
+      return new URL(directory);
+    } catch (final Throwable _t) {
+      if (_t instanceof MalformedURLException) {
+        final MalformedURLException e1 = (MalformedURLException)_t;
+        if ((e1.getMessage().startsWith("unknown protocol") || e1.getMessage().startsWith("no protocol"))) {
+          try {
+            return Paths.get(directory).toUri().toURL();
+          } catch (final Throwable _t_1) {
+            if (_t_1 instanceof MalformedURLException) {
+              final MalformedURLException e2 = (MalformedURLException)_t_1;
+              return null;
+            } else {
+              throw Exceptions.sneakyThrow(_t_1);
+            }
+          }
+        }
+      } else {
+        throw Exceptions.sneakyThrow(_t);
+      }
+    }
+    return null;
+  }
+  
+  @Check
+  public void checkDirectoryValidity(final SignalWatcher watcher) {
+    URL url = this.getDirectoryURL(watcher.getDirectory());
+    if ((((url != null) && url.getProtocol().equals("file")) && (!this.existsDirectory(watcher.getDirectory())))) {
+      this.error("This directory doesn\'t exist. Please correct the path you have entered.", watcher, SignalDSLPackage.Literals.SIGNAL_WATCHER__DIRECTORY);
+    }
+  }
+  
+  public boolean existsDirectory(final String path) {
+    try {
+      return Files.isDirectory(Paths.get(path));
+    } catch (final Throwable _t) {
+      if (_t instanceof Exception) {
+        final Exception e = (Exception)_t;
+      } else {
+        throw Exceptions.sneakyThrow(_t);
       }
     }
     return false;
diff --git a/pom.xml b/pom.xml
index 5af19a4..77f5ad7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,9 +3,11 @@
 #=======================================================================
 # Copyright (c) 2017 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany).
 # All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
+# are made available under the terms of the Eclipse Public License 2.0 
 # which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
 # 
 # Contributors:
 # Loetz GmbH&Co.KG - initial API and implementation