From fe2cbde18bb3e6d524dc828a09fb98caa63422db Mon Sep 17 00:00:00 2001
From: Sophie Coudert <sophie.coudert@telecom-paris.fr>
Date: Mon, 15 Jul 2024 15:38:46 +0200
Subject: [PATCH] rereading and commenting completed

---
 .../tosysmlv2/AvatarFromSysMLLexer.java       |    4 +-
 .../tosysmlv2/AvatarFromSysMLParser.java      | 1971 +++++++++--------
 .../tosysmlv2/javacup/AvatarFromSysML.jcup    |  468 ++--
 .../static/AvatarCommunication.sysml          |    2 +-
 .../tosysmlv2/static/AvatarGeneral.sysml      |    6 +-
 5 files changed, 1337 insertions(+), 1114 deletions(-)

diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
index d289740f13..4d4a7e71f2 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 11/07/2024 17:00 */
+/* The following code was generated by JFlex 1.4.3 on 15/07/2024 15:37 */
 
 /* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
  *
@@ -47,7 +47,7 @@ import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 /**
  * This class is a scanner generated by 
  * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 11/07/2024 17:00 from the specification file
+ * on 15/07/2024 15:37 from the specification file
  * <code>__AvatarFromSysMLLexer__.jflex</code>
  */
 public class AvatarFromSysMLLexer implements java_cup.runtime.Scanner {
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
index 989e5d1108..c1c48a4823 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
@@ -38,7 +38,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
   /** Production table. */
   protected static final short _production_table[][] = 
     unpackFromStrings(new String[] {
-    "\000\u0142\000\002\004\007\000\002\002\004\000\002\004" +
+    "\000\u0143\000\002\004\007\000\002\002\004\000\002\004" +
     "\006\000\002\005\003\000\002\005\004\000\002\006\003" +
     "\000\002\006\003\000\002\006\003\000\002\006\003\000" +
     "\002\006\003\000\002\006\003\000\002\006\003\000\002" +
@@ -94,50 +94,50 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\004\000\002\166\006\000\002\116\011\000\002\116\010" +
     "\000\002\116\004\000\002\167\006\000\002\117\011\000" +
     "\002\117\010\000\002\117\004\000\002\170\006\000\002" +
-    "\120\007\000\002\120\005\000\002\121\005\000\002\122" +
-    "\003\000\002\122\005\000\002\227\002\000\002\123\014" +
-    "\000\002\123\004\000\002\124\003\000\002\124\003\000" +
+    "\120\006\000\002\120\007\000\002\120\005\000\002\121" +
+    "\005\000\002\122\003\000\002\122\005\000\002\123\014" +
+    "\000\002\123\004\000\002\227\002\000\002\124\003\000" +
     "\002\124\003\000\002\124\003\000\002\124\003\000\002" +
-    "\124\003\000\002\125\003\000\002\125\005\000\002\147" +
-    "\004\000\002\130\005\000\002\150\004\000\002\131\005" +
-    "\000\002\151\004\000\002\132\005\000\002\152\004\000" +
-    "\002\133\005\000\002\153\004\000\002\134\005\000\002" +
-    "\154\004\000\002\126\003\000\002\126\005\000\002\127" +
-    "\003\000\002\127\003\000\002\127\003\000\002\127\003" +
+    "\124\003\000\002\124\003\000\002\125\003\000\002\125" +
+    "\005\000\002\147\004\000\002\130\005\000\002\150\004" +
+    "\000\002\131\005\000\002\151\004\000\002\132\005\000" +
+    "\002\152\004\000\002\133\005\000\002\153\004\000\002" +
+    "\134\005\000\002\154\004\000\002\126\003\000\002\126" +
+    "\005\000\002\127\003\000\002\127\003\000\002\127\003" +
     "\000\002\127\003\000\002\127\003\000\002\127\003\000" +
-    "\002\135\005\000\002\136\005\000\002\226\003\000\002" +
-    "\137\003\000\002\137\003\000\002\141\010\000\002\142" +
-    "\007\000\002\142\006\000\002\142\004\000\002\142\007" +
-    "\000\002\142\006\000\002\172\004\000\002\143\005\000" +
-    "\002\144\007\000\002\145\007\000\002\146\007\000\002" +
-    "\204\003\000\002\204\005\000\002\173\012\000\002\173" +
-    "\012\000\002\174\005\000\002\212\003\000\002\213\003" +
-    "\000\002\213\005\000\002\175\005\000\002\140\010\000" +
-    "\002\176\012\000\002\176\012\000\002\177\011\000\002" +
-    "\200\006\000\002\200\007\000\002\200\010\000\002\200" +
-    "\011\000\002\205\007\000\002\205\013\000\002\201\005" +
-    "\000\002\201\006\000\002\201\005\000\002\201\006\000" +
-    "\002\214\006\000\002\215\006\000\002\207\010\000\002" +
-    "\207\006\000\002\202\007\000\002\202\005\000\002\203" +
-    "\007\000\002\203\006\000\002\003\003\000\002\211\003" +
-    "\000\002\210\004\000\002\210\004\000\002\216\013\000" +
-    "\002\217\010\000\002\217\006\000\002\220\006\000\002" +
-    "\220\004\000\002\221\012\000\002\206\004\000\002\206" +
-    "\005\000\002\222\003\000\002\222\003\000\002\222\003" +
-    "\000\002\223\010\000\002\224\010\000\002\224\010\000" +
-    "\002\225\010\000\002\225\010\000\002\230\003\000\002" +
-    "\230\003\000\002\230\003\000\002\231\003\000\002\233" +
-    "\003\000\002\233\003\000\002\234\005\000\002\234\005" +
+    "\002\127\003\000\002\135\005\000\002\136\005\000\002" +
+    "\226\003\000\002\137\003\000\002\137\003\000\002\141" +
+    "\010\000\002\142\007\000\002\142\006\000\002\142\004" +
+    "\000\002\142\007\000\002\142\006\000\002\172\004\000" +
+    "\002\143\005\000\002\144\007\000\002\145\007\000\002" +
+    "\146\007\000\002\204\003\000\002\204\005\000\002\174" +
+    "\005\000\002\212\003\000\002\213\003\000\002\213\005" +
+    "\000\002\173\012\000\002\173\012\000\002\175\005\000" +
+    "\002\140\010\000\002\176\012\000\002\176\012\000\002" +
+    "\177\011\000\002\200\006\000\002\200\007\000\002\200" +
+    "\010\000\002\200\011\000\002\205\007\000\002\205\013" +
+    "\000\002\201\005\000\002\201\006\000\002\201\005\000" +
+    "\002\201\006\000\002\214\006\000\002\215\006\000\002" +
+    "\207\010\000\002\207\006\000\002\202\007\000\002\202" +
+    "\005\000\002\203\007\000\002\203\006\000\002\211\003" +
+    "\000\002\003\003\000\002\210\004\000\002\210\004\000" +
+    "\002\216\013\000\002\217\010\000\002\217\006\000\002" +
+    "\220\006\000\002\220\004\000\002\221\012\000\002\206" +
+    "\004\000\002\206\005\000\002\222\003\000\002\222\003" +
+    "\000\002\222\003\000\002\223\010\000\002\224\010\000" +
+    "\002\224\010\000\002\225\010\000\002\225\010\000\002" +
+    "\230\003\000\002\230\003\000\002\230\003\000\002\231" +
+    "\003\000\002\233\003\000\002\233\003\000\002\234\005" +
     "\000\002\234\005\000\002\234\005\000\002\234\005\000" +
-    "\002\234\004\000\002\234\005\000\002\234\005\000\002" +
-    "\234\004\000\002\234\005\000\002\234\005\000\002\234" +
+    "\002\234\005\000\002\234\004\000\002\234\005\000\002" +
+    "\234\005\000\002\234\004\000\002\234\005\000\002\234" +
     "\005\000\002\234\005\000\002\234\005\000\002\234\005" +
-    "\000\002\234\005\000\002\234\003\000\002\234\003\000" +
-    "\002\235\003\000\002\235\005\000\002\232\004\000\002" +
-    "\232\005\000\002\236\004\000\002\243\003\000\002\243" +
-    "\005\000\002\240\003\000\002\237\003\000\002\237\003" +
-    "\000\002\237\003\000\002\241\004\000\002\241\005\000" +
-    "\002\242\004" });
+    "\000\002\234\005\000\002\234\005\000\002\234\003\000" +
+    "\002\234\003\000\002\235\003\000\002\235\005\000\002" +
+    "\232\004\000\002\232\005\000\002\236\004\000\002\243" +
+    "\003\000\002\243\005\000\002\240\003\000\002\237\003" +
+    "\000\002\237\003\000\002\237\003\000\002\241\004\000" +
+    "\002\241\005\000\002\242\004" });
 
   /** Access to production table. */
   @Override
@@ -146,7 +146,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
   /** Parse-action table. */
   protected static final short[][] _action_table = 
     unpackFromStrings(new String[] {
-    "\000\u032e\000\004\260\005\001\002\000\004\002\u0330\001" +
+    "\000\u032f\000\004\260\005\001\002\000\004\002\u0331\001" +
     "\002\000\004\141\006\001\002\000\004\014\007\001\002" +
     "\000\014\015\030\164\020\166\040\232\010\262\046\001" +
     "\002\000\014\015\ufffc\164\ufffc\166\ufffc\232\ufffc\262\ufffc" +
@@ -156,10 +156,10 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\uffde\262\uffde\001\002\000\014\015\uffdf\164\uffdf\166\uffdf" +
     "\232\uffdf\262\uffdf\001\002\000\014\015\uffbf\164\uffbf\166" +
     "\uffbf\232\uffbf\262\uffbf\001\002\000\014\015\uffc5\164\uffc5" +
-    "\166\uffc5\232\uffc5\262\uffc5\001\002\000\014\025\u0313\026" +
-    "\u0315\027\u030d\031\u0314\032\u030c\001\002\000\004\201\u0329" +
-    "\001\002\000\014\025\u0313\026\u0315\027\u030d\031\u0314\032" +
-    "\u030c\001\002\000\014\015\ufffe\164\020\166\040\232\010" +
+    "\166\uffc5\232\uffc5\262\uffc5\001\002\000\014\025\u0314\026" +
+    "\u0316\027\u030e\031\u0315\032\u030d\001\002\000\004\201\u032a" +
+    "\001\002\000\014\025\u0314\026\u0316\027\u030e\031\u0315\032" +
+    "\u030d\001\002\000\014\015\ufffe\164\020\166\040\232\010" +
     "\262\046\001\002\000\014\015\uffca\164\uffca\166\uffca\232" +
     "\uffca\262\uffca\001\002\000\014\015\uffcb\164\uffcb\166\uffcb" +
     "\232\uffcb\262\uffcb\001\002\000\014\015\ufffa\164\ufffa\166" +
@@ -167,12 +167,12 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\166\uffc4\232\uffc4\262\uffc4\001\002\000\014\015\uffc9\164" +
     "\uffc9\166\uffc9\232\uffc9\262\uffc9\001\002\000\004\002\uffff" +
     "\001\002\000\014\015\uffbe\164\uffbe\166\uffbe\232\uffbe\262" +
-    "\uffbe\001\002\000\014\025\u0313\026\u0315\027\u030d\031\u0314" +
-    "\032\u030c\001\002\000\006\014\u0300\017\u02ff\001\002\000" +
+    "\uffbe\001\002\000\014\025\u0314\026\u0316\027\u030e\031\u0315" +
+    "\032\u030d\001\002\000\006\014\u0301\017\u0300\001\002\000" +
     "\014\015\ufff7\164\ufff7\166\ufff7\232\ufff7\262\ufff7\001\002" +
-    "\000\006\164\275\265\u02ef\001\002\000\014\015\ufffb\164" +
-    "\ufffb\166\ufffb\232\ufffb\262\ufffb\001\002\000\004\014\u02e8" +
-    "\001\002\000\004\020\u02cd\001\002\000\020\015\163\145" +
+    "\000\006\164\275\265\u02f0\001\002\000\014\015\ufffb\164" +
+    "\ufffb\166\ufffb\232\ufffb\262\ufffb\001\002\000\004\014\u02e9" +
+    "\001\002\000\004\020\u02ce\001\002\000\020\015\163\145" +
     "\172\164\156\171\162\215\153\262\200\270\154\001\002" +
     "\000\004\015\151\001\002\000\014\015\ufff6\164\ufff6\166" +
     "\ufff6\232\ufff6\262\ufff6\001\002\000\014\015\uffe0\164\uffe0" +
@@ -219,23 +219,23 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\054\147\001\002\000\006\014\uffb2\017\uffb2\001\002\000" +
     "\006\164\uffbc\265\uffbc\001\002\000\004\002\001\001\002" +
     "\000\020\015\uff9a\145\uff9a\164\uff9a\171\uff9a\215\uff9a\262" +
-    "\uff9a\270\uff9a\001\002\000\004\307\u02c9\001\002\000\004" +
-    "\164\u02c5\001\002\000\020\015\uffa4\145\uffa4\164\uffa4\171" +
-    "\uffa4\215\uffa4\262\uffa4\270\uffa4\001\002\000\004\141\u02c2" +
+    "\uff9a\270\uff9a\001\002\000\004\307\u02ca\001\002\000\004" +
+    "\164\u02c6\001\002\000\020\015\uffa4\145\uffa4\164\uffa4\171" +
+    "\uffa4\215\uffa4\262\uffa4\270\uffa4\001\002\000\004\141\u02c3" +
     "\001\002\000\020\015\uffa5\145\uffa5\164\uffa5\171\uffa5\215" +
-    "\uffa5\262\uffa5\270\uffa5\001\002\000\010\017\u02bc\023\u02bb" +
-    "\202\u02ba\001\002\000\020\015\uffa8\145\uffa8\164\uffa8\171" +
-    "\uffa8\215\uffa8\262\uffa8\270\uffa8\001\002\000\004\141\u02b7" +
+    "\uffa5\262\uffa5\270\uffa5\001\002\000\010\017\u02bd\023\u02bc" +
+    "\202\u02bb\001\002\000\020\015\uffa8\145\uffa8\164\uffa8\171" +
+    "\uffa8\215\uffa8\262\uffa8\270\uffa8\001\002\000\004\141\u02b8" +
     "\001\002\000\024\015\uffae\145\uffae\164\uffae\166\uffae\171" +
     "\uffae\215\uffae\232\uffae\262\uffae\270\uffae\001\002\000\004" +
-    "\014\u02ac\001\002\000\020\015\uffa7\145\uffa7\164\uffa7\171" +
-    "\uffa7\215\uffa7\262\uffa7\270\uffa7\001\002\000\020\015\u02aa" +
+    "\014\u02ad\001\002\000\020\015\uffa7\145\uffa7\164\uffa7\171" +
+    "\uffa7\215\uffa7\262\uffa7\270\uffa7\001\002\000\020\015\u02ab" +
     "\145\172\164\156\171\162\215\153\262\200\270\154\001" +
     "\002\000\024\015\uffad\145\uffad\164\uffad\166\uffad\171\uffad" +
     "\215\uffad\232\uffad\262\uffad\270\uffad\001\002\000\020\015" +
     "\uff9b\145\uff9b\164\uff9b\171\uff9b\215\uff9b\262\uff9b\270\uff9b" +
     "\001\002\000\020\015\uffa6\145\uffa6\164\uffa6\171\uffa6\215" +
-    "\uffa6\262\uffa6\270\uffa6\001\002\000\004\141\u02a7\001\002" +
+    "\uffa6\262\uffa6\270\uffa6\001\002\000\004\141\u02a8\001\002" +
     "\000\006\014\321\017\320\001\002\000\004\014\273\001" +
     "\002\000\020\015\uffa9\145\uffa9\164\uffa9\171\uffa9\215\uffa9" +
     "\262\uffa9\270\uffa9\001\002\000\006\017\217\023\220\001" +
@@ -253,110 +253,110 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\270\uff8e\001\002\000\020\015\uff8f\145\uff8f\164\uff8f\171" +
     "\uff8f\215\uff8f\262\uff8f\270\uff8f\001\002\000\020\015\uff9e" +
     "\145\uff9e\164\uff9e\171\uff9e\215\uff9e\262\uff9e\270\uff9e\001" +
-    "\002\000\016\004\222\005\225\012\226\141\223\251\231" +
-    "\335\221\001\002\000\016\004\222\005\225\012\226\141" +
-    "\223\251\231\335\221\001\002\000\044\011\ufecf\013\ufecf" +
-    "\016\ufecf\017\ufecf\024\ufecf\155\ufecf\255\ufecf\334\ufecf\335" +
-    "\ufecf\336\ufecf\337\ufecf\340\ufecf\341\ufecf\342\ufecf\343\ufecf" +
-    "\344\ufecf\345\ufecf\001\002\000\046\011\ufecd\013\ufecd\016" +
-    "\ufecd\017\ufecd\021\270\024\ufecd\155\ufecd\255\ufecd\334\ufecd" +
-    "\335\ufecd\336\ufecd\337\ufecd\340\ufecd\341\ufecd\342\ufecd\343" +
-    "\ufecd\344\ufecd\345\ufecd\001\002\000\044\011\ufee0\013\ufee0" +
-    "\016\ufee0\017\ufee0\024\ufee0\155\ufee0\255\ufee0\334\ufee0\335" +
-    "\ufee0\336\ufee0\337\ufee0\340\ufee0\341\ufee0\342\ufee0\343\ufee0" +
-    "\344\ufee0\345\ufee0\001\002\000\044\011\ufece\013\ufece\016" +
-    "\ufece\017\ufece\024\ufece\155\ufece\255\ufece\334\ufece\335\ufece" +
-    "\336\ufece\337\ufece\340\ufece\341\ufece\342\ufece\343\ufece\344" +
-    "\ufece\345\ufece\001\002\000\016\004\222\005\225\012\226" +
-    "\141\223\251\231\335\221\001\002\000\036\011\241\017" +
-    "\265\155\234\255\246\334\240\335\233\336\236\337\242" +
-    "\340\235\341\237\342\244\343\243\344\247\345\245\001" +
-    "\002\000\044\011\ufee1\013\ufee1\016\ufee1\017\ufee1\024\ufee1" +
-    "\155\ufee1\255\ufee1\334\ufee1\335\ufee1\336\ufee1\337\ufee1\340" +
-    "\ufee1\341\ufee1\342\ufee1\343\ufee1\344\ufee1\345\ufee1\001\002" +
-    "\000\016\004\222\005\225\012\226\141\223\251\231\335" +
-    "\221\001\002\000\044\011\241\013\ufed7\016\ufed7\017\ufed7" +
-    "\024\ufed7\155\ufed7\255\ufed7\334\240\335\233\336\236\337" +
-    "\242\340\235\341\237\342\244\343\243\344\247\345\245" +
-    "\001\002\000\016\004\222\005\225\012\226\141\223\251" +
-    "\231\335\221\001\002\000\016\004\222\005\225\012\226" +
-    "\141\223\251\231\335\221\001\002\000\016\004\222\005" +
-    "\225\012\226\141\223\251\231\335\221\001\002\000\016" +
-    "\004\222\005\225\012\226\141\223\251\231\335\221\001" +
-    "\002\000\016\004\222\005\225\012\226\141\223\251\231" +
-    "\335\221\001\002\000\016\004\222\005\225\012\226\141" +
-    "\223\251\231\335\221\001\002\000\016\004\222\005\225" +
-    "\012\226\141\223\251\231\335\221\001\002\000\016\004" +
-    "\222\005\225\012\226\141\223\251\231\335\221\001\002" +
-    "\000\016\004\222\005\225\012\226\141\223\251\231\335" +
-    "\221\001\002\000\016\004\222\005\225\012\226\141\223" +
-    "\251\231\335\221\001\002\000\016\004\222\005\225\012" +
-    "\226\141\223\251\231\335\221\001\002\000\016\004\222" +
-    "\005\225\012\226\141\223\251\231\335\221\001\002\000" +
-    "\016\004\222\005\225\012\226\141\223\251\231\335\221" +
-    "\001\002\000\034\011\ufed4\013\ufed4\016\ufed4\017\ufed4\024" +
-    "\ufed4\155\ufed4\255\ufed4\334\240\335\233\336\236\337\242" +
-    "\340\235\341\ufed4\001\002\000\044\011\241\013\ufed9\016" +
-    "\ufed9\017\ufed9\024\ufed9\155\234\255\ufed9\334\240\335\233" +
-    "\336\236\337\242\340\235\341\237\342\244\343\243\344" +
-    "\247\345\245\001\002\000\034\011\ufed3\013\ufed3\016\ufed3" +
-    "\017\ufed3\024\ufed3\155\ufed3\255\ufed3\334\240\335\233\336" +
-    "\236\337\242\340\235\341\ufed3\001\002\000\034\011\ufed6" +
-    "\013\ufed6\016\ufed6\017\ufed6\024\ufed6\155\ufed6\255\ufed6\334" +
-    "\240\335\233\336\236\337\242\340\235\341\ufed6\001\002" +
-    "\000\034\011\ufed5\013\ufed5\016\ufed5\017\ufed5\024\ufed5\155" +
-    "\ufed5\255\ufed5\334\240\335\233\336\236\337\242\340\235" +
-    "\341\ufed5\001\002\000\044\011\ufedc\013\ufedc\016\ufedc\017" +
-    "\ufedc\024\ufedc\155\ufedc\255\ufedc\334\ufedc\335\ufedc\336\ufedc" +
-    "\337\ufedc\340\ufedc\341\ufedc\342\ufedc\343\ufedc\344\ufedc\345" +
-    "\ufedc\001\002\000\044\011\ufed2\013\ufed2\016\ufed2\017\ufed2" +
-    "\024\ufed2\155\ufed2\255\ufed2\334\240\335\233\336\236\337" +
-    "\242\340\235\341\ufed2\342\244\343\243\344\247\345\245" +
-    "\001\002\000\044\011\ufedf\013\ufedf\016\ufedf\017\ufedf\024" +
-    "\ufedf\155\ufedf\255\ufedf\334\ufedf\335\ufedf\336\236\337\242" +
-    "\340\235\341\ufedf\342\ufedf\343\ufedf\344\ufedf\345\ufedf\001" +
-    "\002\000\044\011\ufed1\013\ufed1\016\ufed1\017\ufed1\024\ufed1" +
-    "\155\ufed1\255\ufed1\334\240\335\233\336\236\337\242\340" +
-    "\235\341\ufed1\342\244\343\243\344\247\345\245\001\002" +
-    "\000\044\011\ufedd\013\ufedd\016\ufedd\017\ufedd\024\ufedd\155" +
-    "\ufedd\255\ufedd\334\ufedd\335\ufedd\336\ufedd\337\ufedd\340\ufedd" +
-    "\341\ufedd\342\ufedd\343\ufedd\344\ufedd\345\ufedd\001\002\000" +
-    "\044\011\ufedb\013\ufedb\016\ufedb\017\ufedb\024\ufedb\155\ufedb" +
-    "\255\ufedb\334\ufedb\335\ufedb\336\ufedb\337\ufedb\340\ufedb\341" +
-    "\ufedb\342\ufedb\343\ufedb\344\ufedb\345\ufedb\001\002\000\044" +
-    "\011\241\013\ufed8\016\ufed8\017\ufed8\024\ufed8\155\ufed8\255" +
-    "\ufed8\334\240\335\233\336\236\337\242\340\235\341\237" +
-    "\342\244\343\243\344\247\345\245\001\002\000\044\011" +
-    "\ufede\013\ufede\016\ufede\017\ufede\024\ufede\155\ufede\255\ufede" +
-    "\334\ufede\335\ufede\336\236\337\242\340\235\341\ufede\342" +
-    "\ufede\343\ufede\344\ufede\345\ufede\001\002\000\020\015\uff9d" +
+    "\002\000\016\004\222\005\224\012\226\141\223\251\230" +
+    "\335\221\001\002\000\016\004\222\005\224\012\226\141" +
+    "\223\251\230\335\221\001\002\000\044\011\ufece\013\ufece" +
+    "\016\ufece\017\ufece\024\ufece\155\ufece\255\ufece\334\ufece\335" +
+    "\ufece\336\ufece\337\ufece\340\ufece\341\ufece\342\ufece\343\ufece" +
+    "\344\ufece\345\ufece\001\002\000\046\011\ufecc\013\ufecc\016" +
+    "\ufecc\017\ufecc\021\270\024\ufecc\155\ufecc\255\ufecc\334\ufecc" +
+    "\335\ufecc\336\ufecc\337\ufecc\340\ufecc\341\ufecc\342\ufecc\343" +
+    "\ufecc\344\ufecc\345\ufecc\001\002\000\044\011\ufecd\013\ufecd" +
+    "\016\ufecd\017\ufecd\024\ufecd\155\ufecd\255\ufecd\334\ufecd\335" +
+    "\ufecd\336\ufecd\337\ufecd\340\ufecd\341\ufecd\342\ufecd\343\ufecd" +
+    "\344\ufecd\345\ufecd\001\002\000\044\011\ufedf\013\ufedf\016" +
+    "\ufedf\017\ufedf\024\ufedf\155\ufedf\255\ufedf\334\ufedf\335\ufedf" +
+    "\336\ufedf\337\ufedf\340\ufedf\341\ufedf\342\ufedf\343\ufedf\344" +
+    "\ufedf\345\ufedf\001\002\000\016\004\222\005\224\012\226" +
+    "\141\223\251\230\335\221\001\002\000\036\011\241\017" +
+    "\265\155\234\255\246\334\240\335\233\336\235\337\242" +
+    "\340\236\341\237\342\245\343\243\344\247\345\244\001" +
+    "\002\000\016\004\222\005\224\012\226\141\223\251\230" +
+    "\335\221\001\002\000\044\011\ufee0\013\ufee0\016\ufee0\017" +
+    "\ufee0\024\ufee0\155\ufee0\255\ufee0\334\ufee0\335\ufee0\336\ufee0" +
+    "\337\ufee0\340\ufee0\341\ufee0\342\ufee0\343\ufee0\344\ufee0\345" +
+    "\ufee0\001\002\000\044\011\241\013\ufed6\016\ufed6\017\ufed6" +
+    "\024\ufed6\155\ufed6\255\ufed6\334\240\335\233\336\235\337" +
+    "\242\340\236\341\237\342\245\343\243\344\247\345\244" +
+    "\001\002\000\016\004\222\005\224\012\226\141\223\251" +
+    "\230\335\221\001\002\000\016\004\222\005\224\012\226" +
+    "\141\223\251\230\335\221\001\002\000\016\004\222\005" +
+    "\224\012\226\141\223\251\230\335\221\001\002\000\016" +
+    "\004\222\005\224\012\226\141\223\251\230\335\221\001" +
+    "\002\000\016\004\222\005\224\012\226\141\223\251\230" +
+    "\335\221\001\002\000\016\004\222\005\224\012\226\141" +
+    "\223\251\230\335\221\001\002\000\016\004\222\005\224" +
+    "\012\226\141\223\251\230\335\221\001\002\000\016\004" +
+    "\222\005\224\012\226\141\223\251\230\335\221\001\002" +
+    "\000\016\004\222\005\224\012\226\141\223\251\230\335" +
+    "\221\001\002\000\016\004\222\005\224\012\226\141\223" +
+    "\251\230\335\221\001\002\000\016\004\222\005\224\012" +
+    "\226\141\223\251\230\335\221\001\002\000\016\004\222" +
+    "\005\224\012\226\141\223\251\230\335\221\001\002\000" +
+    "\016\004\222\005\224\012\226\141\223\251\230\335\221" +
+    "\001\002\000\034\011\ufed3\013\ufed3\016\ufed3\017\ufed3\024" +
+    "\ufed3\155\ufed3\255\ufed3\334\240\335\233\336\235\337\242" +
+    "\340\236\341\ufed3\001\002\000\044\011\241\013\ufed8\016" +
+    "\ufed8\017\ufed8\024\ufed8\155\234\255\ufed8\334\240\335\233" +
+    "\336\235\337\242\340\236\341\237\342\245\343\243\344" +
+    "\247\345\244\001\002\000\034\011\ufed5\013\ufed5\016\ufed5" +
+    "\017\ufed5\024\ufed5\155\ufed5\255\ufed5\334\240\335\233\336" +
+    "\235\337\242\340\236\341\ufed5\001\002\000\034\011\ufed2" +
+    "\013\ufed2\016\ufed2\017\ufed2\024\ufed2\155\ufed2\255\ufed2\334" +
+    "\240\335\233\336\235\337\242\340\236\341\ufed2\001\002" +
+    "\000\034\011\ufed4\013\ufed4\016\ufed4\017\ufed4\024\ufed4\155" +
+    "\ufed4\255\ufed4\334\240\335\233\336\235\337\242\340\236" +
+    "\341\ufed4\001\002\000\044\011\ufedb\013\ufedb\016\ufedb\017" +
+    "\ufedb\024\ufedb\155\ufedb\255\ufedb\334\ufedb\335\ufedb\336\ufedb" +
+    "\337\ufedb\340\ufedb\341\ufedb\342\ufedb\343\ufedb\344\ufedb\345" +
+    "\ufedb\001\002\000\044\011\ufed1\013\ufed1\016\ufed1\017\ufed1" +
+    "\024\ufed1\155\ufed1\255\ufed1\334\240\335\233\336\235\337" +
+    "\242\340\236\341\ufed1\342\245\343\243\344\247\345\244" +
+    "\001\002\000\044\011\ufede\013\ufede\016\ufede\017\ufede\024" +
+    "\ufede\155\ufede\255\ufede\334\ufede\335\ufede\336\235\337\242" +
+    "\340\236\341\ufede\342\ufede\343\ufede\344\ufede\345\ufede\001" +
+    "\002\000\044\011\ufed0\013\ufed0\016\ufed0\017\ufed0\024\ufed0" +
+    "\155\ufed0\255\ufed0\334\240\335\233\336\235\337\242\340" +
+    "\236\341\ufed0\342\245\343\243\344\247\345\244\001\002" +
+    "\000\044\011\ufeda\013\ufeda\016\ufeda\017\ufeda\024\ufeda\155" +
+    "\ufeda\255\ufeda\334\ufeda\335\ufeda\336\ufeda\337\ufeda\340\ufeda" +
+    "\341\ufeda\342\ufeda\343\ufeda\344\ufeda\345\ufeda\001\002\000" +
+    "\044\011\ufedc\013\ufedc\016\ufedc\017\ufedc\024\ufedc\155\ufedc" +
+    "\255\ufedc\334\ufedc\335\ufedc\336\ufedc\337\ufedc\340\ufedc\341" +
+    "\ufedc\342\ufedc\343\ufedc\344\ufedc\345\ufedc\001\002\000\044" +
+    "\011\241\013\ufed7\016\ufed7\017\ufed7\024\ufed7\155\ufed7\255" +
+    "\ufed7\334\240\335\233\336\235\337\242\340\236\341\237" +
+    "\342\245\343\243\344\247\345\244\001\002\000\044\011" +
+    "\ufedd\013\ufedd\016\ufedd\017\ufedd\024\ufedd\155\ufedd\255\ufedd" +
+    "\334\ufedd\335\ufedd\336\235\337\242\340\236\341\ufedd\342" +
+    "\ufedd\343\ufedd\344\ufedd\345\ufedd\001\002\000\020\015\uff9d" +
     "\145\uff9d\164\uff9d\171\uff9d\215\uff9d\262\uff9d\270\uff9d\001" +
     "\002\000\036\011\241\013\267\155\234\255\246\334\240" +
-    "\335\233\336\236\337\242\340\235\341\237\342\244\343" +
-    "\243\344\247\345\245\001\002\000\044\011\ufed0\013\ufed0" +
-    "\016\ufed0\017\ufed0\024\ufed0\155\ufed0\255\ufed0\334\ufed0\335" +
-    "\ufed0\336\ufed0\337\ufed0\340\ufed0\341\ufed0\342\ufed0\343\ufed0" +
-    "\344\ufed0\345\ufed0\001\002\000\004\141\223\001\002\000" +
-    "\044\011\ufecc\013\ufecc\016\ufecc\017\ufecc\024\ufecc\155\ufecc" +
-    "\255\ufecc\334\ufecc\335\ufecc\336\ufecc\337\ufecc\340\ufecc\341" +
-    "\ufecc\342\ufecc\343\ufecc\344\ufecc\345\ufecc\001\002\000\044" +
-    "\011\ufeda\013\ufeda\016\ufeda\017\ufeda\024\ufeda\155\ufeda\255" +
-    "\ufeda\334\ufeda\335\ufeda\336\ufeda\337\ufeda\340\ufeda\341\ufeda" +
-    "\342\ufeda\343\ufeda\344\ufeda\345\ufeda\001\002\000\006\015" +
+    "\335\233\336\235\337\242\340\236\341\237\342\245\343" +
+    "\243\344\247\345\244\001\002\000\044\011\ufecf\013\ufecf" +
+    "\016\ufecf\017\ufecf\024\ufecf\155\ufecf\255\ufecf\334\ufecf\335" +
+    "\ufecf\336\ufecf\337\ufecf\340\ufecf\341\ufecf\342\ufecf\343\ufecf" +
+    "\344\ufecf\345\ufecf\001\002\000\004\141\223\001\002\000" +
+    "\044\011\ufecb\013\ufecb\016\ufecb\017\ufecb\024\ufecb\155\ufecb" +
+    "\255\ufecb\334\ufecb\335\ufecb\336\ufecb\337\ufecb\340\ufecb\341" +
+    "\ufecb\342\ufecb\343\ufecb\344\ufecb\345\ufecb\001\002\000\044" +
+    "\011\ufed9\013\ufed9\016\ufed9\017\ufed9\024\ufed9\155\ufed9\255" +
+    "\ufed9\334\ufed9\335\ufed9\336\ufed9\337\ufed9\340\ufed9\341\ufed9" +
+    "\342\ufed9\343\ufed9\344\ufed9\345\ufed9\001\002\000\006\015" +
     "\276\164\275\001\002\000\004\015\317\001\002\000\004" +
     "\141\311\001\002\000\020\015\uff99\145\uff99\164\uff99\171" +
     "\uff99\215\uff99\262\uff99\270\uff99\001\002\000\010\015\uffe7" +
     "\164\275\265\uffe7\001\002\000\010\017\uffe3\023\302\202" +
     "\301\001\002\000\004\023\306\001\002\000\016\004\222" +
-    "\005\225\012\226\141\223\251\231\335\221\001\002\000" +
+    "\005\224\012\226\141\223\251\230\335\221\001\002\000" +
     "\004\017\304\001\002\000\012\015\uffe5\164\uffe5\265\uffe5" +
     "\301\uffe5\001\002\000\036\011\241\017\uffe2\155\234\255" +
-    "\246\334\240\335\233\336\236\337\242\340\235\341\237" +
-    "\342\244\343\243\344\247\345\245\001\002\000\016\004" +
-    "\222\005\225\012\226\141\223\251\231\335\221\001\002" +
+    "\246\334\240\335\233\336\235\337\242\340\236\341\237" +
+    "\342\245\343\243\344\247\345\244\001\002\000\016\004" +
+    "\222\005\224\012\226\141\223\251\230\335\221\001\002" +
     "\000\036\011\241\017\uffe1\155\234\255\246\334\240\335" +
-    "\233\336\236\337\242\340\235\341\237\342\244\343\243" +
-    "\344\247\345\245\001\002\000\006\015\uffe6\265\uffe6\001" +
+    "\233\336\235\337\242\340\236\341\237\342\245\343\243" +
+    "\344\247\345\244\001\002\000\006\015\uffe6\265\uffe6\001" +
     "\002\000\004\020\312\001\002\000\010\074\315\075\316" +
     "\141\313\001\002\000\010\017\ufff2\023\ufff2\202\ufff2\001" +
     "\002\000\010\017\uffe4\023\uffe4\202\uffe4\001\002\000\010" +
@@ -365,14 +365,14 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\171\uff98\215\uff98\262\uff98\270\uff98\001\002\000\020\015" +
     "\uff89\145\uff89\164\uff89\171\uff89\215\uff89\262\uff89\270\uff89" +
     "\001\002\000\014\015\342\212\351\216\322\307\354\316" +
-    "\363\001\002\000\004\145\u02a3\001\002\000\004\022\u0281" +
+    "\362\001\002\000\004\145\u02a4\001\002\000\004\022\u0282" +
     "\001\002\000\014\015\uff7e\212\uff7e\216\uff7e\307\uff7e\316" +
     "\uff7e\001\002\000\014\015\uff79\212\uff79\216\uff79\307\uff79" +
-    "\316\uff79\001\002\000\006\017\u0278\022\u0279\001\002\000" +
+    "\316\uff79\001\002\000\006\017\u0279\022\u027a\001\002\000" +
     "\014\015\uff81\212\uff81\216\uff81\307\uff81\316\uff81\001\002" +
-    "\000\004\022\u0250\001\002\000\006\017\u0247\022\u0248\001" +
+    "\000\004\022\u0251\001\002\000\006\017\u0248\022\u0249\001" +
     "\002\000\014\015\uff85\212\uff85\216\uff85\307\uff85\316\uff85" +
-    "\001\002\000\006\206\u01d4\313\u01d6\001\002\000\014\015" +
+    "\001\002\000\006\206\u01d5\313\u01d7\001\002\000\014\015" +
     "\uff7a\212\uff7a\216\uff7a\307\uff7a\316\uff7a\001\002\000\014" +
     "\015\uff82\212\uff82\216\uff82\307\uff82\316\uff82\001\002\000" +
     "\014\015\uff83\212\uff83\216\uff83\307\uff83\316\uff83\001\002" +
@@ -383,7 +383,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\212\uff78\216\uff78\307\uff78\316\uff78\001\002\000\004\015" +
     "\u01b8\001\002\000\006\017\u01af\022\u01b0\001\002\000\004" +
     "\022\u01a9\001\002\000\006\017\u01a3\022\u01a4\001\002\000" +
-    "\014\015\uff87\212\351\216\322\307\354\316\363\001\002" +
+    "\014\015\uff87\212\351\216\322\307\354\316\362\001\002" +
     "\000\004\145\u019e\001\002\000\014\015\uff7c\212\uff7c\216" +
     "\uff7c\307\uff7c\316\uff7c\001\002\000\014\015\uff7f\212\uff7f" +
     "\216\uff7f\307\uff7f\316\uff7f\001\002\000\004\141\u0192\001" +
@@ -391,133 +391,133 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\002\000\014\015\uff80\212\uff80\216\uff80\307\uff80\316" +
     "\uff80\001\002\000\006\017\u0189\022\u018a\001\002\000\004" +
     "\022\u0183\001\002\000\006\017\374\022\375\001\002\000" +
-    "\014\015\uff7d\212\uff7d\216\uff7d\307\uff7d\316\uff7d\001\002" +
-    "\000\004\020\364\001\002\000\004\115\365\001\002\000" +
+    "\004\020\364\001\002\000\014\015\uff7d\212\uff7d\216\uff7d" +
+    "\307\uff7d\316\uff7d\001\002\000\004\115\365\001\002\000" +
     "\004\221\366\001\002\000\004\141\367\001\002\000\010" +
-    "\206\uff07\230\370\313\uff07\001\002\000\004\036\371\001" +
+    "\206\uff06\230\370\313\uff06\001\002\000\004\036\371\001" +
     "\002\000\004\011\372\001\002\000\004\004\373\001\002" +
-    "\000\006\206\uff06\313\uff06\001\002\000\014\015\uff4e\212" +
+    "\000\006\206\uff05\313\uff05\001\002\000\014\015\uff4e\212" +
     "\uff4e\216\uff4e\307\uff4e\316\uff4e\001\002\000\004\124\376" +
     "\001\002\000\004\012\377\001\002\000\006\013\u0102\034" +
     "\u0100\001\002\000\004\022\u0106\001\002\000\004\013\u0104" +
     "\001\002\000\004\017\u0103\001\002\000\014\015\uff4f\212" +
     "\uff4f\216\uff4f\307\uff4f\316\uff4f\001\002\000\004\017\u0105" +
     "\001\002\000\014\015\uff50\212\uff50\216\uff50\307\uff50\316" +
-    "\uff50\001\002\000\022\065\uff47\066\uff47\067\uff47\070\uff47" +
-    "\125\uff47\126\uff47\127\uff47\230\uff47\001\002\000\006\013" +
-    "\uff4a\016\uff4a\001\002\000\022\065\u011a\066\u010e\067\u010d" +
-    "\070\u0111\125\u0119\126\u0116\127\u010b\230\u010f\001\002\000" +
-    "\010\013\uff42\016\uff42\210\uff42\001\002\000\012\036\u0125" +
+    "\uff50\001\002\000\022\065\uff44\066\uff44\067\uff44\070\uff44" +
+    "\125\uff44\126\uff44\127\uff44\230\uff44\001\002\000\006\013" +
+    "\uff49\016\uff49\001\002\000\022\065\u011a\066\u010e\067\u010d" +
+    "\070\u0111\125\u0119\126\u0117\127\u010b\230\u010f\001\002\000" +
+    "\010\013\uff41\016\uff41\210\uff41\001\002\000\012\036\u0125" +
     "\037\u0129\040\u0120\041\u0127\001\002\000\004\012\u0180\001" +
     "\002\000\012\036\u0125\037\u0129\040\u0120\041\u0127\001\002" +
-    "\000\004\012\u017d\001\002\000\010\013\uff3e\016\uff3e\210" +
-    "\uff3e\001\002\000\016\004\222\005\225\012\226\141\223" +
-    "\251\231\335\221\001\002\000\012\036\u0125\037\u0129\040" +
+    "\000\004\012\u017d\001\002\000\010\013\uff3d\016\uff3d\210" +
+    "\uff3d\001\002\000\016\004\222\005\224\012\226\141\223" +
+    "\251\230\335\221\001\002\000\012\036\u0125\037\u0129\040" +
     "\u0120\041\u0127\001\002\000\004\012\u0172\001\002\000\010" +
-    "\013\uff41\016\uff41\210\uff41\001\002\000\012\036\u0125\037" +
+    "\013\uff40\016\uff40\210\uff40\001\002\000\012\036\u0125\037" +
     "\u0129\040\u0120\041\u0127\001\002\000\012\036\u0125\037\u0129" +
     "\040\u0120\041\u0127\001\002\000\006\013\uff45\016\uff45\001" +
-    "\002\000\004\012\u016d\001\002\000\010\013\uff40\016\uff40" +
-    "\210\uff40\001\002\000\010\013\uff44\016\uff44\210\uff44\001" +
+    "\002\000\010\013\uff3f\016\uff3f\210\uff3f\001\002\000\004" +
+    "\012\u016d\001\002\000\010\013\uff43\016\uff43\210\uff43\001" +
     "\002\000\004\012\u016c\001\002\000\004\012\u016b\001\002" +
-    "\000\010\013\uff3f\016\uff3f\210\uff3f\001\002\000\010\013" +
-    "\uff43\016\uff43\210\uff43\001\002\000\012\036\u0125\037\u0129" +
-    "\040\u0120\041\u0127\001\002\000\006\013\uff2e\016\uff2e\001" +
-    "\002\000\006\013\uff2b\016\uff2b\001\002\000\004\022\u016a" +
-    "\001\002\000\006\013\uff2f\016\uff2f\001\002\000\004\013" +
-    "\u0169\001\002\000\006\013\uff31\016\u0167\001\002\000\010" +
+    "\000\010\013\uff3e\016\uff3e\210\uff3e\001\002\000\010\013" +
+    "\uff42\016\uff42\210\uff42\001\002\000\012\036\u0125\037\u0129" +
+    "\040\u0120\041\u0127\001\002\000\006\013\uff2d\016\uff2d\001" +
+    "\002\000\006\013\uff2a\016\uff2a\001\002\000\004\022\u016a" +
+    "\001\002\000\006\013\uff2e\016\uff2e\001\002\000\004\013" +
+    "\u0169\001\002\000\006\013\uff30\016\u0167\001\002\000\010" +
     "\130\u0140\131\u013f\141\u0141\001\002\000\004\022\u013d\001" +
-    "\002\000\006\013\uff2c\016\uff2c\001\002\000\004\022\u0137" +
-    "\001\002\000\006\013\uff29\016\uff29\001\002\000\004\022" +
-    "\uff26\001\002\000\006\013\uff2a\016\uff2a\001\002\000\004" +
-    "\022\u012d\001\002\000\006\013\uff2d\016\uff2d\001\002\000" +
-    "\020\004\222\005\225\012\226\073\u012f\141\223\251\231" +
-    "\335\221\001\002\000\006\013\uff27\016\uff27\001\002\000" +
-    "\004\012\u0132\001\002\000\006\013\uff24\016\uff24\001\002" +
-    "\000\040\011\241\013\uff25\016\uff25\155\234\255\246\334" +
-    "\240\335\233\336\236\337\242\340\235\341\237\342\244" +
-    "\343\243\344\247\345\245\001\002\000\016\004\222\005" +
-    "\225\012\226\141\223\251\231\335\221\001\002\000\036" +
+    "\002\000\006\013\uff2b\016\uff2b\001\002\000\004\022\u0137" +
+    "\001\002\000\006\013\uff28\016\uff28\001\002\000\004\022" +
+    "\uff25\001\002\000\006\013\uff29\016\uff29\001\002\000\004" +
+    "\022\u012d\001\002\000\006\013\uff2c\016\uff2c\001\002\000" +
+    "\020\004\222\005\224\012\226\073\u012f\141\223\251\230" +
+    "\335\221\001\002\000\006\013\uff26\016\uff26\001\002\000" +
+    "\004\012\u0132\001\002\000\006\013\uff23\016\uff23\001\002" +
+    "\000\040\011\241\013\uff24\016\uff24\155\234\255\246\334" +
+    "\240\335\233\336\235\337\242\340\236\341\237\342\245" +
+    "\343\243\344\247\345\244\001\002\000\016\004\222\005" +
+    "\224\012\226\141\223\251\230\335\221\001\002\000\036" +
     "\011\241\016\u0134\155\234\255\246\334\240\335\233\336" +
-    "\236\337\242\340\235\341\237\342\244\343\243\344\247" +
-    "\345\245\001\002\000\016\004\222\005\225\012\226\141" +
-    "\223\251\231\335\221\001\002\000\036\011\241\013\u0136" +
-    "\155\234\255\246\334\240\335\233\336\236\337\242\340" +
-    "\235\341\237\342\244\343\243\344\247\345\245\001\002" +
-    "\000\006\013\uff23\016\uff23\001\002\000\004\141\u0138\001" +
-    "\002\000\010\013\uff1c\016\uff1c\021\u0139\001\002\000\010" +
-    "\134\u013a\135\u013c\136\u013b\001\002\000\006\013\uff1b\016" +
-    "\uff1b\001\002\000\006\013\uff19\016\uff19\001\002\000\006" +
-    "\013\uff1a\016\uff1a\001\002\000\004\004\u013e\001\002\000" +
-    "\006\013\uff28\016\uff28\001\002\000\004\012\u0165\001\002" +
-    "\000\004\012\u0161\001\002\000\010\012\u0142\013\uff20\016" +
-    "\uff20\001\002\000\020\004\222\005\225\012\226\013\u0149" +
-    "\141\u0145\251\231\335\221\001\002\000\020\004\222\005" +
-    "\225\012\226\013\u0157\141\u0153\251\231\335\221\001\002" +
-    "\000\006\013\uff18\016\uff18\001\002\000\046\011\ufecd\012" +
-    "\u014f\013\ufecd\016\ufecd\017\ufecd\021\270\155\ufecd\255\ufecd" +
-    "\334\ufecd\335\ufecd\336\ufecd\337\ufecd\340\ufecd\341\ufecd\342" +
-    "\ufecd\343\ufecd\344\ufecd\345\ufecd\001\002\000\042\011\ufee0" +
-    "\013\ufee3\016\ufee3\017\ufee3\155\ufee0\255\ufee0\334\ufee0\335" +
-    "\ufee0\336\ufee0\337\ufee0\340\ufee0\341\ufee0\342\ufee0\343\ufee0" +
-    "\344\ufee0\345\ufee0\001\002\000\006\013\u014d\016\u014c\001" +
+    "\235\337\242\340\236\341\237\342\245\343\243\344\247" +
+    "\345\244\001\002\000\016\004\222\005\224\012\226\141" +
+    "\223\251\230\335\221\001\002\000\036\011\241\013\u0136" +
+    "\155\234\255\246\334\240\335\233\336\235\337\242\340" +
+    "\236\341\237\342\245\343\243\344\247\345\244\001\002" +
+    "\000\006\013\uff22\016\uff22\001\002\000\004\141\u0138\001" +
+    "\002\000\010\013\uff1b\016\uff1b\021\u0139\001\002\000\010" +
+    "\134\u013a\135\u013c\136\u013b\001\002\000\006\013\uff1a\016" +
+    "\uff1a\001\002\000\006\013\uff18\016\uff18\001\002\000\006" +
+    "\013\uff19\016\uff19\001\002\000\004\004\u013e\001\002\000" +
+    "\006\013\uff27\016\uff27\001\002\000\004\012\u0165\001\002" +
+    "\000\004\012\u0161\001\002\000\010\012\u0142\013\uff1f\016" +
+    "\uff1f\001\002\000\020\004\222\005\224\012\226\013\u0149" +
+    "\141\u0145\251\230\335\221\001\002\000\006\013\uff17\016" +
+    "\uff17\001\002\000\020\004\222\005\224\012\226\013\u0156" +
+    "\141\u0151\251\230\335\221\001\002\000\046\011\ufecc\012" +
+    "\u014f\013\ufecc\016\ufecc\017\ufecc\021\270\155\ufecc\255\ufecc" +
+    "\334\ufecc\335\ufecc\336\ufecc\337\ufecc\340\ufecc\341\ufecc\342" +
+    "\ufecc\343\ufecc\344\ufecc\345\ufecc\001\002\000\042\011\ufedf" +
+    "\013\ufee2\016\ufee2\017\ufee2\155\ufedf\255\ufedf\334\ufedf\335" +
+    "\ufedf\336\ufedf\337\ufedf\340\ufedf\341\ufedf\342\ufedf\343\ufedf" +
+    "\344\ufedf\345\ufedf\001\002\000\006\013\u014d\016\u014c\001" +
     "\002\000\034\011\241\155\234\255\246\334\240\335\233" +
-    "\336\236\337\242\340\235\341\237\342\244\343\243\344" +
-    "\247\345\245\001\002\000\006\013\uff21\016\uff21\001\002" +
-    "\000\042\011\ufee1\013\ufee4\016\ufee4\017\ufee4\155\ufee1\255" +
-    "\ufee1\334\ufee1\335\ufee1\336\ufee1\337\ufee1\340\ufee1\341\ufee1" +
-    "\342\ufee1\343\ufee1\344\ufee1\345\ufee1\001\002\000\010\013" +
-    "\ufee5\016\ufee5\017\ufee5\001\002\000\016\004\222\005\225" +
-    "\012\226\141\u0145\251\231\335\221\001\002\000\006\013" +
-    "\uff22\016\uff22\001\002\000\006\013\uff17\016\uff17\001\002" +
-    "\000\020\004\ufec9\005\ufec9\012\ufec9\013\ufec9\141\ufec9\251" +
-    "\ufec9\335\ufec9\001\002\000\016\004\222\005\225\012\226" +
-    "\141\u0153\251\231\335\221\001\002\000\004\013\u015e\001" +
-    "\002\000\006\013\ufec8\016\u015c\001\002\000\044\011\ufecd" +
-    "\012\u015a\013\ufecd\016\ufecd\021\270\155\ufecd\255\ufecd\334" +
-    "\ufecd\335\ufecd\336\ufecd\337\ufecd\340\ufecd\341\ufecd\342\ufecd" +
-    "\343\ufecd\344\ufecd\345\ufecd\001\002\000\040\011\ufee0\013" +
-    "\ufec4\016\ufec4\155\ufee0\255\ufee0\334\ufee0\335\ufee0\336\ufee0" +
-    "\337\ufee0\340\ufee0\341\ufee0\342\ufee0\343\ufee0\344\ufee0\345" +
-    "\ufee0\001\002\000\004\013\u0159\001\002\000\040\011\ufee1" +
-    "\013\ufec5\016\ufec5\155\ufee1\255\ufee1\334\ufee1\335\ufee1\336" +
-    "\ufee1\337\ufee1\340\ufee1\341\ufee1\342\ufee1\343\ufee1\344\ufee1" +
-    "\345\ufee1\001\002\000\010\013\ufecb\016\ufecb\017\ufecb\001" +
-    "\002\000\006\013\ufec3\016\ufec3\001\002\000\010\013\ufeca" +
-    "\016\ufeca\017\ufeca\001\002\000\020\004\ufec9\005\ufec9\012" +
-    "\ufec9\013\ufec0\141\ufec9\251\ufec9\335\ufec9\001\002\000\016" +
-    "\004\222\005\225\012\226\141\u0153\251\231\335\221\001" +
-    "\002\000\016\004\ufec6\005\ufec6\012\ufec6\141\ufec6\251\ufec6" +
-    "\335\ufec6\001\002\000\004\013\ufec7\001\002\000\006\013" +
-    "\ufec2\016\ufec2\001\002\000\004\013\u0160\001\002\000\006" +
-    "\013\ufec1\016\ufec1\001\002\000\016\004\222\005\225\012" +
-    "\226\141\223\251\231\335\221\001\002\000\036\011\241" +
-    "\013\ufee2\155\234\255\246\334\240\335\233\336\236\337" +
-    "\242\340\235\341\237\342\244\343\243\344\247\345\245" +
-    "\001\002\000\004\013\u0164\001\002\000\006\013\uff1f\016" +
-    "\uff1f\001\002\000\004\013\u0166\001\002\000\006\013\uff1e" +
-    "\016\uff1e\001\002\000\012\036\u0125\037\u0129\040\u0120\041" +
-    "\u0127\001\002\000\004\013\uff30\001\002\000\010\013\uff35" +
-    "\016\uff35\210\uff35\001\002\000\010\130\uff1d\131\uff1d\141" +
-    "\uff1d\001\002\000\012\036\uff3c\037\uff3c\040\uff3c\041\uff3c" +
-    "\001\002\000\012\036\uff36\037\uff36\040\uff36\041\uff36\001" +
-    "\002\000\012\036\uff34\037\uff34\040\uff34\041\uff34\001\002" +
-    "\000\004\013\u016f\001\002\000\010\013\uff33\016\uff33\210" +
-    "\uff33\001\002\000\004\013\u0171\001\002\000\010\013\uff39" +
-    "\016\uff39\210\uff39\001\002\000\012\036\uff38\037\uff38\040" +
-    "\uff38\041\uff38\001\002\000\004\013\u0174\001\002\000\010" +
-    "\013\uff3d\016\uff3d\210\uff3d\001\002\000\036\011\241\024" +
-    "\u0176\155\234\255\246\334\240\335\233\336\236\337\242" +
-    "\340\235\341\237\342\244\343\243\344\247\345\245\001" +
+    "\336\235\337\242\340\236\341\237\342\245\343\243\344" +
+    "\247\345\244\001\002\000\006\013\uff20\016\uff20\001\002" +
+    "\000\042\011\ufee0\013\ufee3\016\ufee3\017\ufee3\155\ufee0\255" +
+    "\ufee0\334\ufee0\335\ufee0\336\ufee0\337\ufee0\340\ufee0\341\ufee0" +
+    "\342\ufee0\343\ufee0\344\ufee0\345\ufee0\001\002\000\010\013" +
+    "\ufee4\016\ufee4\017\ufee4\001\002\000\016\004\222\005\224" +
+    "\012\226\141\u0145\251\230\335\221\001\002\000\006\013" +
+    "\uff21\016\uff21\001\002\000\006\013\uff16\016\uff16\001\002" +
+    "\000\020\004\ufec8\005\ufec8\012\ufec8\013\ufec8\141\ufec8\251" +
+    "\ufec8\335\ufec8\001\002\000\016\004\222\005\224\012\226" +
+    "\141\u0151\251\230\335\221\001\002\000\044\011\ufecc\012" +
+    "\u015e\013\ufecc\016\ufecc\021\270\155\ufecc\255\ufecc\334\ufecc" +
+    "\335\ufecc\336\ufecc\337\ufecc\340\ufecc\341\ufecc\342\ufecc\343" +
+    "\ufecc\344\ufecc\345\ufecc\001\002\000\004\013\u015d\001\002" +
+    "\000\006\013\ufec7\016\u015b\001\002\000\040\011\ufedf\013" +
+    "\ufec3\016\ufec3\155\ufedf\255\ufedf\334\ufedf\335\ufedf\336\ufedf" +
+    "\337\ufedf\340\ufedf\341\ufedf\342\ufedf\343\ufedf\344\ufedf\345" +
+    "\ufedf\001\002\000\004\013\u0159\001\002\000\010\013\ufeca" +
+    "\016\ufeca\017\ufeca\001\002\000\040\011\ufee0\013\ufec4\016" +
+    "\ufec4\155\ufee0\255\ufee0\334\ufee0\335\ufee0\336\ufee0\337\ufee0" +
+    "\340\ufee0\341\ufee0\342\ufee0\343\ufee0\344\ufee0\345\ufee0\001" +
+    "\002\000\006\013\ufec2\016\ufec2\001\002\000\010\013\ufec9" +
+    "\016\ufec9\017\ufec9\001\002\000\016\004\222\005\224\012" +
+    "\226\141\u0151\251\230\335\221\001\002\000\016\004\ufec5" +
+    "\005\ufec5\012\ufec5\141\ufec5\251\ufec5\335\ufec5\001\002\000" +
+    "\004\013\ufec6\001\002\000\006\013\ufec1\016\ufec1\001\002" +
+    "\000\020\004\ufec8\005\ufec8\012\ufec8\013\ufebf\141\ufec8\251" +
+    "\ufec8\335\ufec8\001\002\000\004\013\u0160\001\002\000\006" +
+    "\013\ufec0\016\ufec0\001\002\000\016\004\222\005\224\012" +
+    "\226\141\223\251\230\335\221\001\002\000\036\011\241" +
+    "\013\ufee1\155\234\255\246\334\240\335\233\336\235\337" +
+    "\242\340\236\341\237\342\245\343\243\344\247\345\244" +
+    "\001\002\000\004\013\u0164\001\002\000\006\013\uff1e\016" +
+    "\uff1e\001\002\000\004\013\u0166\001\002\000\006\013\uff1d" +
+    "\016\uff1d\001\002\000\012\036\u0125\037\u0129\040\u0120\041" +
+    "\u0127\001\002\000\004\013\uff2f\001\002\000\010\013\uff34" +
+    "\016\uff34\210\uff34\001\002\000\010\130\uff1c\131\uff1c\141" +
+    "\uff1c\001\002\000\012\036\uff3b\037\uff3b\040\uff3b\041\uff3b" +
+    "\001\002\000\012\036\uff35\037\uff35\040\uff35\041\uff35\001" +
+    "\002\000\012\036\uff33\037\uff33\040\uff33\041\uff33\001\002" +
+    "\000\004\013\u016f\001\002\000\010\013\uff32\016\uff32\210" +
+    "\uff32\001\002\000\004\013\u0171\001\002\000\010\013\uff38" +
+    "\016\uff38\210\uff38\001\002\000\012\036\uff37\037\uff37\040" +
+    "\uff37\041\uff37\001\002\000\004\013\u0174\001\002\000\010" +
+    "\013\uff3c\016\uff3c\210\uff3c\001\002\000\036\011\241\024" +
+    "\u0176\155\234\255\246\334\240\335\233\336\235\337\242" +
+    "\340\236\341\237\342\245\343\243\344\247\345\244\001" +
     "\002\000\020\065\u011a\066\u010e\067\u010d\070\u0111\125\u0119" +
-    "\126\u0116\127\u010b\001\002\000\004\210\u0178\001\002\000" +
+    "\126\u0117\127\u010b\001\002\000\004\210\u0178\001\002\000" +
     "\004\064\u0179\001\002\000\004\012\u017a\001\002\000\004" +
     "\004\u017b\001\002\000\004\013\u017c\001\002\000\006\013" +
-    "\uff46\016\uff46\001\002\000\012\036\uff3a\037\uff3a\040\uff3a" +
-    "\041\uff3a\001\002\000\004\013\u017f\001\002\000\010\013" +
-    "\uff3b\016\uff3b\210\uff3b\001\002\000\012\036\uff32\037\uff32" +
-    "\040\uff32\041\uff32\001\002\000\004\013\u0182\001\002\000" +
-    "\010\013\uff37\016\uff37\210\uff37\001\002\000\004\113\u0184" +
+    "\uff46\016\uff46\001\002\000\012\036\uff39\037\uff39\040\uff39" +
+    "\041\uff39\001\002\000\004\013\u017f\001\002\000\010\013" +
+    "\uff3a\016\uff3a\210\uff3a\001\002\000\012\036\uff31\037\uff31" +
+    "\040\uff31\041\uff31\001\002\000\004\013\u0182\001\002\000" +
+    "\010\013\uff36\016\uff36\210\uff36\001\002\000\004\113\u0184" +
     "\001\002\000\004\012\u0185\001\002\000\004\034\u0100\001" +
     "\002\000\004\013\u0187\001\002\000\004\017\u0188\001\002" +
     "\000\014\015\uff5c\212\uff5c\216\uff5c\307\uff5c\316\uff5c\001" +
@@ -561,233 +561,234 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\216\uff58\307\uff58\316\uff58\001\002\000\014\015\uff73\212" +
     "\uff73\216\uff73\307\uff73\316\uff73\001\002\000\004\104\u01c4" +
     "\001\002\000\004\012\u01c5\001\002\000\006\013\u01c8\033" +
-    "\u01c7\001\002\000\004\013\u01d2\001\002\000\004\022\u01ca" +
+    "\u01c7\001\002\000\004\013\u01d3\001\002\000\004\022\u01ca" +
     "\001\002\000\004\017\u01c9\001\002\000\014\015\uff72\212" +
     "\uff72\216\uff72\307\uff72\316\uff72\001\002\000\024\012\u01cb" +
-    "\065\uff47\066\uff47\067\uff47\070\uff47\125\uff47\126\uff47\127" +
-    "\uff47\230\uff47\001\002\000\022\065\uff47\066\uff47\067\uff47" +
-    "\070\uff47\125\uff47\126\uff47\127\uff47\230\uff47\001\002\000" +
-    "\004\013\uff4b\001\002\000\004\013\u01d1\001\002\000\006" +
-    "\013\uff49\016\u01cf\001\002\000\022\065\uff47\066\uff47\067" +
-    "\uff47\070\uff47\125\uff47\126\uff47\127\uff47\230\uff47\001\002" +
-    "\000\004\013\uff48\001\002\000\004\013\uff4c\001\002\000" +
-    "\004\017\u01d3\001\002\000\014\015\uff71\212\uff71\216\uff71" +
-    "\307\uff71\316\uff71\001\002\000\004\145\u0243\001\002\000" +
-    "\004\014\u021f\001\002\000\004\141\u021a\001\002\000\004" +
-    "\014\u01fb\001\002\000\004\313\u01d9\001\002\000\004\141" +
-    "\u01da\001\002\000\006\014\u01dc\017\u01db\001\002\000\014" +
-    "\015\uff0a\212\uff0a\216\uff0a\307\uff0a\316\uff0a\001\002\000" +
-    "\004\164\u01de\001\002\000\004\017\u01f9\001\002\000\012" +
-    "\007\u01e7\137\u01e4\140\u01e5\141\u01e6\001\002\000\004\015" +
-    "\u01e3\001\002\000\004\017\ufeec\001\002\000\004\017\ufeeb" +
-    "\001\002\000\004\017\ufeed\001\002\000\014\015\uff08\212" +
-    "\uff08\216\uff08\307\uff08\316\uff08\001\002\000\004\020\u01f5" +
-    "\001\002\000\004\020\u01f0\001\002\000\004\020\u01ec\001" +
-    "\002\000\004\020\u01e8\001\002\000\004\076\u01e9\001\002" +
-    "\000\004\022\u01ea\001\002\000\004\006\u01eb\001\002\000" +
-    "\004\017\ufee7\001\002\000\004\076\u01ed\001\002\000\004" +
-    "\022\u01ee\001\002\000\004\006\u01ef\001\002\000\004\017" +
-    "\ufee6\001\002\000\004\077\u01f1\001\002\000\004\022\u01f2" +
-    "\001\002\000\006\004\u01f4\010\u01f3\001\002\000\004\017" +
-    "\ufee9\001\002\000\004\017\ufee8\001\002\000\004\076\u01f6" +
-    "\001\002\000\004\022\u01f7\001\002\000\004\006\u01f8\001" +
-    "\002\000\004\017\ufeea\001\002\000\006\015\ufeef\164\u01de" +
-    "\001\002\000\004\015\ufeee\001\002\000\006\015\u01fd\221" +
-    "\u01fe\001\002\000\004\015\u0219\001\002\000\004\313\uff05" +
-    "\001\002\000\004\045\u01ff\001\002\000\004\017\u0200\001" +
-    "\002\000\004\313\u0201\001\002\000\010\046\u0203\145\u0206" +
-    "\160\u0207\001\002\000\004\015\ufefe\001\002\000\004\017" +
-    "\u0218\001\002\000\004\313\u0214\001\002\000\004\141\u020d" +
-    "\001\002\000\004\022\u0208\001\002\000\004\141\ufef8\001" +
-    "\002\000\004\141\u0209\001\002\000\004\012\u014f\001\002" +
-    "\000\004\017\u020b\001\002\000\004\313\ufefa\001\002\000" +
-    "\006\021\u0212\023\ufef9\001\002\000\012\013\uff12\016\uff12" +
-    "\021\uff12\023\uff12\001\002\000\004\023\u020f\001\002\000" +
-    "\016\004\222\005\225\012\226\141\u0145\251\231\335\221" +
-    "\001\002\000\004\017\u0211\001\002\000\004\313\ufefb\001" +
-    "\002\000\004\141\u0213\001\002\000\012\013\uff11\016\uff11" +
-    "\021\uff11\023\uff11\001\002\000\010\046\u0216\145\u0206\160" +
-    "\u0207\001\002\000\004\015\ufefc\001\002\000\004\017\u0217" +
-    "\001\002\000\004\015\ufefd\001\002\000\004\015\ufeff\001" +
-    "\002\000\004\313\uff04\001\002\000\006\014\u021c\017\u021b" +
-    "\001\002\000\014\015\uff0b\212\uff0b\216\uff0b\307\uff0b\316" +
-    "\uff0b\001\002\000\004\164\u01de\001\002\000\004\015\u021e" +
-    "\001\002\000\014\015\uff09\212\uff09\216\uff09\307\uff09\316" +
-    "\uff09\001\002\000\010\015\u0223\221\u0224\241\u0220\001\002" +
-    "\000\004\071\u023b\001\002\000\004\221\u0224\001\002\000" +
-    "\004\241\u0220\001\002\000\004\313\uff03\001\002\000\004" +
-    "\045\u0227\001\002\000\004\015\u0226\001\002\000\004\313" +
-    "\uff02\001\002\000\004\017\u0228\001\002\000\004\313\u0229" +
-    "\001\002\000\006\046\u0237\160\u0207\001\002\000\004\313" +
-    "\u022c\001\002\000\006\015\ufef3\241\ufef3\001\002\000\006" +
-    "\046\u022e\160\u0207\001\002\000\006\015\ufef1\241\ufef1\001" +
-    "\002\000\004\017\u0236\001\002\000\004\141\u020d\001\002" +
-    "\000\006\021\u0212\023\u0231\001\002\000\004\071\u0232\001" +
-    "\002\000\004\021\u0233\001\002\000\004\141\u0234\001\002" +
-    "\000\004\017\u0235\001\002\000\004\313\ufef0\001\002\000" +
-    "\006\015\ufef2\241\ufef2\001\002\000\004\017\u0238\001\002" +
-    "\000\006\015\ufef4\241\ufef4\001\002\000\004\015\ufef6\001" +
-    "\002\000\004\015\ufef7\001\002\000\004\020\u023c\001\002" +
-    "\000\004\141\u023d\001\002\000\004\022\u023e\001\002\000" +
-    "\004\040\u023f\001\002\000\004\156\u0240\001\002\000\004" +
-    "\141\u0241\001\002\000\004\017\u0242\001\002\000\006\015" +
-    "\ufef5\221\ufef5\001\002\000\004\020\u0244\001\002\000\006" +
-    "\117\u0245\120\u0246\001\002\000\004\014\uff00\001\002\000" +
-    "\004\014\uff01\001\002\000\014\015\uff68\212\uff68\216\uff68" +
-    "\307\uff68\316\uff68\001\002\000\004\110\u0249\001\002\000" +
-    "\004\012\u024a\001\002\000\006\013\u024c\034\u0100\001\002" +
-    "\000\004\013\u024e\001\002\000\004\017\u024d\001\002\000" +
-    "\014\015\uff67\212\uff67\216\uff67\307\uff67\316\uff67\001\002" +
-    "\000\004\017\u024f\001\002\000\014\015\uff66\212\uff66\216" +
-    "\uff66\307\uff66\316\uff66\001\002\000\004\111\u0251\001\002" +
-    "\000\004\012\u0252\001\002\000\006\034\u0100\035\u0253\001" +
-    "\002\000\004\022\u0260\001\002\000\004\016\u025c\001\002" +
-    "\000\006\013\u0257\016\u0256\001\002\000\004\034\u0100\001" +
-    "\002\000\004\017\u0258\001\002\000\014\015\uff62\212\uff62" +
-    "\216\uff62\307\uff62\316\uff62\001\002\000\004\013\u025a\001" +
-    "\002\000\004\017\u025b\001\002\000\014\015\uff64\212\uff64" +
-    "\216\uff64\307\uff64\316\uff64\001\002\000\004\035\u0253\001" +
-    "\002\000\004\013\u025e\001\002\000\004\017\u025f\001\002" +
-    "\000\014\015\uff63\212\uff63\216\uff63\307\uff63\316\uff63\001" +
-    "\002\000\004\072\u0261\001\002\000\004\012\u0262\001\002" +
-    "\000\006\042\u0263\043\u0266\001\002\000\004\022\u0270\001" +
-    "\002\000\004\016\u026d\001\002\000\004\022\u026b\001\002" +
-    "\000\004\022\uff13\001\002\000\004\016\u0268\001\002\000" +
-    "\004\042\u0263\001\002\000\004\013\u026a\001\002\000\006" +
-    "\013\uff16\016\uff16\001\002\000\004\141\u020d\001\002\000" +
-    "\010\013\uff14\016\uff14\021\u0212\001\002\000\004\043\u0266" +
-    "\001\002\000\004\013\u026f\001\002\000\006\013\uff15\016" +
-    "\uff15\001\002\000\004\073\u0271\001\002\000\004\012\u0273" +
-    "\001\002\000\006\013\uff10\016\uff10\001\002\000\016\004" +
-    "\222\005\225\012\226\141\223\251\231\335\221\001\002" +
-    "\000\036\011\241\016\u0275\155\234\255\246\334\240\335" +
-    "\233\336\236\337\242\340\235\341\237\342\244\343\243" +
-    "\344\247\345\245\001\002\000\016\004\222\005\225\012" +
-    "\226\141\223\251\231\335\221\001\002\000\036\011\241" +
-    "\013\u0277\155\234\255\246\334\240\335\233\336\236\337" +
-    "\242\340\235\341\237\342\244\343\243\344\247\345\245" +
-    "\001\002\000\006\013\uff0f\016\uff0f\001\002\000\014\015" +
-    "\uff77\212\uff77\216\uff77\307\uff77\316\uff77\001\002\000\004" +
-    "\106\u027a\001\002\000\004\012\u027b\001\002\000\006\013" +
-    "\u027d\034\u0100\001\002\000\004\013\u027f\001\002\000\004" +
-    "\017\u027e\001\002\000\014\015\uff76\212\uff76\216\uff76\307" +
-    "\uff76\316\uff76\001\002\000\004\017\u0280\001\002\000\014" +
-    "\015\uff75\212\uff75\216\uff75\307\uff75\316\uff75\001\002\000" +
-    "\004\112\u0282\001\002\000\004\012\u0283\001\002\000\006" +
-    "\034\u0100\035\u0284\001\002\000\004\022\u0291\001\002\000" +
-    "\006\013\u028c\016\u028b\001\002\000\004\016\u0287\001\002" +
-    "\000\004\035\u0284\001\002\000\004\013\u0289\001\002\000" +
-    "\004\017\u028a\001\002\000\014\015\uff5f\212\uff5f\216\uff5f" +
-    "\307\uff5f\316\uff5f\001\002\000\004\034\u0100\001\002\000" +
-    "\004\017\u028d\001\002\000\014\015\uff60\212\uff60\216\uff60" +
-    "\307\uff60\316\uff60\001\002\000\004\013\u028f\001\002\000" +
-    "\004\017\u0290\001\002\000\014\015\uff5e\212\uff5e\216\uff5e" +
-    "\307\uff5e\316\uff5e\001\002\000\004\072\u0292\001\002\000" +
-    "\004\012\u0293\001\002\000\006\042\u0294\043\u0266\001\002" +
-    "\000\004\022\u029d\001\002\000\004\016\u029a\001\002\000" +
-    "\004\016\u0297\001\002\000\004\042\u0294\001\002\000\004" +
-    "\013\u0299\001\002\000\006\013\uff0e\016\uff0e\001\002\000" +
-    "\004\043\u0266\001\002\000\004\013\u029c\001\002\000\006" +
-    "\013\uff0d\016\uff0d\001\002\000\004\141\u029e\001\002\000" +
-    "\004\021\u029f\001\002\000\004\044\u02a0\001\002\000\004" +
-    "\012\u02a1\001\002\000\004\013\u02a2\001\002\000\006\013" +
-    "\uff0c\016\uff0c\001\002\000\004\141\u02a4\001\002\000\004" +
-    "\020\u02a5\001\002\000\004\105\u02a6\001\002\000\006\017" +
-    "\uff6d\022\uff6d\001\002\000\004\020\u02a8\001\002\000\004" +
-    "\102\u02a9\001\002\000\004\014\uff97\001\002\000\024\015" +
-    "\uffab\145\uffab\164\uffab\166\uffab\171\uffab\215\uffab\232\uffab" +
-    "\262\uffab\270\uffab\001\002\000\024\015\uffaa\145\uffaa\164" +
-    "\uffaa\166\uffaa\171\uffaa\215\uffaa\232\uffaa\262\uffaa\270\uffaa" +
-    "\001\002\000\010\015\u02af\164\275\301\u02ae\001\002\000" +
-    "\004\015\u02b6\001\002\000\004\020\u02b3\001\002\000\020" +
-    "\015\uff96\145\uff96\164\uff96\171\uff96\215\uff96\262\uff96\270" +
-    "\uff96\001\002\000\010\015\uff93\164\275\301\u02ae\001\002" +
-    "\000\010\015\uff91\164\uff91\301\uff91\001\002\000\004\015" +
-    "\uff92\001\002\000\010\074\315\075\316\141\313\001\002" +
-    "\000\004\017\u02b5\001\002\000\010\015\uff90\164\uff90\301" +
-    "\uff90\001\002\000\020\015\uff95\145\uff95\164\uff95\171\uff95" +
-    "\215\uff95\262\uff95\270\uff95\001\002\000\004\020\u02b8\001" +
-    "\002\000\004\103\u02b9\001\002\000\004\014\uff94\001\002" +
-    "\000\004\023\u02bf\001\002\000\016\004\222\005\225\012" +
-    "\226\141\223\251\231\335\221\001\002\000\020\015\uffa2" +
-    "\145\uffa2\164\uffa2\171\uffa2\215\uffa2\262\uffa2\270\uffa2\001" +
-    "\002\000\036\011\241\017\u02be\155\234\255\246\334\240" +
-    "\335\233\336\236\337\242\340\235\341\237\342\244\343" +
-    "\243\344\247\345\245\001\002\000\020\015\uffa1\145\uffa1" +
-    "\164\uffa1\171\uffa1\215\uffa1\262\uffa1\270\uffa1\001\002\000" +
-    "\016\004\222\005\225\012\226\141\223\251\231\335\221" +
-    "\001\002\000\036\011\241\017\u02c1\155\234\255\246\334" +
-    "\240\335\233\336\236\337\242\340\235\341\237\342\244" +
-    "\343\243\344\247\345\245\001\002\000\020\015\uffa0\145" +
-    "\uffa0\164\uffa0\171\uffa0\215\uffa0\262\uffa0\270\uffa0\001\002" +
-    "\000\004\020\u02c3\001\002\000\010\074\315\075\316\141" +
-    "\313\001\002\000\010\017\uff9f\023\uff9f\202\uff9f\001\002" +
-    "\000\004\141\u02c6\001\002\000\004\020\u02c7\001\002\000" +
-    "\010\074\315\075\316\141\313\001\002\000\006\017\uff9c" +
-    "\023\uff9c\001\002\000\004\121\u02ca\001\002\000\004\020" +
-    "\u02cb\001\002\000\004\116\u02cc\001\002\000\006\014\uff88" +
-    "\017\uff88\001\002\000\006\062\u02cf\063\u02ce\001\002\000" +
-    "\004\165\u02dc\001\002\000\004\165\u02d0\001\002\000\004" +
-    "\141\u02d1\001\002\000\006\021\u02d2\022\u02d3\001\002\000" +
-    "\004\141\u02d8\001\002\000\004\141\u02d4\001\002\000\004" +
-    "\021\u02d5\001\002\000\004\141\u02d6\001\002\000\004\017" +
-    "\u02d7\001\002\000\014\015\uffc2\164\uffc2\166\uffc2\232\uffc2" +
-    "\262\uffc2\001\002\000\004\022\u02d9\001\002\000\004\141" +
-    "\u02da\001\002\000\004\017\u02db\001\002\000\014\015\uffc3" +
-    "\164\uffc3\166\uffc3\232\uffc3\262\uffc3\001\002\000\004\141" +
-    "\u02dd\001\002\000\006\021\u02de\022\u02df\001\002\000\004" +
-    "\141\u02e4\001\002\000\004\141\u02e0\001\002\000\004\021" +
-    "\u02e1\001\002\000\004\141\u02e2\001\002\000\004\017\u02e3" +
-    "\001\002\000\014\015\uffc0\164\uffc0\166\uffc0\232\uffc0\262" +
-    "\uffc0\001\002\000\004\022\u02e5\001\002\000\004\141\u02e6" +
-    "\001\002\000\004\017\u02e7\001\002\000\014\015\uffc1\164" +
-    "\uffc1\166\uffc1\232\uffc1\262\uffc1\001\002\000\006\015\u02ea" +
-    "\164\275\001\002\000\004\015\u02eb\001\002\000\014\015" +
-    "\uffe9\164\uffe9\166\uffe9\232\uffe9\262\uffe9\001\002\000\014" +
-    "\015\uffea\164\uffea\166\uffea\232\uffea\262\uffea\001\002\000" +
-    "\004\265\u02ef\001\002\000\014\015\uffbd\164\uffbd\166\uffbd" +
-    "\232\uffbd\262\uffbd\001\002\000\006\015\u02fb\164\275\001" +
-    "\002\000\004\262\u02f0\001\002\000\004\041\u02f1\001\002" +
-    "\000\006\020\u02f3\022\u02f2\001\002\000\004\141\u02f8\001" +
-    "\002\000\004\055\u02f4\001\002\000\004\022\u02f5\001\002" +
-    "\000\004\141\u02f6\001\002\000\004\017\u02f7\001\002\000" +
-    "\006\015\uffb8\164\uffb8\001\002\000\004\017\u02f9\001\002" +
-    "\000\006\015\uffb7\164\uffb7\001\002\000\004\015\u02fc\001" +
-    "\002\000\014\015\uffbb\164\uffbb\166\uffbb\232\uffbb\262\uffbb" +
-    "\001\002\000\014\015\uffba\164\uffba\166\uffba\232\uffba\262" +
-    "\uffba\001\002\000\004\015\u02fe\001\002\000\014\015\uffb9" +
-    "\164\uffb9\166\uffb9\232\uffb9\262\uffb9\001\002\000\014\015" +
-    "\uffb6\164\uffb6\166\uffb6\232\uffb6\262\uffb6\001\002\000\006" +
-    "\015\u0303\164\u0301\001\002\000\004\141\u0307\001\002\000" +
-    "\014\015\uffb4\164\uffb4\166\uffb4\232\uffb4\262\uffb4\001\002" +
-    "\000\014\015\uffb5\164\uffb5\166\uffb5\232\uffb5\262\uffb5\001" +
-    "\002\000\006\015\u0306\164\u0301\001\002\000\014\015\uffb0" +
-    "\164\uffb0\166\uffb0\232\uffb0\262\uffb0\001\002\000\014\015" +
-    "\uffb1\164\uffb1\166\uffb1\232\uffb1\262\uffb1\001\002\000\004" +
-    "\271\u0308\001\002\000\004\141\u0309\001\002\000\004\017" +
-    "\u030a\001\002\000\006\015\uffaf\164\uffaf\001\002\000\006" +
-    "\013\uffd3\016\uffd3\001\002\000\004\022\u0323\001\002\000" +
-    "\004\022\u0321\001\002\000\004\013\u031f\001\002\000\006" +
-    "\013\uffd4\016\uffd4\001\002\000\006\013\uffd1\016\uffd1\001" +
-    "\002\000\006\013\uffd7\016\u031d\001\002\000\006\013\uffd2" +
-    "\016\uffd2\001\002\000\004\022\u031b\001\002\000\004\022" +
-    "\u0319\001\002\000\004\022\u0317\001\002\000\006\013\uffd5" +
-    "\016\uffd5\001\002\000\004\004\u0318\001\002\000\006\013" +
-    "\uffcd\016\uffcd\001\002\000\004\141\u031a\001\002\000\006" +
-    "\013\uffd0\016\uffd0\001\002\000\004\005\u031c\001\002\000" +
-    "\006\013\uffcc\016\uffcc\001\002\000\014\025\u0313\026\u0315" +
-    "\027\u030d\031\u0314\032\u030c\001\002\000\004\013\uffd6\001" +
-    "\002\000\004\017\u0320\001\002\000\014\015\uffdd\164\uffdd" +
-    "\166\uffdd\232\uffdd\262\uffdd\001\002\000\004\005\u0322\001" +
-    "\002\000\006\013\uffce\016\uffce\001\002\000\004\141\u0324" +
-    "\001\002\000\006\013\uffcf\016\uffcf\001\002\000\004\015" +
-    "\ufffd\001\002\000\004\013\u0327\001\002\000\004\017\u0328" +
-    "\001\002\000\014\015\uffd9\164\uffd9\166\uffd9\232\uffd9\262" +
-    "\uffd9\001\002\000\004\141\u032a\001\002\000\006\305\136" +
-    "\333\140\001\002\000\004\100\u032c\001\002\000\004\014" +
-    "\uffe8\001\002\000\004\013\u032e\001\002\000\004\017\u032f" +
-    "\001\002\000\014\015\uffdb\164\uffdb\166\uffdb\232\uffdb\262" +
-    "\uffdb\001\002\000\004\002\000\001\002" });
+    "\065\uff44\066\uff44\067\uff44\070\uff44\125\uff44\126\uff44\127" +
+    "\uff44\230\uff44\001\002\000\024\013\u01cf\065\uff44\066\uff44" +
+    "\067\uff44\070\uff44\125\uff44\126\uff44\127\uff44\230\uff44\001" +
+    "\002\000\004\013\uff4a\001\002\000\004\013\u01d2\001\002" +
+    "\000\006\013\uff48\016\u01d0\001\002\000\004\013\uff4c\001" +
+    "\002\000\022\065\uff44\066\uff44\067\uff44\070\uff44\125\uff44" +
+    "\126\uff44\127\uff44\230\uff44\001\002\000\004\013\uff47\001" +
+    "\002\000\004\013\uff4b\001\002\000\004\017\u01d4\001\002" +
+    "\000\014\015\uff71\212\uff71\216\uff71\307\uff71\316\uff71\001" +
+    "\002\000\004\145\u0244\001\002\000\004\014\u0220\001\002" +
+    "\000\004\141\u021b\001\002\000\004\014\u01fc\001\002\000" +
+    "\004\313\u01da\001\002\000\004\141\u01db\001\002\000\006" +
+    "\014\u01dd\017\u01dc\001\002\000\014\015\uff09\212\uff09\216" +
+    "\uff09\307\uff09\316\uff09\001\002\000\004\164\u01df\001\002" +
+    "\000\004\017\u01fa\001\002\000\012\007\u01e8\137\u01e5\140" +
+    "\u01e6\141\u01e7\001\002\000\004\015\u01e4\001\002\000\004" +
+    "\017\ufeea\001\002\000\004\017\ufeeb\001\002\000\004\017" +
+    "\ufeec\001\002\000\014\015\uff07\212\uff07\216\uff07\307\uff07" +
+    "\316\uff07\001\002\000\004\020\u01f6\001\002\000\004\020" +
+    "\u01f1\001\002\000\004\020\u01ed\001\002\000\004\020\u01e9" +
+    "\001\002\000\004\076\u01ea\001\002\000\004\022\u01eb\001" +
+    "\002\000\004\006\u01ec\001\002\000\004\017\ufee6\001\002" +
+    "\000\004\076\u01ee\001\002\000\004\022\u01ef\001\002\000" +
+    "\004\006\u01f0\001\002\000\004\017\ufee5\001\002\000\004" +
+    "\077\u01f2\001\002\000\004\022\u01f3\001\002\000\006\004" +
+    "\u01f5\010\u01f4\001\002\000\004\017\ufee8\001\002\000\004" +
+    "\017\ufee7\001\002\000\004\076\u01f7\001\002\000\004\022" +
+    "\u01f8\001\002\000\004\006\u01f9\001\002\000\004\017\ufee9" +
+    "\001\002\000\006\015\ufeee\164\u01df\001\002\000\004\015" +
+    "\ufeed\001\002\000\006\015\u01fe\221\u01ff\001\002\000\004" +
+    "\015\u021a\001\002\000\004\313\uff04\001\002\000\004\045" +
+    "\u0200\001\002\000\004\017\u0201\001\002\000\004\313\u0202" +
+    "\001\002\000\010\046\u0204\145\u0207\160\u0208\001\002\000" +
+    "\004\015\ufefd\001\002\000\004\017\u0219\001\002\000\004" +
+    "\313\u0215\001\002\000\004\141\u020e\001\002\000\004\022" +
+    "\u0209\001\002\000\004\141\ufef8\001\002\000\004\141\u020a" +
+    "\001\002\000\004\012\u014f\001\002\000\004\017\u020c\001" +
+    "\002\000\004\313\ufef9\001\002\000\006\021\u0213\023\ufef7" +
+    "\001\002\000\012\013\uff13\016\uff13\021\uff13\023\uff13\001" +
+    "\002\000\004\023\u0210\001\002\000\016\004\222\005\224" +
+    "\012\226\141\u0145\251\230\335\221\001\002\000\004\017" +
+    "\u0212\001\002\000\004\313\ufefa\001\002\000\004\141\u0214" +
+    "\001\002\000\012\013\uff12\016\uff12\021\uff12\023\uff12\001" +
+    "\002\000\010\046\u0217\145\u0207\160\u0208\001\002\000\004" +
+    "\015\ufefb\001\002\000\004\017\u0218\001\002\000\004\015" +
+    "\ufefc\001\002\000\004\015\ufefe\001\002\000\004\313\uff03" +
+    "\001\002\000\006\014\u021d\017\u021c\001\002\000\014\015" +
+    "\uff0a\212\uff0a\216\uff0a\307\uff0a\316\uff0a\001\002\000\004" +
+    "\164\u01df\001\002\000\004\015\u021f\001\002\000\014\015" +
+    "\uff08\212\uff08\216\uff08\307\uff08\316\uff08\001\002\000\010" +
+    "\015\u0224\221\u0226\241\u0222\001\002\000\004\221\u0226\001" +
+    "\002\000\004\071\u023b\001\002\000\004\241\u0222\001\002" +
+    "\000\004\313\uff02\001\002\000\004\015\u0239\001\002\000" +
+    "\004\045\u0227\001\002\000\004\017\u0228\001\002\000\004" +
+    "\313\u0229\001\002\000\006\046\u0237\160\u0208\001\002\000" +
+    "\004\313\u022c\001\002\000\006\015\ufef2\241\ufef2\001\002" +
+    "\000\006\046\u022e\160\u0208\001\002\000\006\015\ufef0\241" +
+    "\ufef0\001\002\000\004\017\u0236\001\002\000\004\141\u020e" +
+    "\001\002\000\006\021\u0213\023\u0231\001\002\000\004\071" +
+    "\u0232\001\002\000\004\021\u0233\001\002\000\004\141\u0234" +
+    "\001\002\000\004\017\u0235\001\002\000\004\313\ufeef\001" +
+    "\002\000\006\015\ufef1\241\ufef1\001\002\000\004\017\u0238" +
+    "\001\002\000\006\015\ufef3\241\ufef3\001\002\000\004\313" +
+    "\uff01\001\002\000\004\015\ufef5\001\002\000\004\020\u023c" +
+    "\001\002\000\004\141\u023d\001\002\000\004\022\u023e\001" +
+    "\002\000\004\040\u023f\001\002\000\004\156\u0240\001\002" +
+    "\000\004\141\u0241\001\002\000\004\017\u0242\001\002\000" +
+    "\006\015\ufef4\221\ufef4\001\002\000\004\015\ufef6\001\002" +
+    "\000\004\020\u0245\001\002\000\006\117\u0246\120\u0247\001" +
+    "\002\000\004\014\ufeff\001\002\000\004\014\uff00\001\002" +
+    "\000\014\015\uff68\212\uff68\216\uff68\307\uff68\316\uff68\001" +
+    "\002\000\004\110\u024a\001\002\000\004\012\u024b\001\002" +
+    "\000\006\013\u024d\034\u0100\001\002\000\004\013\u024f\001" +
+    "\002\000\004\017\u024e\001\002\000\014\015\uff67\212\uff67" +
+    "\216\uff67\307\uff67\316\uff67\001\002\000\004\017\u0250\001" +
+    "\002\000\014\015\uff66\212\uff66\216\uff66\307\uff66\316\uff66" +
+    "\001\002\000\004\111\u0252\001\002\000\004\012\u0253\001" +
+    "\002\000\006\034\u0100\035\u0254\001\002\000\004\022\u0261" +
+    "\001\002\000\004\016\u025d\001\002\000\006\013\u0258\016" +
+    "\u0257\001\002\000\004\034\u0100\001\002\000\004\017\u0259" +
+    "\001\002\000\014\015\uff62\212\uff62\216\uff62\307\uff62\316" +
+    "\uff62\001\002\000\004\013\u025b\001\002\000\004\017\u025c" +
+    "\001\002\000\014\015\uff64\212\uff64\216\uff64\307\uff64\316" +
+    "\uff64\001\002\000\004\035\u0254\001\002\000\004\013\u025f" +
+    "\001\002\000\004\017\u0260\001\002\000\014\015\uff63\212" +
+    "\uff63\216\uff63\307\uff63\316\uff63\001\002\000\004\072\u0262" +
+    "\001\002\000\004\012\u0263\001\002\000\006\042\u0264\043" +
+    "\u0266\001\002\000\004\022\u0271\001\002\000\004\016\u026e" +
+    "\001\002\000\004\022\uff14\001\002\000\004\016\u026b\001" +
+    "\002\000\004\022\u0269\001\002\000\004\141\u020e\001\002" +
+    "\000\010\013\uff15\016\uff15\021\u0213\001\002\000\004\042" +
+    "\u0264\001\002\000\004\013\u026d\001\002\000\006\013\uff11" +
+    "\016\uff11\001\002\000\004\043\u0266\001\002\000\004\013" +
+    "\u0270\001\002\000\006\013\uff10\016\uff10\001\002\000\004" +
+    "\073\u0272\001\002\000\004\012\u0274\001\002\000\006\013" +
+    "\uff0f\016\uff0f\001\002\000\016\004\222\005\224\012\226" +
+    "\141\223\251\230\335\221\001\002\000\036\011\241\016" +
+    "\u0276\155\234\255\246\334\240\335\233\336\235\337\242" +
+    "\340\236\341\237\342\245\343\243\344\247\345\244\001" +
+    "\002\000\016\004\222\005\224\012\226\141\223\251\230" +
+    "\335\221\001\002\000\036\011\241\013\u0278\155\234\255" +
+    "\246\334\240\335\233\336\235\337\242\340\236\341\237" +
+    "\342\245\343\243\344\247\345\244\001\002\000\006\013" +
+    "\uff0e\016\uff0e\001\002\000\014\015\uff77\212\uff77\216\uff77" +
+    "\307\uff77\316\uff77\001\002\000\004\106\u027b\001\002\000" +
+    "\004\012\u027c\001\002\000\006\013\u027e\034\u0100\001\002" +
+    "\000\004\013\u0280\001\002\000\004\017\u027f\001\002\000" +
+    "\014\015\uff76\212\uff76\216\uff76\307\uff76\316\uff76\001\002" +
+    "\000\004\017\u0281\001\002\000\014\015\uff75\212\uff75\216" +
+    "\uff75\307\uff75\316\uff75\001\002\000\004\112\u0283\001\002" +
+    "\000\004\012\u0284\001\002\000\006\034\u0100\035\u0285\001" +
+    "\002\000\004\022\u0292\001\002\000\006\013\u028d\016\u028c" +
+    "\001\002\000\004\016\u0288\001\002\000\004\035\u0285\001" +
+    "\002\000\004\013\u028a\001\002\000\004\017\u028b\001\002" +
+    "\000\014\015\uff5f\212\uff5f\216\uff5f\307\uff5f\316\uff5f\001" +
+    "\002\000\004\034\u0100\001\002\000\004\017\u028e\001\002" +
+    "\000\014\015\uff60\212\uff60\216\uff60\307\uff60\316\uff60\001" +
+    "\002\000\004\013\u0290\001\002\000\004\017\u0291\001\002" +
+    "\000\014\015\uff5e\212\uff5e\216\uff5e\307\uff5e\316\uff5e\001" +
+    "\002\000\004\072\u0293\001\002\000\004\012\u0294\001\002" +
+    "\000\006\042\u0295\043\u0266\001\002\000\004\022\u029e\001" +
+    "\002\000\004\016\u029b\001\002\000\004\016\u0298\001\002" +
+    "\000\004\043\u0266\001\002\000\004\013\u029a\001\002\000" +
+    "\006\013\uff0c\016\uff0c\001\002\000\004\042\u0295\001\002" +
+    "\000\004\013\u029d\001\002\000\006\013\uff0d\016\uff0d\001" +
+    "\002\000\004\141\u029f\001\002\000\004\021\u02a0\001\002" +
+    "\000\004\044\u02a1\001\002\000\004\012\u02a2\001\002\000" +
+    "\004\013\u02a3\001\002\000\006\013\uff0b\016\uff0b\001\002" +
+    "\000\004\141\u02a5\001\002\000\004\020\u02a6\001\002\000" +
+    "\004\105\u02a7\001\002\000\006\017\uff6d\022\uff6d\001\002" +
+    "\000\004\020\u02a9\001\002\000\004\102\u02aa\001\002\000" +
+    "\004\014\uff97\001\002\000\024\015\uffab\145\uffab\164\uffab" +
+    "\166\uffab\171\uffab\215\uffab\232\uffab\262\uffab\270\uffab\001" +
+    "\002\000\024\015\uffaa\145\uffaa\164\uffaa\166\uffaa\171\uffaa" +
+    "\215\uffaa\232\uffaa\262\uffaa\270\uffaa\001\002\000\010\015" +
+    "\u02b0\164\275\301\u02af\001\002\000\004\015\u02b7\001\002" +
+    "\000\004\020\u02b4\001\002\000\020\015\uff96\145\uff96\164" +
+    "\uff96\171\uff96\215\uff96\262\uff96\270\uff96\001\002\000\010" +
+    "\015\uff93\164\275\301\u02af\001\002\000\010\015\uff91\164" +
+    "\uff91\301\uff91\001\002\000\004\015\uff92\001\002\000\010" +
+    "\074\315\075\316\141\313\001\002\000\004\017\u02b6\001" +
+    "\002\000\010\015\uff90\164\uff90\301\uff90\001\002\000\020" +
+    "\015\uff95\145\uff95\164\uff95\171\uff95\215\uff95\262\uff95\270" +
+    "\uff95\001\002\000\004\020\u02b9\001\002\000\004\103\u02ba" +
+    "\001\002\000\004\014\uff94\001\002\000\004\023\u02c0\001" +
+    "\002\000\016\004\222\005\224\012\226\141\223\251\230" +
+    "\335\221\001\002\000\020\015\uffa2\145\uffa2\164\uffa2\171" +
+    "\uffa2\215\uffa2\262\uffa2\270\uffa2\001\002\000\036\011\241" +
+    "\017\u02bf\155\234\255\246\334\240\335\233\336\235\337" +
+    "\242\340\236\341\237\342\245\343\243\344\247\345\244" +
+    "\001\002\000\020\015\uffa1\145\uffa1\164\uffa1\171\uffa1\215" +
+    "\uffa1\262\uffa1\270\uffa1\001\002\000\016\004\222\005\224" +
+    "\012\226\141\223\251\230\335\221\001\002\000\036\011" +
+    "\241\017\u02c2\155\234\255\246\334\240\335\233\336\235" +
+    "\337\242\340\236\341\237\342\245\343\243\344\247\345" +
+    "\244\001\002\000\020\015\uffa0\145\uffa0\164\uffa0\171\uffa0" +
+    "\215\uffa0\262\uffa0\270\uffa0\001\002\000\004\020\u02c4\001" +
+    "\002\000\010\074\315\075\316\141\313\001\002\000\010" +
+    "\017\uff9f\023\uff9f\202\uff9f\001\002\000\004\141\u02c7\001" +
+    "\002\000\004\020\u02c8\001\002\000\010\074\315\075\316" +
+    "\141\313\001\002\000\006\017\uff9c\023\uff9c\001\002\000" +
+    "\004\121\u02cb\001\002\000\004\020\u02cc\001\002\000\004" +
+    "\116\u02cd\001\002\000\006\014\uff88\017\uff88\001\002\000" +
+    "\006\062\u02d0\063\u02cf\001\002\000\004\165\u02dd\001\002" +
+    "\000\004\165\u02d1\001\002\000\004\141\u02d2\001\002\000" +
+    "\006\021\u02d3\022\u02d4\001\002\000\004\141\u02d9\001\002" +
+    "\000\004\141\u02d5\001\002\000\004\021\u02d6\001\002\000" +
+    "\004\141\u02d7\001\002\000\004\017\u02d8\001\002\000\014" +
+    "\015\uffc2\164\uffc2\166\uffc2\232\uffc2\262\uffc2\001\002\000" +
+    "\004\022\u02da\001\002\000\004\141\u02db\001\002\000\004" +
+    "\017\u02dc\001\002\000\014\015\uffc3\164\uffc3\166\uffc3\232" +
+    "\uffc3\262\uffc3\001\002\000\004\141\u02de\001\002\000\006" +
+    "\021\u02df\022\u02e0\001\002\000\004\141\u02e5\001\002\000" +
+    "\004\141\u02e1\001\002\000\004\021\u02e2\001\002\000\004" +
+    "\141\u02e3\001\002\000\004\017\u02e4\001\002\000\014\015" +
+    "\uffc0\164\uffc0\166\uffc0\232\uffc0\262\uffc0\001\002\000\004" +
+    "\022\u02e6\001\002\000\004\141\u02e7\001\002\000\004\017" +
+    "\u02e8\001\002\000\014\015\uffc1\164\uffc1\166\uffc1\232\uffc1" +
+    "\262\uffc1\001\002\000\006\015\u02eb\164\275\001\002\000" +
+    "\004\015\u02ec\001\002\000\014\015\uffe9\164\uffe9\166\uffe9" +
+    "\232\uffe9\262\uffe9\001\002\000\014\015\uffea\164\uffea\166" +
+    "\uffea\232\uffea\262\uffea\001\002\000\004\265\u02f0\001\002" +
+    "\000\014\015\uffbd\164\uffbd\166\uffbd\232\uffbd\262\uffbd\001" +
+    "\002\000\006\015\u02fc\164\275\001\002\000\004\262\u02f1" +
+    "\001\002\000\004\041\u02f2\001\002\000\006\020\u02f4\022" +
+    "\u02f3\001\002\000\004\141\u02f9\001\002\000\004\055\u02f5" +
+    "\001\002\000\004\022\u02f6\001\002\000\004\141\u02f7\001" +
+    "\002\000\004\017\u02f8\001\002\000\006\015\uffb8\164\uffb8" +
+    "\001\002\000\004\017\u02fa\001\002\000\006\015\uffb7\164" +
+    "\uffb7\001\002\000\004\015\u02fd\001\002\000\014\015\uffbb" +
+    "\164\uffbb\166\uffbb\232\uffbb\262\uffbb\001\002\000\014\015" +
+    "\uffba\164\uffba\166\uffba\232\uffba\262\uffba\001\002\000\004" +
+    "\015\u02ff\001\002\000\014\015\uffb9\164\uffb9\166\uffb9\232" +
+    "\uffb9\262\uffb9\001\002\000\014\015\uffb6\164\uffb6\166\uffb6" +
+    "\232\uffb6\262\uffb6\001\002\000\006\015\u0304\164\u0302\001" +
+    "\002\000\004\141\u0308\001\002\000\014\015\uffb4\164\uffb4" +
+    "\166\uffb4\232\uffb4\262\uffb4\001\002\000\014\015\uffb5\164" +
+    "\uffb5\166\uffb5\232\uffb5\262\uffb5\001\002\000\006\015\u0307" +
+    "\164\u0302\001\002\000\014\015\uffb0\164\uffb0\166\uffb0\232" +
+    "\uffb0\262\uffb0\001\002\000\014\015\uffb1\164\uffb1\166\uffb1" +
+    "\232\uffb1\262\uffb1\001\002\000\004\271\u0309\001\002\000" +
+    "\004\141\u030a\001\002\000\004\017\u030b\001\002\000\006" +
+    "\015\uffaf\164\uffaf\001\002\000\006\013\uffd3\016\uffd3\001" +
+    "\002\000\004\022\u0324\001\002\000\004\022\u0322\001\002" +
+    "\000\004\013\u0320\001\002\000\006\013\uffd4\016\uffd4\001" +
+    "\002\000\006\013\uffd1\016\uffd1\001\002\000\006\013\uffd7" +
+    "\016\u031e\001\002\000\006\013\uffd2\016\uffd2\001\002\000" +
+    "\004\022\u031c\001\002\000\004\022\u031a\001\002\000\004" +
+    "\022\u0318\001\002\000\006\013\uffd5\016\uffd5\001\002\000" +
+    "\004\004\u0319\001\002\000\006\013\uffcd\016\uffcd\001\002" +
+    "\000\004\141\u031b\001\002\000\006\013\uffd0\016\uffd0\001" +
+    "\002\000\004\005\u031d\001\002\000\006\013\uffcc\016\uffcc" +
+    "\001\002\000\014\025\u0314\026\u0316\027\u030e\031\u0315\032" +
+    "\u030d\001\002\000\004\013\uffd6\001\002\000\004\017\u0321" +
+    "\001\002\000\014\015\uffdd\164\uffdd\166\uffdd\232\uffdd\262" +
+    "\uffdd\001\002\000\004\005\u0323\001\002\000\006\013\uffce" +
+    "\016\uffce\001\002\000\004\141\u0325\001\002\000\006\013" +
+    "\uffcf\016\uffcf\001\002\000\004\015\ufffd\001\002\000\004" +
+    "\013\u0328\001\002\000\004\017\u0329\001\002\000\014\015" +
+    "\uffd9\164\uffd9\166\uffd9\232\uffd9\262\uffd9\001\002\000\004" +
+    "\141\u032b\001\002\000\006\305\136\333\140\001\002\000" +
+    "\004\100\u032d\001\002\000\004\014\uffe8\001\002\000\004" +
+    "\013\u032f\001\002\000\004\017\u0330\001\002\000\014\015" +
+    "\uffdb\164\uffdb\166\uffdb\232\uffdb\262\uffdb\001\002\000\004" +
+    "\002\000\001\002" });
 
   /** Access to parse-action table. */
   @Override
@@ -796,7 +797,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
   /** <code>reduce_goto</code> table. */
   protected static final short[][] _reduce_table = 
     unpackFromStrings(new String[] {
-    "\000\u032e\000\004\004\003\001\001\000\002\001\001\000" +
+    "\000\u032f\000\004\004\003\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\066\005\041\006\021" +
     "\011\011\013\035\014\036\017\024\020\043\021\013\022" +
     "\012\032\031\033\016\034\020\035\044\036\023\037\022" +
@@ -804,19 +805,19 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\030\053\034\054\032\055\042\056\040\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\020\023\u032c\024\u0310\025\u0315\026\u030e\027\u030a\030" +
-    "\u0311\031\u030f\001\001\000\002\001\001\000\020\023\u0325" +
-    "\024\u0310\025\u0315\026\u030e\027\u030a\030\u0311\031\u030f\001" +
-    "\001\000\066\005\u0324\006\021\011\011\013\035\014\036" +
+    "\000\020\023\u032d\024\u0311\025\u0316\026\u030f\027\u030b\030" +
+    "\u0312\031\u0310\001\001\000\002\001\001\000\020\023\u0326" +
+    "\024\u0311\025\u0316\026\u030f\027\u030b\030\u0312\031\u0310\001" +
+    "\001\000\066\005\u0325\006\021\011\011\013\035\014\036" +
     "\017\024\020\043\021\013\022\012\032\031\033\016\034" +
     "\020\035\044\036\023\037\022\040\026\041\010\042\015" +
     "\043\025\044\033\045\014\046\030\053\034\054\032\055" +
     "\042\056\040\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\020\023\u030d\024\u0310" +
-    "\025\u0315\026\u030e\027\u030a\030\u0311\031\u030f\001\001\000" +
-    "\002\001\001\000\002\001\001\000\014\015\u02eb\016\276" +
-    "\047\u02ec\050\u02ed\101\277\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\020\023\u030e\024\u0311" +
+    "\025\u0316\026\u030f\027\u030b\030\u0312\031\u0310\001\001\000" +
+    "\002\001\001\000\002\001\001\000\014\015\u02ec\016\276" +
+    "\047\u02ed\050\u02ee\101\277\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\044\055\176\056\040" +
     "\057\166\060\165\061\174\062\160\063\157\064\164\065" +
     "\167\066\151\071\170\072\156\073\154\076\173\077\163" +
@@ -847,7 +848,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\044\055\176\056\040\057\u02aa\060\165\061\174" +
+    "\001\000\044\055\176\056\040\057\u02ab\060\165\061\174" +
     "\062\160\063\157\064\164\065\167\066\151\071\170\072" +
     "\156\073\154\076\173\077\163\100\175\171\172\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
@@ -858,21 +859,21 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\010\233\226" +
-    "\234\227\235\223\001\001\000\010\233\271\234\227\235" +
-    "\223\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\010\233\265\234\227\235" +
-    "\223\001\001\000\002\001\001\000\002\001\001\000\010" +
-    "\233\231\234\227\235\223\001\001\000\002\001\001\000" +
-    "\010\233\263\234\227\235\223\001\001\000\010\233\262" +
-    "\234\227\235\223\001\001\000\010\233\261\234\227\235" +
-    "\223\001\001\000\010\233\260\234\227\235\223\001\001" +
-    "\000\010\233\257\234\227\235\223\001\001\000\010\233" +
-    "\256\234\227\235\223\001\001\000\010\233\255\234\227" +
-    "\235\223\001\001\000\010\233\254\234\227\235\223\001" +
-    "\001\000\010\233\253\234\227\235\223\001\001\000\010" +
-    "\233\252\234\227\235\223\001\001\000\010\233\251\234" +
-    "\227\235\223\001\001\000\010\233\250\234\227\235\223" +
-    "\001\001\000\010\233\247\234\227\235\223\001\001\000" +
+    "\234\230\235\224\001\001\000\010\233\271\234\230\235" +
+    "\224\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\010\233\265\234\230\235" +
+    "\224\001\001\000\002\001\001\000\010\233\231\234\230" +
+    "\235\224\001\001\000\002\001\001\000\002\001\001\000" +
+    "\010\233\263\234\230\235\224\001\001\000\010\233\262" +
+    "\234\230\235\224\001\001\000\010\233\261\234\230\235" +
+    "\224\001\001\000\010\233\260\234\230\235\224\001\001" +
+    "\000\010\233\257\234\230\235\224\001\001\000\010\233" +
+    "\256\234\230\235\224\001\001\000\010\233\255\234\230" +
+    "\235\224\001\001\000\010\233\254\234\230\235\224\001" +
+    "\001\000\010\233\253\234\230\235\224\001\001\000\010" +
+    "\233\252\234\230\235\224\001\001\000\010\233\251\234" +
+    "\230\235\224\001\001\000\010\233\250\234\230\235\224" +
+    "\001\001\000\010\233\247\234\230\235\224\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
@@ -882,26 +883,26 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\010\015\273\016\276\101\277\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\010\015\307\016" +
     "\276\101\277\001\001\000\004\102\302\001\001\000\002" +
-    "\001\001\000\010\233\304\234\227\235\223\001\001\000" +
+    "\001\001\000\010\233\304\234\230\235\224\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\010" +
-    "\233\306\234\227\235\223\001\001\000\002\001\001\000" +
+    "\233\306\234\230\235\224\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\004\002\313\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\074" +
     "\074\343\075\347\103\331\104\326\105\335\106\334\107" +
-    "\355\110\352\111\323\112\361\113\351\114\336\115\333" +
+    "\355\110\352\111\323\112\362\113\351\114\336\115\333" +
     "\116\324\117\342\155\325\156\337\157\346\160\344\161" +
     "\330\162\327\163\322\164\357\165\345\166\340\167\356" +
     "\170\360\200\354\205\332\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\010\201\u01d7\214\u01d6\215\u01d4" +
+    "\001\000\002\001\001\000\010\201\u01d8\214\u01d7\215\u01d5" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\074" +
     "\074\u01a1\075\347\103\331\104\326\105\335\106\334\107" +
-    "\355\110\352\111\323\112\361\113\351\114\336\115\333" +
+    "\355\110\352\111\323\112\362\113\351\114\336\115\333" +
     "\116\324\117\342\155\325\156\337\157\346\160\344\161" +
     "\330\162\327\163\322\164\357\165\345\166\340\167\356" +
     "\170\360\200\354\205\332\001\001\000\002\001\001\000" +
@@ -915,14 +916,14 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\006\123\u0106" +
     "\227\u0107\001\001\000\002\001\001\000\034\124\u0114\125" +
-    "\u0117\130\u011b\131\u0108\132\u0111\133\u0116\134\u011a\147\u010f" +
+    "\u0117\130\u011b\131\u0108\132\u0111\133\u0115\134\u011a\147\u010f" +
     "\150\u010b\151\u0112\152\u0109\153\u011c\154\u0113\001\001\000" +
     "\002\001\001\000\030\126\u0180\127\u0122\135\u0120\136\u011d" +
     "\142\u0125\143\u012b\144\u011e\145\u0129\146\u0127\172\u0123\226" +
     "\u012a\001\001\000\002\001\001\000\030\126\u017d\127\u0122" +
     "\135\u0120\136\u011d\142\u0125\143\u012b\144\u011e\145\u0129\146" +
     "\u0127\172\u0123\226\u012a\001\001\000\002\001\001\000\002" +
-    "\001\001\000\010\233\u0174\234\227\235\223\001\001\000" +
+    "\001\001\000\010\233\u0174\234\230\235\224\001\001\000" +
     "\030\126\u0172\127\u0122\135\u0120\136\u011d\142\u0125\143\u012b" +
     "\144\u011e\145\u0129\146\u0127\172\u0123\226\u012a\001\001\000" +
     "\002\001\001\000\002\001\001\000\030\126\u016f\127\u0122" +
@@ -939,30 +940,30 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\014\137\u012d\141" +
-    "\u012f\233\u0130\234\227\235\223\001\001\000\002\001\001" +
+    "\u012f\233\u0130\234\230\235\224\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\010\233\u0132\234\227\235\223\001\001\000\002\001\001" +
-    "\000\010\233\u0134\234\227\235\223\001\001\000\002\001" +
+    "\010\233\u0132\234\230\235\224\001\001\000\002\001\001" +
+    "\000\010\233\u0134\234\230\235\224\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\020\204" +
-    "\u0146\230\u0143\232\u014a\233\u0147\234\u0149\235\u0145\236\u0142" +
-    "\001\001\000\022\233\u0147\234\u0155\235\u0153\236\u014f\237" +
-    "\u0151\241\u0157\242\u0150\243\u0154\001\001\000\002\001\001" +
+    "\u0146\230\u0142\232\u014a\233\u0147\234\u0149\235\u0145\236\u0143" +
+    "\001\001\000\002\001\001\000\022\233\u0147\234\u0156\235" +
+    "\u0153\236\u014f\237\u0152\241\u0157\242\u0151\243\u0154\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\016\230\u014d\232\u014a\233\u0147\234\u0149\235" +
-    "\u0145\236\u0142\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\022\233\u0147\234\u0155\235\u0153\236" +
-    "\u014f\237\u0151\241\u0157\242\u0150\243\u015e\001\001\000\002" +
-    "\001\001\000\004\240\u015a\001\001\000\002\001\001\000" +
+    "\u0145\236\u0143\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\022\233\u0147\234\u0156\235\u0153\236" +
+    "\u014f\237\u0152\241\u0157\242\u0151\243\u015e\001\001\000\002" +
+    "\001\001\000\002\001\001\000\004\240\u0159\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\022\233\u0147\234\u0155\235\u0153\236\u014f\237\u0151" +
-    "\241\u0157\242\u0150\243\u015c\001\001\000\002\001\001\000" +
+    "\001\001\000\002\001\001\000\002\001\001\000\022\233" +
+    "\u0147\234\u0156\235\u0153\236\u014f\237\u0152\241\u0157\242\u0151" +
+    "\243\u015b\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\012\231\u0162\233\u0161\234\227\235\223\001" +
+    "\001\001\000\012\231\u0162\233\u0161\234\230\235\224\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\030\126\u0167\127" +
     "\u0122\135\u0120\136\u011d\142\u0125\143\u012b\144\u011e\145\u0129" +
@@ -971,7 +972,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\034\124\u0176\125\u0117\130\u011b\131\u0108\132\u0111\133\u0116" +
+    "\034\124\u0176\125\u0117\130\u011b\131\u0108\132\u0111\133\u0115" +
     "\134\u011a\147\u010f\150\u010b\151\u0112\152\u0109\153\u011c\154" +
     "\u0113\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
@@ -1002,12 +1003,12 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\000\002\001\001\000\002\001\001\000\006\123\u01cb" +
     "\227\u0107\001\001\000\010\122\u01cc\123\u01cd\227\u0107\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\010\122\u01cf\123\u01cd\227\u0107\001\001\000\002\001" +
+    "\000\002\001\001\000\010\122\u01d0\123\u01cd\227\u0107\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\014\206\u01de\222\u01dc\223" +
-    "\u01e1\224\u01df\225\u01e0\001\001\000\002\001\001\000\002" +
+    "\001\001\000\002\001\001\000\002\001\001\000\014\206" +
+    "\u01df\222\u01dd\223\u01e2\224\u01e1\225\u01e0\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
@@ -1016,25 +1017,25 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\014\206\u01f9\222\u01dc\223\u01e1\224\u01df\225" +
-    "\u01e0\001\001\000\002\001\001\000\004\207\u01fb\001\001" +
-    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\202\u0201\001\001\000\006\203\u0203" +
-    "\211\u0204\001\001\000\002\001\001\000\002\001\001\000" +
-    "\004\202\u0214\001\001\000\006\003\u020d\213\u020b\001\001" +
-    "\000\002\001\001\000\002\001\001\000\006\232\u0209\236" +
-    "\u0142\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\016\230\u020f\232\u014a\233\u0147\234\u0149\235\u0145" +
-    "\236\u0142\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\006\203\u0203\211\u0204" +
+    "\001\001\000\002\001\001\000\014\206\u01fa\222\u01dd\223" +
+    "\u01e2\224\u01e1\225\u01e0\001\001\000\002\001\001\000\004" +
+    "\207\u01fc\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\202\u0202\001\001" +
+    "\000\006\203\u0204\211\u0205\001\001\000\002\001\001\000" +
+    "\002\001\001\000\004\202\u0215\001\001\000\006\003\u020e" +
+    "\213\u020c\001\001\000\002\001\001\000\002\001\001\000" +
+    "\006\232\u020a\236\u0143\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\001\000\002\001\001\000\016\230\u0210\232\u014a\233\u0147" +
+    "\234\u0149\235\u0145\236\u0143\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\006" +
+    "\203\u0204\211\u0205\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\014\206\u021c\222\u01dc\223\u01e1\224" +
-    "\u01df\225\u01e0\001\001\000\002\001\001\000\002\001\001" +
-    "\000\010\210\u0224\216\u0220\217\u0221\001\001\000\002\001" +
-    "\001\000\004\217\u0239\001\001\000\004\216\u0238\001\001" +
-    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\000\002\001\001\000\002\001\001\000\014\206\u021d\222" +
+    "\u01dd\223\u01e2\224\u01e1\225\u01e0\001\001\000\002\001\001" +
+    "\000\002\001\001\000\010\210\u0224\216\u0220\217\u0222\001" +
+    "\001\000\004\217\u0242\001\001\000\002\001\001\000\004" +
+    "\216\u0239\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\006\220\u022a\221\u0229" +
     "\001\001\000\004\211\u022e\001\001\000\006\220\u022c\221" +
     "\u0229\001\001\000\002\001\001\000\004\211\u022e\001\001" +
@@ -1047,53 +1048,53 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\004\121\u024a\001\001\000\002\001\001\000\002" +
+    "\001\000\002\001\001\000\004\121\u024b\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\006\121\u0253" +
-    "\173\u0254\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\121\u0258\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\173\u025c\001\001\000\002\001\001" +
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\006\121\u0254\173\u0255\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\121\u0259\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\010\174\u0266\175\u0263\212\u0264\001\001" +
+    "\002\001\001\000\002\001\001\000\004\173\u025d\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\004\175\u0268\001\001" +
-    "\000\002\001\001\000\002\001\001\000\004\213\u026b\001" +
-    "\001\000\002\001\001\000\006\174\u026d\212\u0264\001\001" +
-    "\000\002\001\001\000\002\001\001\000\004\140\u0271\001" +
-    "\001\000\002\001\001\000\002\001\001\000\010\233\u0273" +
-    "\234\227\235\223\001\001\000\002\001\001\000\010\233" +
-    "\u0275\234\227\235\223\001\001\000\002\001\001\000\002" +
+    "\002\001\001\000\002\001\001\000\010\174\u0266\175\u0264" +
+    "\212\u0267\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
+    "\213\u0269\001\001\000\002\001\001\000\004\175\u026b\001" +
+    "\001\000\002\001\001\000\002\001\001\000\006\174\u026e" +
+    "\212\u0267\001\001\000\002\001\001\000\002\001\001\000" +
+    "\004\140\u0272\001\001\000\002\001\001\000\002\001\001" +
+    "\000\010\233\u0274\234\230\235\224\001\001\000\002\001" +
+    "\001\000\010\233\u0276\234\230\235\224\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\004\121\u027b\001\001\000\002\001\001\000\002" +
+    "\001\000\002\001\001\000\004\121\u027c\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\006\121\u0285" +
-    "\176\u0284\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\176\u0287\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\004\121\u028d\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\006\121\u0286\176\u0285\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\176\u0288\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\010\174\u0295\177\u0294\212\u0264\001\001" +
+    "\004\121\u028e\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\004\177\u0297\001\001\000\002\001\001\000\002\001\001" +
-    "\000\006\174\u029a\212\u0264\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\010\174\u0295\177\u0296" +
+    "\212\u0267\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\006\174\u0298\212\u0267\001\001\000\002" +
+    "\001\001\000\002\001\001\000\004\177\u029b\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\002\001\001\000\012" +
-    "\016\u02b0\067\u02ac\070\u02af\101\277\001\001\000\002\001" +
-    "\001\000\002\001\001\000\002\001\001\000\012\016\u02b0" +
-    "\067\u02b1\070\u02af\101\277\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\002\u02b3\001\001\000\002\001\001" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\012\016\u02b1\067\u02ad\070\u02b0\101\277\001" +
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\012\016\u02b1\067\u02b2\070\u02b0\101\277\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\002\u02b4\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\001\001\000\010\233\u02bd\234\230\235\224\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\010" +
-    "\233\u02bc\234\227\235\223\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\010\233\u02bf\234\227" +
-    "\235\223\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\004\002\u02c3\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\004\002\u02c7\001" +
-    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\233\u02c0\234\230\235\224\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\002\u02c4\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\004\002\u02c8\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
@@ -1103,17 +1104,17 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\010\015\u02e8\016\276\101\277\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\004\050\u02fc\001" +
-    "\001\000\002\001\001\000\010\015\u02f9\016\276\101\277" +
-    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
+    "\002\001\001\000\010\015\u02e9\016\276\101\277\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\004\050\u02fd\001\001\000\002\001\001\000\010\015\u02fa" +
+    "\016\276\101\277\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\006\051\u0301\052\u0303\001\001" +
-    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\006\051\u0304\052\u0303\001\001\000\002\001\001\000\002" +
+    "\001\000\002\001\001\000\002\001\001\000\006\051\u0302" +
+    "\052\u0304\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\006\051\u0305\052\u0304\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
@@ -1121,14 +1122,14 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\020\023\u031d\024\u0310\025\u0315\026\u030e\027\u030a\030\u0311" +
-    "\031\u030f\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\020\023\u031e\024\u0311\025\u0316\026\u030f" +
+    "\027\u030b\030\u0312\031\u0310\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\004\007\u032a\001\001\000\002\001\001\000\002\001" +
+    "\000\002\001\001\000\004\007\u032b\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001" });
+    "\000\002\001\001\000\002\001\001" });
 
   /** Access to <code>reduce_goto</code> table. */
   @Override
@@ -1299,6 +1300,10 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     private ArrayList<HashMap<String,StxAttribute>> attributeHierarchy;
     /** methods associated to ancestor blocks, respects blockHierarchy order */
     private ArrayList<HashMap<String,StxMethod>> methodHierarchy;
+    /** to detect multiple state machines in a single block */
+    private Location stateMachine = null;
+    /** state machine flags associated to ancestor blocks, respects blockHierarchy order */
+    private ArrayList<Location> machineHierarchy = new ArrayList<Location>();
 
     // %%%%%%%%%%%%%%%%%%%% UPDATE PATH STATE VARIABLES
 
@@ -1402,6 +1407,8 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
         attributeMap = new HashMap<String,StxAttribute>();
         methodHierarchy.add(methodMap);
         methodMap = new HashMap<String,StxMethod>();
+        machineHierarchy.add(stateMachine);
+        stateMachine = null;
     }
 
     /** exit block: shorten path to current block (pop blockHierarchy, attributeHierarchy, methodHierarchy) */
@@ -1412,6 +1419,7 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
         attributeHierarchy.remove(attributeHierarchy.size() -1);
         methodMap = methodHierarchy.get(methodHierarchy.size() -1);
         methodHierarchy.remove(methodHierarchy.size() -1);
+        stateMachine = machineHierarchy.remove(machineHierarchy.size() -1);
     }
 
 
@@ -1522,7 +1530,16 @@ public class AvatarFromSysMLParser extends java_cup.runtime.lr_parser {
     }
 
     /** a multiusage Flag */
-    boolean flag;
+    private boolean flag;
+    /** a block specific flag */
+    private ArrayList<Boolean> blockFlags = new ArrayList<Boolean>();
+    private void pushBlockFlag(Boolean f) { blockFlags.add(f); }
+    private boolean popBlockFlag() {
+        boolean res = blockFlags.get(blockFlags.size() -1);
+        blockFlags.remove(blockFlags.size() -1);
+        return res;
+    }
+
 
 
 /** Cup generated class to encapsulate user supplied action code.*/
@@ -2047,7 +2064,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5).<Ident>value();
 		
         getRelation(id.getAvatarName());
-        if (! theRelation.declare() ) {
+        if (! theRelation.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Relation " + id.getAvatarName() +
             " is already declared", theRelation.getLeft()) );
             flag = false;
@@ -2532,9 +2549,13 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location mxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
 		Location mxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright;
 		Object m = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Object>value();
+		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
+		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
+		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-    if (messageChannelParam == null)
+    if (messageChannelParam == null) // missing channel parameter
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, mxleft, "In-message channel has not been set", null) );
+    if (flag) theStructure.setRight(bxright);
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("inMessageDecl",35, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2552,12 +2573,14 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3).<Ident>value();
 		
     getInMessage(id.getAvatarName());
-    if (! theStructure.declare() ) {
+    if (! theStructure.declare() ) { //duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "In-message profile " + id.getAvatarName() +
         " is already declared", theStructure.getLeft()) );
+        flag = false;
     } else {
         theStructure.setLeft(pxleft);
         messageChannelParam = null;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("inMessageDeclBegin",41, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -2568,12 +2591,7 @@ class CUP$AvatarFromSysMLParser$actions {
           case 70: // inMessageDeclBODY ::= messageChannel RBRAC 
             {
               Object RESULT =null;
-		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
-		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
-		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
-		
-        theStructure.setRight(bxright);
-      
+
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("inMessageDeclBODY",37, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
@@ -2582,12 +2600,7 @@ class CUP$AvatarFromSysMLParser$actions {
           case 71: // inMessageDeclBODY ::= messageChannel fieldDecls RBRAC 
             {
               Object RESULT =null;
-		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
-		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
-		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
-		
-        theStructure.setRight(bxright);
-      
+
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("inMessageDeclBODY",37, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
@@ -2596,12 +2609,7 @@ class CUP$AvatarFromSysMLParser$actions {
           case 72: // inMessageDeclBODY ::= fieldDecls messageChannel RBRAC 
             {
               Object RESULT =null;
-		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
-		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
-		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
-		
-        theStructure.setRight(bxright);
-      
+
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("inMessageDeclBODY",37, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
@@ -2617,14 +2625,14 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location chxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright;
 		Ident ch = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Ident>value();
 		
-        if (messageChannelParam != null)
+        if (messageChannelParam != null) // duplicate
             addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft,
                 "in-message channel has already been set", messageChannelParam));
-        else {
+        else { // message param is not set
             getChannel(ch.getAvatarName());
             theChannel.setInProfile((StxInMessage)theStructure);
             ((StxInMessage)theStructure).setChannel(theChannel);
-            messageChannelParam = pxleft;
+            messageChannelParam = pxleft; // now it is
         }
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("messageChannel",38, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -2642,14 +2650,14 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location chxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright;
 		Ident ch = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Ident>value();
 		
-        if (messageChannelParam != null)
+        if (messageChannelParam != null) // duplicate
             addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft,
                 "in-message channel has already been set", messageChannelParam));
-        else {
+        else { // message param is not set
             getChannel(ch.getAvatarName());
             theChannel.setInProfile((StxInMessage)theStructure);
             ((StxInMessage)theStructure).setChannel(theChannel);
-            messageChannelParam = pxleft;
+            messageChannelParam = pxleft; // now it is
         }
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("messageChannel",38, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -2664,7 +2672,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theOutMessage.setRight(bxright);
+        if (flag) theOutMessage.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("outMessageDecl",36, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2678,7 +2686,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theOutMessage.setRight(bxright);
+        if (flag) theOutMessage.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("outMessageDecl",36, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2709,11 +2717,14 @@ class CUP$AvatarFromSysMLParser$actions {
 		
         getInMessage(m.getAvatarName());
         getOutMessage(id.getAvatarName(), (StxInMessage)theStructure);
-        if (! theOutMessage.declare() ) {
+        if (! theOutMessage.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Out-message profile " + id.getAvatarName() +
             " is already declared", theStructure.getLeft()) );
-        } else
+            flag = false;
+        } else {
             theOutMessage.setLeft(pxleft);
+            flag = true;
+        }
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("outMessageDeclBegin",42, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2734,8 +2745,14 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident m = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
         getInMessage(m.getAvatarName());
-        getOutMessage(id.getAvatarName(), (StxInMessage)theStructure);
-        theOutMessage.setLeft(pxleft);
+        if (! theOutMessage.declare() ) { // duplicate
+            addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Out-message profile " + id.getAvatarName() +
+            " is already declared", theStructure.getLeft()) );
+            flag = false;
+        } else {
+            theOutMessage.setLeft(pxleft);
+            flag = true;
+        }
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("outMessageDeclBegin",42, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2749,7 +2766,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theOutMessage.setRight(bxright);
+        if (flag) theOutMessage.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("outMessageDeclBODY",39, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2779,7 +2796,10 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident i = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Ident>value();
 		
         StxField ofield = new StxField(axleft, axright, o.getAvatarName(), "");
-        theOutMessage.addFieldLink(ofield, i.getAvatarName());
+        // maps output field to its dual input field
+        if (! theOutMessage.addFieldLink(ofield, i.getAvatarName()))
+            addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Field " + o.getAvatarName() +
+                        " is already declared") );
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("redefineField",40, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2789,7 +2809,10 @@ class CUP$AvatarFromSysMLParser$actions {
           case 83: // blockDecl ::= blockDeclBegin RBRAC 
             {
               Object RESULT =null;
-		 popBlock(); 
+		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
+		Location exright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
+		Object e = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
+		 if (popBlockFlag()) theBlock.setRight(exright); popBlock(); 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("blockDecl",43, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
@@ -2798,7 +2821,10 @@ class CUP$AvatarFromSysMLParser$actions {
           case 84: // blockDecl ::= blockDeclBegin blockDeclBODY 
             {
               Object RESULT =null;
-		 popBlock(); 
+		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
+		Location exright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
+		Object e = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
+		 if (popBlockFlag()) theBlock.setRight(exright); popBlock(); 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("blockDecl",43, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
@@ -2814,15 +2840,17 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xright;
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3).<Ident>value();
 		
-        StxBlock tmp = theBlock;
-        pushBlock();
-        getBlock(id.getAvatarName());
-        if (! theBlock.declare() ) {
+        StxBlock tmp = theBlock; // locally memorize father
+        pushBlock(); // globally memorize father state
+        getBlock(id.getAvatarName()); // set current block
+        if (! theBlock.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Block " + id.getAvatarName() +
             " is already declared", theBlock.getLeft()) );
+            pushBlockFlag(false);
         } else {
             theBlock.setFather(tmp);
             theBlock.setLeft(pxleft);
+            pushBlockFlag(true);
         }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("blockDeclBegin",44, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -2833,12 +2861,7 @@ class CUP$AvatarFromSysMLParser$actions {
           case 86: // blockDeclBODY ::= blockItem RBRAC 
             {
               Object RESULT =null;
-		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
-		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
-		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
-		
-        theBlock.setRight(bxright);
-      
+
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("blockDeclBODY",45, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
@@ -2923,7 +2946,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("attributeDecl",47, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2941,7 +2964,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         theAttribute.setInit(e);
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
     
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("attributeDecl",47, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -2959,7 +2982,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         theAttribute.setInit(e);
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
         theAttribute.setDefaultValue(true);
     
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("attributeDecl",47, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -2981,9 +3004,10 @@ class CUP$AvatarFromSysMLParser$actions {
 		String tp = CUP$AvatarFromSysMLParser$stack.peek().<String>value();
 		
         getAttribute(id.getAvatarName(), tp);
-        if (! theAttribute.declare() ) {
+        if (! theAttribute.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Attribute " + id.getAvatarName() +
             " is already declared  (or there is an attribute with same name)", theAttribute.getLeft()) );
+            flag = false;
         } else {
             StxElement e = theBlock.addAttribute(theAttribute);
             if (e != null)
@@ -2997,6 +3021,7 @@ class CUP$AvatarFromSysMLParser$actions {
                    addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Attribute " + id.getAvatarName() +
                     " cannot be added: name already used for signal", e.getLeft()));
                 else ;
+            flag = true;
             theAttribute.setLeft(axleft);
         }
 
@@ -3012,7 +3037,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("constantDecl",48, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3030,7 +3055,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         theAttribute.setInit(e);
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
     
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("constantDecl",48, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3054,6 +3079,7 @@ class CUP$AvatarFromSysMLParser$actions {
         if (! theAttribute.declare() ) {
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, rxleft, "Constant " + id.getAvatarName() +
             " is already declared (or there is an attribute with same name)", theAttribute.getLeft()) );
+            flag = false;
         } else {
             StxElement e = theBlock.addConstant(theAttribute);
             if (e != null)
@@ -3067,6 +3093,7 @@ class CUP$AvatarFromSysMLParser$actions {
                    addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, rxleft, "Constant " + id.getAvatarName() +
                     " cannot be added: name already used for signal", e.getLeft()));
                 else ;
+            flag = true;
             theAttribute.setLeft(rxleft);
         }
 
@@ -3100,7 +3127,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("voidMethodDecl",51, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3114,7 +3141,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("voidMethodDecl",51, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3132,9 +3159,10 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getMethod(id.getAvatarName());
-    if (! theStructure.declare() ) {
+    if (! theStructure.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Method " + id.getAvatarName() +
         " is already declared", theStructure.getLeft()) );
+        flag = false;
     } else {
         StxElement e = theBlock.addMethod((StxMethod)theStructure);
         if (e != null)
@@ -3148,6 +3176,7 @@ class CUP$AvatarFromSysMLParser$actions {
                addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Method " + id.getAvatarName() +
                 " cannot be added: name already used for signal", e.getLeft()));
             else ;
+        flag = true;
         theStructure.setLeft(axleft);
     }
 
@@ -3163,7 +3192,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("calcMethodDecl",52, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3177,7 +3206,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("calcMethodDecl",52, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3198,6 +3227,7 @@ class CUP$AvatarFromSysMLParser$actions {
     if (! theStructure.declare() ) {
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, cxleft, "Method " + id.getAvatarName() +
         " is already declared", theStructure.getLeft()) );
+        flag = false;
     } else {
         StxElement e = theBlock.addMethod((StxMethod)theStructure);
         if (e != null)
@@ -3211,6 +3241,7 @@ class CUP$AvatarFromSysMLParser$actions {
                addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, cxleft, "Method " + id.getAvatarName() +
                 " cannot be added: name already used for signal", e.getLeft()));
             else ;
+        flag = true;
         theStructure.setLeft(cxleft);
     }
 
@@ -3274,7 +3305,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         getSignal(theBlock.getName(),id.getAvatarName());
-        if (! theSignal.declare() ) {
+        if (! theSignal.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Signal " + id.getAvatarName() +
             " is already declared", theSignal.getLeft()) );
         } else {
@@ -3313,7 +3344,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         getSignal(theBlock.getName(),id.getAvatarName());
-        if (! theSignal.declare() ) {
+        if (! theSignal.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Signal " + id.getAvatarName() +
             " is already declared", theSignal.getLeft()) );
         } else {
@@ -3353,7 +3384,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		
         StxTimer t = new StxTimer(id.getAvatarName(), pxleft, qxright);
         StxElement e = theBlock.addTimer(t);
-        if (e != null)
+        if (e != null) // conflict with existing item e
             if (e instanceof StxTimer && !e.declare())
                 addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Timer " + id.getAvatarName() +
                 " is already declared", e.getLeft()));
@@ -3389,7 +3420,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		
         StxTimer t = new StxTimer(id.getAvatarName(), pxleft, qxright);
         StxElement e = theBlock.addTimer(t);
-        if (e != null)
+        if (e != null) // conflict with existing item e
             if (e instanceof StxTimer && !e.declare())
                 addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Timer " + id.getAvatarName() +
                 " is already declared", e.getLeft()));
@@ -3414,7 +3445,7 @@ class CUP$AvatarFromSysMLParser$actions {
             {
               Object RESULT =null;
 		
-        theBlock.setStates(stateMap.values().toArray(new StxState[0]));
+        theBlock.setStates(stateMap.values().toArray(new StxState[0])); // all collected information is put in block states
         stateMap = null;
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stateMachine",57, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3426,7 +3457,7 @@ class CUP$AvatarFromSysMLParser$actions {
             {
               Object RESULT =null;
 		
-        theBlock.setStates(stateMap.values().toArray(new StxState[0]));
+        theBlock.setStates(stateMap.values().toArray(new StxState[0])); // all collected information is put in block states
         stateMap = null;
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stateMachine",57, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3438,7 +3469,7 @@ class CUP$AvatarFromSysMLParser$actions {
             {
               Object RESULT =null;
 		
-        theBlock.setStates(stateMap.values().toArray(new StxState[0]));
+        theBlock.setStates(stateMap.values().toArray(new StxState[0])); // all collected information is put in block states
         stateMap = null;
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stateMachine",57, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3449,7 +3480,16 @@ class CUP$AvatarFromSysMLParser$actions {
           case 121: // stateMachineBegin ::= EXHIBIT STATE STATEMACHINE COLON AVSTATEMACHINE_T 
             {
               Object RESULT =null;
+		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
+		Location exright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xright;
+		Object e = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4).<Object>value();
 		
+    if (stateMachine != null)
+        addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, exleft,
+            "State Machine is already declared", stateMachine) );
+    else
+        stateMachine = exleft;
+
     stateMap = new HashMap<String, StxState>();
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stateMachineBegin",119, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3612,7 +3652,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("startState",66, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3630,7 +3670,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("startState",66, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3644,7 +3684,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("startState",66, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3662,14 +3702,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSTARTSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("startStateBegin",107, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3688,7 +3730,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("standardState",67, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3706,7 +3748,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("standardState",67, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3720,7 +3762,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("standardState",67, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3738,15 +3780,17 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSTANDARDSTATE);
         theState.setName(id.getAvatarName());
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("standardStateBegin",108, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3761,7 +3805,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stopState",68, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3775,7 +3819,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stopState",68, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3793,13 +3837,15 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSTOPSTATE);
         theState.setLeft(zxright);
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stopStateBegin",109, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3818,7 +3864,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("sendState",69, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3832,7 +3878,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("sendState",69, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3846,7 +3892,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("sendState",69, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3864,14 +3910,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSENDSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("sendStateBegin",110, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3890,7 +3938,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("receiveState",70, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3908,7 +3956,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("receiveState",70, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3922,7 +3970,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("receiveState",70, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3940,14 +3988,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXRECEIVESTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("receiveStateBegin",111, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -3962,7 +4012,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomState",71, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3976,7 +4026,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomState",71, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -3994,7 +4044,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomState",71, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4012,14 +4062,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXRANDOMSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomStateBegin",112, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4038,7 +4090,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("countState",72, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4052,7 +4104,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("countState",72, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4066,7 +4118,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("countState",72, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4084,14 +4136,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXCOUNTSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("countStateBegin",113, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4106,7 +4160,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("presendState",73, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4124,14 +4178,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXPRESENDSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("presendStateBegin",114, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4146,7 +4202,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("prereceiveState",74, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4164,14 +4220,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXPRERECEIVESTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("prereceiveStateBegin",115, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4186,7 +4244,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("setTimerState",75, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4204,7 +4262,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("setTimerState",75, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4222,7 +4280,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("setTimerState",75, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4240,14 +4298,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSETTIMERSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("setTimerStateBegin",116, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4262,7 +4322,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("resetTimerState",76, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4280,7 +4340,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("resetTimerState",76, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4298,7 +4358,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("resetTimerState",76, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4316,14 +4376,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXRESETTIMERSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("resetTimerStateBegin",117, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4338,7 +4400,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("expireTimerState",77, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4356,7 +4418,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("expireTimerState",77, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4374,7 +4436,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("expireTimerState",77, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
@@ -4392,14 +4454,16 @@ class CUP$AvatarFromSysMLParser$actions {
 		Ident id = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<Ident>value();
 		
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXEXPIRETIMERSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("expireTimerStateBegin",118, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -4407,69 +4471,56 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 181: // poolParam ::= POOL_F EQUAL LPAR requestList RPAR 
+          case 181: // poolParam ::= POOL_F EQUAL LPAR RPAR 
             {
               Object RESULT =null;
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("poolParam",78, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("poolParam",78, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 182: // poolParam ::= POOL_F EQUAL request 
+          case 182: // poolParam ::= POOL_F EQUAL LPAR requestList RPAR 
             {
               Object RESULT =null;
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("poolParam",78, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("poolParam",78, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 183: // requestParam ::= REQUEST_F EQUAL request 
+          case 183: // poolParam ::= POOL_F EQUAL request 
             {
               Object RESULT =null;
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("requestParam",79, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("poolParam",78, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 184: // requestList ::= request 
+          case 184: // requestParam ::= REQUEST_F EQUAL request 
             {
               Object RESULT =null;
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("requestList",80, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("requestParam",79, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 185: // requestList ::= request COMMA requestList 
+          case 185: // requestList ::= request 
             {
               Object RESULT =null;
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("requestList",80, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("requestList",80, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 186: // dummy ::= 
+          case 186: // requestList ::= request COMMA requestList 
             {
               Object RESULT =null;
-		
-            getTransition(requestIndex);
-            if (theTransition.isRequested()) {
-                addError( new AvatarFromSysMLError(
-                    AvatarFromSysMLError.LOWERROR,
-                    lexer.getLocation(),
-                    "Transition " + (requestIndex + 1) + " is already requested",
-                    theTransition.getRleft()) );
-                okRequest = false;
-            } else {
-                theTransition.setRequested(true);
-                okRequest = true;
-            }
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("dummy",149, CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("requestList",80, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
@@ -4526,7 +4577,29 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 189: // simpleRequest ::= trivialRequest 
+          case 189: // dummy ::= 
+            {
+              Object RESULT =null;
+		
+            getTransition(requestIndex);
+            if (theTransition.isRequested()) { // duplicate
+                addError( new AvatarFromSysMLError(
+                    AvatarFromSysMLError.LOWERROR,
+                    lexer.getLocation(),
+                    "Transition " + (requestIndex + 1) + " is already requested",
+                    theTransition.getRleft()) );
+                okRequest = false; // request is a duplikate (skip handling)
+            } else {
+                theTransition.setRequested(true);
+                okRequest = true; // request is not a duplicate
+            }
+
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("dummy",149, CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+            }
+          return CUP$AvatarFromSysMLParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 190: // simpleRequest ::= trivialRequest 
             {
               Object RESULT =null;
 
@@ -4535,7 +4608,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 190: // simpleRequest ::= sendRequest 
+          case 191: // simpleRequest ::= sendRequest 
             {
               Object RESULT =null;
 
@@ -4544,7 +4617,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 191: // simpleRequest ::= receiveRequest 
+          case 192: // simpleRequest ::= receiveRequest 
             {
               Object RESULT =null;
 
@@ -4553,7 +4626,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 192: // simpleRequest ::= setTimerRequest 
+          case 193: // simpleRequest ::= setTimerRequest 
             {
               Object RESULT =null;
 
@@ -4562,7 +4635,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 193: // simpleRequest ::= resetTimerRequest 
+          case 194: // simpleRequest ::= resetTimerRequest 
             {
               Object RESULT =null;
 
@@ -4571,7 +4644,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 194: // simpleRequest ::= expireTimerRequest 
+          case 195: // simpleRequest ::= expireTimerRequest 
             {
               Object RESULT =null;
 
@@ -4580,7 +4653,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 195: // trivialRequest ::= IMMEDIATEREQUEST_U 
+          case 196: // trivialRequest ::= IMMEDIATEREQUEST_U 
             {
               Object RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -4599,7 +4672,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 196: // trivialRequest ::= trivialRequestBegin requestArgs RPAR 
+          case 197: // trivialRequest ::= trivialRequestBegin requestArgs RPAR 
             {
               Object RESULT =null;
 
@@ -4608,7 +4681,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 197: // trivialRequestBegin ::= TRIVIALREQUEST_T LPAR 
+          case 198: // trivialRequestBegin ::= TRIVIALREQUEST_T LPAR 
             {
               Object RESULT =null;
 		
@@ -4621,7 +4694,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 198: // sendRequest ::= sendRequestBegin requestArgs RPAR 
+          case 199: // sendRequest ::= sendRequestBegin requestArgs RPAR 
             {
               Object RESULT =null;
 
@@ -4630,7 +4703,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 199: // sendRequestBegin ::= SENDREQUEST_T LPAR 
+          case 200: // sendRequestBegin ::= SENDREQUEST_T LPAR 
             {
               Object RESULT =null;
 		
@@ -4643,7 +4716,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 200: // receiveRequest ::= receiveRequestBegin requestArgs RPAR 
+          case 201: // receiveRequest ::= receiveRequestBegin requestArgs RPAR 
             {
               Object RESULT =null;
 
@@ -4652,7 +4725,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 201: // receiveRequestBegin ::= RECEIVEREQUEST_T LPAR 
+          case 202: // receiveRequestBegin ::= RECEIVEREQUEST_T LPAR 
             {
               Object RESULT =null;
 		
@@ -4665,7 +4738,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 202: // setTimerRequest ::= setTimerRequestBegin requestArgs RPAR 
+          case 203: // setTimerRequest ::= setTimerRequestBegin requestArgs RPAR 
             {
               Object RESULT =null;
 
@@ -4674,7 +4747,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 203: // setTimerRequestBegin ::= SETTIMERREQUEST_T LPAR 
+          case 204: // setTimerRequestBegin ::= SETTIMERREQUEST_T LPAR 
             {
               Object RESULT =null;
 		
@@ -4687,7 +4760,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 204: // resetTimerRequest ::= resetTimerRequestBegin requestArgs RPAR 
+          case 205: // resetTimerRequest ::= resetTimerRequestBegin requestArgs RPAR 
             {
               Object RESULT =null;
 
@@ -4696,7 +4769,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 205: // resetTimerRequestBegin ::= RESETTIMERREQUEST_T LPAR 
+          case 206: // resetTimerRequestBegin ::= RESETTIMERREQUEST_T LPAR 
             {
               Object RESULT =null;
 		
@@ -4709,7 +4782,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 206: // expireTimerRequest ::= expireTimerRequestBegin requestArgs RPAR 
+          case 207: // expireTimerRequest ::= expireTimerRequestBegin requestArgs RPAR 
             {
               Object RESULT =null;
 
@@ -4718,7 +4791,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 207: // expireTimerRequestBegin ::= EXPIRETIMERREQUEST_T LPAR 
+          case 208: // expireTimerRequestBegin ::= EXPIRETIMERREQUEST_T LPAR 
             {
               Object RESULT =null;
 		
@@ -4731,7 +4804,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 208: // requestArgs ::= requestArg 
+          case 209: // requestArgs ::= requestArg 
             {
               Object RESULT =null;
 
@@ -4740,7 +4813,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 209: // requestArgs ::= requestArg COMMA requestArgs 
+          case 210: // requestArgs ::= requestArg COMMA requestArgs 
             {
               Object RESULT =null;
 
@@ -4749,7 +4822,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 210: // requestArg ::= indexParam 
+          case 211: // requestArg ::= indexParam 
             {
               Object RESULT =null;
 
@@ -4758,7 +4831,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 211: // requestArg ::= delayParam 
+          case 212: // requestArg ::= delayParam 
             {
               Object RESULT =null;
 
@@ -4767,7 +4840,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 212: // requestArg ::= channelParam 
+          case 213: // requestArg ::= channelParam 
             {
               Object RESULT =null;
 
@@ -4776,7 +4849,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 213: // requestArg ::= payloadParam 
+          case 214: // requestArg ::= payloadParam 
             {
               Object RESULT =null;
 
@@ -4785,7 +4858,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 214: // requestArg ::= settimerParam 
+          case 215: // requestArg ::= settimerParam 
             {
               Object RESULT =null;
 
@@ -4794,7 +4867,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 215: // requestArg ::= resettimerParam 
+          case 216: // requestArg ::= resettimerParam 
             {
               Object RESULT =null;
 
@@ -4803,7 +4876,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 216: // requestArg ::= expiretimerParam 
+          case 217: // requestArg ::= expiretimerParam 
             {
               Object RESULT =null;
 
@@ -4812,7 +4885,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 217: // indexParam ::= INDEX_F EQUAL INT 
+          case 218: // indexParam ::= INDEX_F EQUAL INT 
             {
               Object RESULT =null;
 		Location fxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -4834,7 +4907,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 218: // delayParam ::= delayKeyword EQUAL delayExpr 
+          case 219: // delayParam ::= delayKeyword EQUAL delayExpr 
             {
               Object RESULT =null;
 
@@ -4843,7 +4916,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 219: // delayKeyword ::= DELAY_F 
+          case 220: // delayKeyword ::= DELAY_F 
             {
               Object RESULT =null;
 		Location dxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -4864,7 +4937,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 220: // delayExpr ::= iexpr 
+          case 221: // delayExpr ::= iexpr 
             {
               Object RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -4876,7 +4949,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 221: // delayExpr ::= delayRandomExpr 
+          case 222: // delayExpr ::= delayRandomExpr 
             {
               Object RESULT =null;
 
@@ -4885,7 +4958,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 222: // delayRandomExpr ::= BOUNDRANDOM_U LPAR iexpr COMMA iexpr RPAR 
+          case 223: // delayRandomExpr ::= BOUNDRANDOM_U LPAR iexpr COMMA iexpr RPAR 
             {
               Object RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xleft;
@@ -4905,14 +4978,14 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 223: // payloadParam ::= payloadParamBegin IDENT LPAR termList RPAR 
+          case 224: // payloadParam ::= payloadParamBegin IDENT LPAR termList RPAR 
             {
               Object RESULT =null;
 		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4).<Object>value();
-		
-        if (argOK) {
+		 // termlist fills argList
+        if (argOK) { // not duplicate
             if (theTransition.getType() != AvatarFromSysMLSyntax.STXSENDTRANSITION)
                 addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                     "such payload is only relevant for send transitions", null));
@@ -4925,14 +4998,14 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 224: // payloadParam ::= payloadParamBegin IDENT LPAR RPAR 
+          case 225: // payloadParam ::= payloadParamBegin IDENT LPAR RPAR 
             {
               Object RESULT =null;
 		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xleft;
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3).<Object>value();
 		
-       if (argOK) {
+       if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXSENDTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for send transitions", null));
@@ -4945,14 +5018,14 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 225: // payloadParam ::= payloadParamBegin IDENT 
+          case 226: // payloadParam ::= payloadParamBegin IDENT 
             {
               Object RESULT =null;
 		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<Object>value();
 		
-       if (argOK) {
+       if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXSENDTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for send transitions", null));
@@ -4965,7 +5038,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 226: // payloadParam ::= payloadParamBegin TIMERSETMSG_T LPAR stxExpr RPAR 
+          case 227: // payloadParam ::= payloadParamBegin TIMERSETMSG_T LPAR stxExpr RPAR 
             {
               Object RESULT =null;
 		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -4975,7 +5048,7 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location exright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xright;
 		StxExpr e = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1).<StxExpr>value();
 		
-        if (argOK) {
+        if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXSETTIMERTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for set-timer transitions", null));
@@ -4989,14 +5062,14 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 227: // payloadParam ::= payloadParamBegin TIMERRESETMSG_T LPAR RPAR 
+          case 228: // payloadParam ::= payloadParamBegin TIMERRESETMSG_T LPAR RPAR 
             {
               Object RESULT =null;
 		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xleft;
 		Location bxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xright;
 		Object b = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3).<Object>value();
 		
-        if (argOK) {
+        if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for reset-timer transitions", null));
@@ -5009,7 +5082,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 228: // payloadParamBegin ::= PAYLOAD_F EQUAL 
+          case 229: // payloadParamBegin ::= PAYLOAD_F EQUAL 
             {
               Object RESULT =null;
 		Location pxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
@@ -5031,7 +5104,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 229: // channelParam ::= CHANNEL_F EQUAL IDENT 
+          case 230: // channelParam ::= CHANNEL_F EQUAL IDENT 
             {
               Object RESULT =null;
 		Location cxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -5060,7 +5133,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 230: // settimerParam ::= CHANNEL_F EQUAL IDENT POINT SET_TM 
+          case 231: // settimerParam ::= CHANNEL_F EQUAL IDENT POINT SET_TM 
             {
               Object RESULT =null;
 		Location cxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5085,7 +5158,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 231: // resettimerParam ::= CHANNEL_F EQUAL IDENT POINT RESET_TM 
+          case 232: // resettimerParam ::= CHANNEL_F EQUAL IDENT POINT RESET_TM 
             {
               Object RESULT =null;
 		Location cxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5110,7 +5183,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 232: // expiretimerParam ::= CHANNEL_F EQUAL IDENT POINT EXPIRE_TM 
+          case 233: // expiretimerParam ::= CHANNEL_F EQUAL IDENT POINT EXPIRE_TM 
             {
               Object RESULT =null;
 		Location cxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5135,7 +5208,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 233: // termList ::= stxRvalue 
+          case 234: // termList ::= stxRvalue 
             {
               Object RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -5147,7 +5220,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 234: // termList ::= termList COMMA stxRvalue 
+          case 235: // termList ::= termList COMMA stxRvalue 
             {
               Object RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -5159,25 +5232,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 235: // randomAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA randomParam RPAR 
-            {
-              Object RESULT =null;
-
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomAction",121, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
-            }
-          return CUP$AvatarFromSysMLParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 236: // randomAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR randomParam COMMA targetParam RPAR 
-            {
-              Object RESULT =null;
-
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomAction",121, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
-            }
-          return CUP$AvatarFromSysMLParser$result;
-
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 237: // targetParam ::= target EQUAL fullIdent 
+          case 236: // targetParam ::= target EQUAL fullIdent 
             {
               Object RESULT =null;
 		
@@ -5188,7 +5243,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 238: // target ::= TARGET_F 
+          case 237: // target ::= TARGET_F 
             {
               Object RESULT =null;
 		
@@ -5199,35 +5254,49 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 239: // fullIdent ::= IDENT 
+          case 238: // fullIdent ::= IDENT 
             {
               Object RESULT =null;
 		Location idxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Ident id = CUP$AvatarFromSysMLParser$stack.peek().<Ident>value();
-		
-        stringAcc.append(id.getAvatarName());
-      
+		 stringAcc.append(id.getAvatarName()); 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("fullIdent",137, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 240: // fullIdent ::= fullIdent POINT IDENT 
+          case 239: // fullIdent ::= fullIdent POINT IDENT 
             {
               Object RESULT =null;
 		Location idxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location idxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Ident id = CUP$AvatarFromSysMLParser$stack.peek().<Ident>value();
-		
-        stringAcc.append("." + id.getAvatarName());
-      
+		 stringAcc.append("." + id.getAvatarName()); 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("fullIdent",137, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 241: // randomParam ::= VALUE_F EQUAL actionRandomExpr 
+          case 240: // randomAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA randomParam RPAR 
+            {
+              Object RESULT =null;
+
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomAction",121, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+            }
+          return CUP$AvatarFromSysMLParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 241: // randomAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR randomParam COMMA targetParam RPAR 
+            {
+              Object RESULT =null;
+
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("randomAction",121, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+            }
+          return CUP$AvatarFromSysMLParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 242: // randomParam ::= VALUE_F EQUAL actionRandomExpr 
             {
               Object RESULT =null;
 
@@ -5236,7 +5305,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 242: // actionRandomExpr ::= BOUNDRANDOM_U LPAR iexpr COMMA iexpr RPAR 
+          case 243: // actionRandomExpr ::= BOUNDRANDOM_U LPAR iexpr COMMA iexpr RPAR 
             {
               Object RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xleft;
@@ -5254,7 +5323,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 243: // countAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA countParam RPAR 
+          case 244: // countAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA countParam RPAR 
             {
               Object RESULT =null;
 
@@ -5263,7 +5332,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 244: // countAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR countParam COMMA targetParam RPAR 
+          case 245: // countAction ::= STATEACTION_F EQUAL ASSIGNMENT_T LPAR countParam COMMA targetParam RPAR 
             {
               Object RESULT =null;
 
@@ -5272,7 +5341,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 245: // countParam ::= VALUE_F EQUAL IDENT POINT AMOUNT_U LPAR RPAR 
+          case 246: // countParam ::= VALUE_F EQUAL IDENT POINT AMOUNT_U LPAR RPAR 
             {
               Object RESULT =null;
 		Location idxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5287,7 +5356,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 246: // transition ::= transitionBegin THEN IDENT SEMICOLON 
+          case 247: // transition ::= transitionBegin THEN IDENT SEMICOLON 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xleft;
@@ -5300,17 +5369,19 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transition",126, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 247: // transition ::= transitionBegin doActions THEN IDENT SEMICOLON 
+          case 248: // transition ::= transitionBegin doActions THEN IDENT SEMICOLON 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5323,17 +5394,19 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transition",126, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 248: // transition ::= transitionBegin THEN IDENT LBRAC transitionLabels RBRAC 
+          case 249: // transition ::= transitionBegin THEN IDENT LBRAC transitionLabels RBRAC 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
@@ -5346,19 +5419,21 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setDelayExtra(delayExtraMap);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setDelayExtra(delayExtraMap);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
         delayExtraMap = null;
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transition",126, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 249: // transition ::= transitionBegin doActions THEN IDENT LBRAC transitionLabels RBRAC 
+          case 250: // transition ::= transitionBegin doActions THEN IDENT LBRAC transitionLabels RBRAC 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6)).xleft;
@@ -5371,19 +5446,21 @@ class CUP$AvatarFromSysMLParser$actions {
 		Location qxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Object q = CUP$AvatarFromSysMLParser$stack.peek().<Object>value();
 		
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setDelayExtra(delayExtraMap);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setDelayExtra(delayExtraMap);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
         delayExtraMap = null;
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transition",126, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-6), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 250: // transitionBegin ::= TRANSITION COLON AVTRANSITION_T FIRST IDENT 
+          case 251: // transitionBegin ::= TRANSITION COLON AVTRANSITION_T FIRST IDENT 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5395,9 +5472,12 @@ class CUP$AvatarFromSysMLParser$actions {
 		
         getState(st.getAvatarName());
         getTransition(0);
-        if (!theTransition.declare())
+        if (!theTransition.declare()) {
             addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
                 "transition with same index has already been declared", null));
+            flag = false;
+        }
+        else flag = true;
         clearTransitionLbls();
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",131, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -5405,7 +5485,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 251: // transitionBegin ::= TRANSITION COLON AVTRANSITION_T FIRST IDENT IF INDEX_F EQ INT 
+          case 252: // transitionBegin ::= TRANSITION COLON AVTRANSITION_T FIRST IDENT IF INDEX_F EQ INT 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8)).xleft;
@@ -5420,9 +5500,12 @@ class CUP$AvatarFromSysMLParser$actions {
 		
        getState(st.getAvatarName());
        getTransition(i-1);
-        if (!theTransition.declare())
-            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+       if (!theTransition.declare()) {
+           addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
                 "transition with same index has already been declared", null));
+           flag = true;
+       }
+       else flag = true;
        clearTransitionLbls();
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",131, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -5430,7 +5513,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 252: // doActions ::= transitionActionBegin LBRAC RBRAC 
+          case 253: // doActions ::= transitionActionBegin LBRAC RBRAC 
             {
               Object RESULT =null;
 
@@ -5439,11 +5522,11 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 253: // doActions ::= transitionActionBegin LBRAC transitionAction RBRAC 
+          case 254: // doActions ::= transitionActionBegin LBRAC transitionAction RBRAC 
             {
               Object RESULT =null;
 		
-            theTransition.setActions(actionList);
+            if (flag) theTransition.setActions(actionList);
             actionList = null;
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("doActions",127, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -5451,7 +5534,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 254: // doActions ::= receiveActionBegin LBRAC RBRAC 
+          case 255: // doActions ::= receiveActionBegin LBRAC RBRAC 
             {
               Object RESULT =null;
 
@@ -5460,11 +5543,11 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 255: // doActions ::= receiveActionBegin LBRAC receiveAction RBRAC 
+          case 256: // doActions ::= receiveActionBegin LBRAC receiveAction RBRAC 
             {
               Object RESULT =null;
 		
-            theTransition.setReceivePayload(receiveMap);
+            if (flag) theTransition.setReceivePayload(receiveMap);
             receiveMap = null;
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("doActions",127, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -5472,7 +5555,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 256: // transitionActionBegin ::= DO ACTION COLON TRANSITIONACTION_T 
+          case 257: // transitionActionBegin ::= DO ACTION COLON TRANSITIONACTION_T 
             {
               Object RESULT =null;
 		
@@ -5483,7 +5566,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 257: // receiveActionBegin ::= DO ACTION COLON RECEIVEACTION_T 
+          case 258: // receiveActionBegin ::= DO ACTION COLON RECEIVEACTION_T 
             {
               Object RESULT =null;
 		
@@ -5494,7 +5577,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 258: // transitionAction ::= FIRST START_U SEMICOLON THEN DONE_U SEMICOLON 
+          case 259: // transitionAction ::= FIRST START_U SEMICOLON THEN DONE_U SEMICOLON 
             {
               Object RESULT =null;
 
@@ -5503,7 +5586,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 259: // transitionAction ::= FIRST START_U SEMICOLON actionSeq 
+          case 260: // transitionAction ::= FIRST START_U SEMICOLON actionSeq 
             {
               Object RESULT =null;
 
@@ -5512,7 +5595,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 260: // actionSeq ::= THEN act THEN DONE_U SEMICOLON 
+          case 261: // actionSeq ::= THEN act THEN DONE_U SEMICOLON 
             {
               Object RESULT =null;
 
@@ -5521,7 +5604,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 261: // actionSeq ::= THEN act actionSeq 
+          case 262: // actionSeq ::= THEN act actionSeq 
             {
               Object RESULT =null;
 
@@ -5530,7 +5613,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 262: // act ::= assign fulllIdent GETS stxRvalue SEMICOLON 
+          case 263: // act ::= assign fulllIdent GETS stxRvalue SEMICOLON 
             {
               Object RESULT =null;
 		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5553,7 +5636,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 263: // act ::= ACTION EQUAL stxCall SEMICOLON 
+          case 264: // act ::= ACTION EQUAL stxCall SEMICOLON 
             {
               Object RESULT =null;
 		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-3)).xleft;
@@ -5573,30 +5656,30 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 264: // fulllIdent ::= fullIdent 
+          case 265: // assign ::= ASSIGN 
             {
-              String RESULT =null;
+              Object RESULT =null;
 		
-    RESULT = stringAcc.toString();
-    stringAcc.setLength(0);
+    stringAcc = new StringBuffer();
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("fulllIdent",1, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("assign",135, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 265: // assign ::= ASSIGN 
+          case 266: // fulllIdent ::= fullIdent 
             {
-              Object RESULT =null;
+              String RESULT =null;
 		
-    stringAcc = new StringBuffer();
+    RESULT = stringAcc.toString();
+    stringAcc.setLength(0);
 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("assign",135, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("fulllIdent",1, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 266: // receiveAction ::= messageLine receiveAssigns 
+          case 267: // receiveAction ::= messageLine receiveAssigns 
             {
               Object RESULT =null;
 
@@ -5605,7 +5688,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 267: // receiveAction ::= receiveAssigns messageLine 
+          case 268: // receiveAction ::= receiveAssigns messageLine 
             {
               Object RESULT =null;
 
@@ -5614,7 +5697,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 268: // messageLine ::= ITEM MSG_U COLON IDENT EQUAL PAYLOAD_F AS IDENT SEMICOLON 
+          case 269: // messageLine ::= ITEM MSG_U COLON IDENT EQUAL PAYLOAD_F AS IDENT SEMICOLON 
             {
               Object RESULT =null;
 
@@ -5623,7 +5706,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 269: // receiveAssigns ::= FIRST START_U SEMICOLON THEN DONE_U SEMICOLON 
+          case 270: // receiveAssigns ::= FIRST START_U SEMICOLON THEN DONE_U SEMICOLON 
             {
               Object RESULT =null;
 
@@ -5632,7 +5715,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 270: // receiveAssigns ::= FIRST START_U SEMICOLON receiveAssignSeq 
+          case 271: // receiveAssigns ::= FIRST START_U SEMICOLON receiveAssignSeq 
             {
               Object RESULT =null;
 
@@ -5641,7 +5724,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 271: // receiveAssignSeq ::= receiveAssign THEN DONE_U SEMICOLON 
+          case 272: // receiveAssignSeq ::= receiveAssign THEN DONE_U SEMICOLON 
             {
               Object RESULT =null;
 
@@ -5650,7 +5733,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 272: // receiveAssignSeq ::= receiveAssign receiveAssignSeq 
+          case 273: // receiveAssignSeq ::= receiveAssign receiveAssignSeq 
             {
               Object RESULT =null;
 
@@ -5659,7 +5742,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 273: // receiveAssign ::= THEN assign fullIdent GETS MSG_U POINT IDENT SEMICOLON 
+          case 274: // receiveAssign ::= THEN assign fullIdent GETS MSG_U POINT IDENT SEMICOLON 
             {
               Object RESULT =null;
 		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-7)).xleft;
@@ -5680,7 +5763,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 274: // transitionLabels ::= transitionLabel SEMICOLON 
+          case 275: // transitionLabels ::= transitionLabel SEMICOLON 
             {
               Object RESULT =null;
 
@@ -5689,7 +5772,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 275: // transitionLabels ::= transitionLabel SEMICOLON transitionLabels 
+          case 276: // transitionLabels ::= transitionLabel SEMICOLON transitionLabels 
             {
               Object RESULT =null;
 
@@ -5698,7 +5781,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 276: // transitionLabel ::= distributionLabel 
+          case 277: // transitionLabel ::= distributionLabel 
             {
               Object RESULT =null;
 
@@ -5707,7 +5790,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 277: // transitionLabel ::= weightLabel 
+          case 278: // transitionLabel ::= weightLabel 
             {
               Object RESULT =null;
 
@@ -5716,7 +5799,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 278: // transitionLabel ::= extraLabel 
+          case 279: // transitionLabel ::= extraLabel 
             {
               Object RESULT =null;
 
@@ -5725,7 +5808,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 279: // distributionLabel ::= ATTRIBUTE DISTRIBUTION_A COLON STRING_T EQUAL STRING 
+          case 280: // distributionLabel ::= ATTRIBUTE DISTRIBUTION_A COLON STRING_T EQUAL STRING 
             {
               Object RESULT =null;
 		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
@@ -5748,7 +5831,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 280: // weightLabel ::= ATTRIBUTE WEIGHT_A COLON REAL_T EQUAL REAL 
+          case 281: // weightLabel ::= ATTRIBUTE WEIGHT_A COLON REAL_T EQUAL REAL 
             {
               Object RESULT =null;
 		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
@@ -5771,7 +5854,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 281: // weightLabel ::= ATTRIBUTE WEIGHT_A COLON REAL_T EQUAL INT 
+          case 282: // weightLabel ::= ATTRIBUTE WEIGHT_A COLON REAL_T EQUAL INT 
             {
               Object RESULT =null;
 		Location axleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-5)).xleft;
@@ -5794,7 +5877,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 282: // extraLabel ::= ATTRIBUTE ANYNAME COLON STRING_T EQUAL STRING 
+          case 283: // extraLabel ::= ATTRIBUTE ANYNAME COLON STRING_T EQUAL STRING 
             {
               Object RESULT =null;
 		Location nxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5813,7 +5896,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 283: // extraLabel ::= ATTRIBUTE IDENT COLON STRING_T EQUAL STRING 
+          case 284: // extraLabel ::= ATTRIBUTE IDENT COLON STRING_T EQUAL STRING 
             {
               Object RESULT =null;
 		Location nxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
@@ -5832,31 +5915,31 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 284: // stxRvalue ::= stxCall 
+          case 285: // stxRvalue ::= stxCall 
             {
               StxTerm RESULT =null;
 		Location cxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location cxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		StxCall c = CUP$AvatarFromSysMLParser$stack.peek().<StxCall>value();
-		 RESULT = c; 
+		 RESULT = c; // FUNCTION CALL
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stxRvalue",150, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 285: // stxRvalue ::= expr 
+          case 286: // stxRvalue ::= expr 
             {
               StxTerm RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location exright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		String e = CUP$AvatarFromSysMLParser$stack.peek().<String>value();
-		 RESULT = new StxExpr(e); 
+		 RESULT = new StxExpr(e);  // INT/BOOL EXPRESSION 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stxRvalue",150, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 286: // stxRvalue ::= complexIdent 
+          case 287: // stxRvalue ::= complexIdent 
             {
               StxTerm RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -5868,19 +5951,19 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 287: // stxExpr ::= iexpr 
+          case 288: // stxExpr ::= iexpr 
             {
               StxExpr RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location exright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		String e = CUP$AvatarFromSysMLParser$stack.peek().<String>value();
-		 RESULT = new StxExpr(e); 
+		 RESULT = new StxExpr(e); // INT/BOOL EXPRESSION 
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("stxExpr",151, CUP$AvatarFromSysMLParser$stack.peek(), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
             }
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 288: // iexpr ::= expr 
+          case 289: // iexpr ::= expr 
             {
               String RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -5892,7 +5975,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 289: // iexpr ::= complexIdent 
+          case 290: // iexpr ::= complexIdent 
             {
               String RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -5904,7 +5987,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 290: // expr ::= iexpr PLUS iexpr 
+          case 291: // expr ::= iexpr PLUS iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -5919,7 +6002,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 291: // expr ::= iexpr MINUS iexpr 
+          case 292: // expr ::= iexpr MINUS iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -5934,7 +6017,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 292: // expr ::= iexpr MULT iexpr 
+          case 293: // expr ::= iexpr MULT iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -5949,7 +6032,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 293: // expr ::= iexpr DIV iexpr 
+          case 294: // expr ::= iexpr DIV iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -5964,7 +6047,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 294: // expr ::= iexpr MOD iexpr 
+          case 295: // expr ::= iexpr MOD iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -5979,7 +6062,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 295: // expr ::= MINUS iexpr 
+          case 296: // expr ::= MINUS iexpr 
             {
               String RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -5991,7 +6074,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 296: // expr ::= iexpr OR iexpr 
+          case 297: // expr ::= iexpr OR iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6006,7 +6089,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 297: // expr ::= iexpr AND iexpr 
+          case 298: // expr ::= iexpr AND iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6021,7 +6104,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 298: // expr ::= NOT iexpr 
+          case 299: // expr ::= NOT iexpr 
             {
               String RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -6032,21 +6115,6 @@ class CUP$AvatarFromSysMLParser$actions {
             }
           return CUP$AvatarFromSysMLParser$result;
 
-          /*. . . . . . . . . . . . . . . . . . . .*/
-          case 299: // expr ::= iexpr LT iexpr 
-            {
-              String RESULT =null;
-		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
-		Location lxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xright;
-		String l = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<String>value();
-		Location rxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
-		Location rxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
-		String r = CUP$AvatarFromSysMLParser$stack.peek().<String>value();
-		 RESULT = l + " < " + r; 
-              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("expr",154, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
-            }
-          return CUP$AvatarFromSysMLParser$result;
-
           /* . . . . . .*/
           default:
             throw new Exception(
@@ -6069,7 +6137,22 @@ class CUP$AvatarFromSysMLParser$actions {
       switch (CUP$AvatarFromSysMLParser$act_num)
         {
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 300: // expr ::= iexpr GT iexpr 
+          case 300: // expr ::= iexpr LT iexpr 
+            {
+              String RESULT =null;
+		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
+		Location lxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xright;
+		String l = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2).<String>value();
+		Location rxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
+		Location rxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
+		String r = CUP$AvatarFromSysMLParser$stack.peek().<String>value();
+		 RESULT = l + " < " + r; 
+              CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("expr",154, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
+            }
+          return CUP$AvatarFromSysMLParser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 301: // expr ::= iexpr GT iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6084,7 +6167,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 301: // expr ::= iexpr LEQ iexpr 
+          case 302: // expr ::= iexpr LEQ iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6099,7 +6182,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 302: // expr ::= iexpr GEQ iexpr 
+          case 303: // expr ::= iexpr GEQ iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6114,7 +6197,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 303: // expr ::= iexpr EQ iexpr 
+          case 304: // expr ::= iexpr EQ iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6129,7 +6212,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 304: // expr ::= iexpr DIF iexpr 
+          case 305: // expr ::= iexpr DIF iexpr 
             {
               String RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6144,7 +6227,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 305: // expr ::= LPAR iexpr RPAR 
+          case 306: // expr ::= LPAR iexpr RPAR 
             {
               String RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
@@ -6156,7 +6239,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 306: // expr ::= INT 
+          case 307: // expr ::= INT 
             {
               String RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -6168,7 +6251,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 307: // expr ::= BOOL 
+          case 308: // expr ::= BOOL 
             {
               String RESULT =null;
 		Location bxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -6180,7 +6263,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 308: // complexIdent ::= IDENT 
+          case 309: // complexIdent ::= IDENT 
             {
               String RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -6192,7 +6275,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 309: // complexIdent ::= IDENT POINT complexIdent 
+          case 310: // complexIdent ::= IDENT POINT complexIdent 
             {
               String RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-2)).xleft;
@@ -6207,7 +6290,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 310: // stxCall ::= stxCallBegin RPAR 
+          case 311: // stxCall ::= stxCallBegin RPAR 
             {
               StxCall RESULT =null;
 		
@@ -6219,7 +6302,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 311: // stxCall ::= stxCallBegin stxCallParams RPAR 
+          case 312: // stxCall ::= stxCallBegin stxCallParams RPAR 
             {
               StxCall RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
@@ -6234,7 +6317,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 312: // stxCallBegin ::= IDENT LPAR 
+          case 313: // stxCallBegin ::= IDENT LPAR 
             {
               Object RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
@@ -6249,7 +6332,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 313: // stxCallParams ::= stxCallParam 
+          case 314: // stxCallParams ::= stxCallParam 
             {
               Object RESULT =null;
 
@@ -6258,7 +6341,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 314: // stxCallParams ::= stxCallParam comma stxCallParams 
+          case 315: // stxCallParams ::= stxCallParam comma stxCallParams 
             {
               Object RESULT =null;
 
@@ -6267,7 +6350,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 315: // comma ::= COMMA 
+          case 316: // comma ::= COMMA 
             {
               Object RESULT =null;
 		 stringAcc.append(", "); 
@@ -6276,7 +6359,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 316: // stxCallParam ::= expr 
+          case 317: // stxCallParam ::= expr 
             {
               Object RESULT =null;
 		Location exleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -6288,7 +6371,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 317: // stxCallParam ::= complexIdent 
+          case 318: // stxCallParam ::= complexIdent 
             {
               Object RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
@@ -6304,7 +6387,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 318: // stxCallParam ::= call 
+          case 319: // stxCallParam ::= call 
             {
               Object RESULT =null;
 
@@ -6313,7 +6396,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 319: // call ::= callBegin RPAR 
+          case 320: // call ::= callBegin RPAR 
             {
               Object RESULT =null;
 		 stringAcc.append(")"); 
@@ -6322,7 +6405,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 320: // call ::= stxCallBegin stxCallParams RPAR 
+          case 321: // call ::= stxCallBegin stxCallParams RPAR 
             {
               Object RESULT =null;
 		Location lxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
@@ -6334,7 +6417,7 @@ class CUP$AvatarFromSysMLParser$actions {
           return CUP$AvatarFromSysMLParser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 321: // callBegin ::= IDENT LPAR 
+          case 322: // callBegin ::= IDENT LPAR 
             {
               Object RESULT =null;
 		Location ixleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-1)).xleft;
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
index 9d2e2507fa..72e0e7af45 100644
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
@@ -169,6 +169,10 @@ parser code {:
     private ArrayList<HashMap<String,StxAttribute>> attributeHierarchy;
     /** methods associated to ancestor blocks, respects blockHierarchy order */
     private ArrayList<HashMap<String,StxMethod>> methodHierarchy;
+    /** to detect multiple state machines in a single block */
+    private Location stateMachine = null;
+    /** state machine flags associated to ancestor blocks, respects blockHierarchy order */
+    private ArrayList<Location> machineHierarchy = new ArrayList<Location>();
 
     // %%%%%%%%%%%%%%%%%%%% UPDATE PATH STATE VARIABLES
 
@@ -272,6 +276,8 @@ parser code {:
         attributeMap = new HashMap<String,StxAttribute>();
         methodHierarchy.add(methodMap);
         methodMap = new HashMap<String,StxMethod>();
+        machineHierarchy.add(stateMachine);
+        stateMachine = null;
     }
 
     /** exit block: shorten path to current block (pop blockHierarchy, attributeHierarchy, methodHierarchy) */
@@ -282,6 +288,7 @@ parser code {:
         attributeHierarchy.remove(attributeHierarchy.size() -1);
         methodMap = methodHierarchy.get(methodHierarchy.size() -1);
         methodHierarchy.remove(methodHierarchy.size() -1);
+        stateMachine = machineHierarchy.remove(machineHierarchy.size() -1);
     }
 
 
@@ -392,7 +399,16 @@ parser code {:
     }
 
     /** a multiusage Flag */
-    boolean flag;
+    private boolean flag;
+    /** a block specific flag */
+    private ArrayList<Boolean> blockFlags = new ArrayList<Boolean>();
+    private void pushBlockFlag(Boolean f) { blockFlags.add(f); }
+    private boolean popBlockFlag() {
+        boolean res = blockFlags.get(blockFlags.size() -1);
+        blockFlags.remove(blockFlags.size() -1);
+        return res;
+    }
+
 :}
 
 /* Terminals (tokens returned by the scanner). */
@@ -557,7 +573,7 @@ datatypeDeclHEADER ::= ATTRIBUTE:a DEF IDENT:id specializes AVDATATYPE_T {:
 :};
 
 // FIELD LIST $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
-// used for DataTypes, Methods and inMessages (in-signal profiles)
+//            used for DataTypes, Methods and inMessages (in-signal profiles)
 
 fieldDecls ::= fieldDecl | fieldDecl  fieldDecls
 ;
@@ -631,7 +647,7 @@ bfRelDecl ::= bfRelDeclBegin relParams RPAR SEMICOLON:x {:
 bfRelDeclBegin ::=
     PART:p IDENT:id COLON BFIFOREL_T EQUAL BFIFOREL_T LPAR {:
         getRelation(id.getAvatarName());
-        if (! theRelation.declare() ) {
+        if (! theRelation.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Relation " + id.getAvatarName() +
             " is already declared", theRelation.getLeft()) );
             flag = false;
@@ -818,61 +834,64 @@ outSignalBinding ::=
 
 messageDecl ::= inMessageDecl | outMessageDecl
 ;
-inMessageDecl ::= inMessageDeclBegin:m inMessageDeclBODY {:
-    if (messageChannelParam == null)
+
+// IN MESSAGE ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+inMessageDecl ::= inMessageDeclBegin:m inMessageDeclBODY:b {:
+    if (messageChannelParam == null) // missing channel parameter
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, mxleft, "In-message channel has not been set", null) );
+    if (flag) theStructure.setRight(bxright);
 :};
 inMessageDeclBegin ::= PART:p DEF IDENT:id specializes INMESSAGE_T LBRAC {:
     getInMessage(id.getAvatarName());
-    if (! theStructure.declare() ) {
+    if (! theStructure.declare() ) { //duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "In-message profile " + id.getAvatarName() +
         " is already declared", theStructure.getLeft()) );
+        flag = false;
     } else {
         theStructure.setLeft(pxleft);
         messageChannelParam = null;
+        flag = true;
     }
 :};
 inMessageDeclBODY ::=
-      messageChannel RBRAC:b {:
-        theStructure.setRight(bxright);
-      :}
-    | messageChannel fieldDecls RBRAC:b {:
-        theStructure.setRight(bxright);
-      :}
-    | fieldDecls messageChannel RBRAC:b {:
-        theStructure.setRight(bxright);
-      :}
+      messageChannel RBRAC
+    | messageChannel fieldDecls RBRAC
+    | fieldDecls messageChannel RBRAC
 ;
 messageChannel ::=
       PRIVATE:p PART CHANNEL_F COLON CHANNEL_T EQUAL IDENT:ch SEMICOLON {:
-        if (messageChannelParam != null)
+        if (messageChannelParam != null) // duplicate
             addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft,
                 "in-message channel has already been set", messageChannelParam));
-        else {
+        else { // message param is not set
             getChannel(ch.getAvatarName());
             theChannel.setInProfile((StxInMessage)theStructure);
             ((StxInMessage)theStructure).setChannel(theChannel);
-            messageChannelParam = pxleft;
+            messageChannelParam = pxleft; // now it is
         }
       :}
     | PRIVATE:p PART CHANNEL_F EQUAL IDENT:ch SEMICOLON {:
-        if (messageChannelParam != null)
+        if (messageChannelParam != null) // duplicate
             addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft,
                 "in-message channel has already been set", messageChannelParam));
-        else {
+        else { // message param is not set
             getChannel(ch.getAvatarName());
             theChannel.setInProfile((StxInMessage)theStructure);
             ((StxInMessage)theStructure).setChannel(theChannel);
-            messageChannelParam = pxleft;
+            messageChannelParam = pxleft; // now it is
         }
       :}
 ;
+
+// OUT MESSAGE ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
 outMessageDecl ::=
       outMessageDeclBegin SEMICOLON:b {:
-        theOutMessage.setRight(bxright);
+        if (flag) theOutMessage.setRight(bxright);
       :}
     | outMessageDeclBegin LBRAC RBRAC:b {:
-        theOutMessage.setRight(bxright);
+        if (flag) theOutMessage.setRight(bxright);
       :}
     | outMessageDeclBegin LBRAC outMessageDeclBODY
 ;
@@ -880,52 +899,64 @@ outMessageDeclBegin ::=
       PART:p DEF IDENT:id specializes OUTMESSAGE_T COMMA IDENT:m {:
         getInMessage(m.getAvatarName());
         getOutMessage(id.getAvatarName(), (StxInMessage)theStructure);
-        if (! theOutMessage.declare() ) {
+        if (! theOutMessage.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Out-message profile " + id.getAvatarName() +
             " is already declared", theStructure.getLeft()) );
-        } else
+            flag = false;
+        } else {
             theOutMessage.setLeft(pxleft);
+            flag = true;
+        }
       :}
     | PART:p DEF IDENT:id specializes IDENT:m COMMA OUTMESSAGE_T {:
         getInMessage(m.getAvatarName());
-        getOutMessage(id.getAvatarName(), (StxInMessage)theStructure);
-        theOutMessage.setLeft(pxleft);
+        if (! theOutMessage.declare() ) { // duplicate
+            addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Out-message profile " + id.getAvatarName() +
+            " is already declared", theStructure.getLeft()) );
+            flag = false;
+        } else {
+            theOutMessage.setLeft(pxleft);
+            flag = true;
+        }
       :}
 ;
 outMessageDeclBODY ::=
       redefineField RBRAC:b {:
-        theOutMessage.setRight(bxright);
+        if (flag) theOutMessage.setRight(bxright);
       :}
     | redefineField outMessageDeclBODY
 ;
 redefineField ::=
       ATTRIBUTE:a IDENT:o REDEFINES IDENT:i SEMICOLON {:
         StxField ofield = new StxField(axleft, axright, o.getAvatarName(), "");
-        theOutMessage.addFieldLink(ofield, i.getAvatarName());
+        // maps output field to its dual input field
+        if (! theOutMessage.addFieldLink(ofield, i.getAvatarName()))
+            addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Field " + o.getAvatarName() +
+                        " is already declared") );
 :};
 
 // BLOCK DECLARATION $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 blockDecl ::=
-      blockDeclBegin RBRAC {: popBlock(); :}
-    | blockDeclBegin blockDeclBODY {: popBlock(); :}
+      blockDeclBegin RBRAC:e {: if (popBlockFlag()) theBlock.setRight(exright); popBlock(); :}
+    | blockDeclBegin blockDeclBODY:e {: if (popBlockFlag()) theBlock.setRight(exright); popBlock(); :}
 ;
 blockDeclBegin ::=
       PART:p IDENT:id COLON AVBLOCK_T LBRAC {:
-        StxBlock tmp = theBlock;
-        pushBlock();
-        getBlock(id.getAvatarName());
-        if (! theBlock.declare() ) {
+        StxBlock tmp = theBlock; // locally memorize father
+        pushBlock(); // globally memorize father state
+        getBlock(id.getAvatarName()); // set current block
+        if (! theBlock.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Block " + id.getAvatarName() +
             " is already declared", theBlock.getLeft()) );
+            pushBlockFlag(false);
         } else {
             theBlock.setFather(tmp);
             theBlock.setLeft(pxleft);
+            pushBlockFlag(true);
         }
 :};
 blockDeclBODY ::=
-      blockItem RBRAC:b {:
-        theBlock.setRight(bxright);
-      :}
+      blockItem RBRAC
     | blockItem blockDeclBODY
 ;
 blockItem ::=
@@ -939,26 +970,28 @@ blockItem ::=
 ;
 
 // ATTRIBUTE DECLARATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 attributeDecl ::=
       attributeDeclHEADER SEMICOLON:q {:
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
       :}
     | attributeDeclHEADER GETS iexpr:e SEMICOLON:q {:
         theAttribute.setInit(e);
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
     :}
     | attributeDeclHEADER DEFAULT GETS iexpr:e SEMICOLON:q {:
         theAttribute.setInit(e);
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
         theAttribute.setDefaultValue(true);
     :}
 ;
 attributeDeclHEADER ::=
     ATTRIBUTE:a IDENT:id COLON typeIdent:tp {:
         getAttribute(id.getAvatarName(), tp);
-        if (! theAttribute.declare() ) {
+        if (! theAttribute.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Attribute " + id.getAvatarName() +
             " is already declared  (or there is an attribute with same name)", theAttribute.getLeft()) );
+            flag = false;
         } else {
             StxElement e = theBlock.addAttribute(theAttribute);
             if (e != null)
@@ -972,6 +1005,7 @@ attributeDeclHEADER ::=
                    addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Attribute " + id.getAvatarName() +
                     " cannot be added: name already used for signal", e.getLeft()));
                 else ;
+            flag = true;
             theAttribute.setLeft(axleft);
         }
 :};
@@ -979,11 +1013,11 @@ attributeDeclHEADER ::=
 // CONSTANT DECLARATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 constantDecl ::=
       constantDeclHEADER SEMICOLON:q {:
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
       :}
     | constantDeclHEADER GETS iexpr:e SEMICOLON:q {:
         theAttribute.setInit(e);
-        theAttribute.setRight(qxright);
+        if (flag) theAttribute.setRight(qxright);
     :}
 ;
 constantDeclHEADER ::=
@@ -992,6 +1026,7 @@ constantDeclHEADER ::=
         if (! theAttribute.declare() ) {
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, rxleft, "Constant " + id.getAvatarName() +
             " is already declared (or there is an attribute with same name)", theAttribute.getLeft()) );
+            flag = false;
         } else {
             StxElement e = theBlock.addConstant(theAttribute);
             if (e != null)
@@ -1005,25 +1040,29 @@ constantDeclHEADER ::=
                    addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, rxleft, "Constant " + id.getAvatarName() +
                     " cannot be added: name already used for signal", e.getLeft()));
                 else ;
+            flag = true;
             theAttribute.setLeft(rxleft);
         }
 :};
 
 // METHOD DECLARATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 methodDecl ::= voidMethodDecl | calcMethodDecl;
+
 voidMethodDecl ::=
       voidMethodDeclBegin LBRAC RBRAC:b {:
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       :}
     | voidMethodDeclBegin LBRAC fieldDecls RBRAC:b {:
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       :}
 ;
 voidMethodDeclBegin ::= ACTION:a IDENT:id COLON AVVOIDMETHOD_T {:
     getMethod(id.getAvatarName());
-    if (! theStructure.declare() ) {
+    if (! theStructure.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Method " + id.getAvatarName() +
         " is already declared", theStructure.getLeft()) );
+        flag = false;
     } else {
         StxElement e = theBlock.addMethod((StxMethod)theStructure);
         if (e != null)
@@ -1037,15 +1076,17 @@ voidMethodDeclBegin ::= ACTION:a IDENT:id COLON AVVOIDMETHOD_T {:
                addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, axleft, "Method " + id.getAvatarName() +
                 " cannot be added: name already used for signal", e.getLeft()));
             else ;
+        flag = true;
         theStructure.setLeft(axleft);
     }
 :};
+
 calcMethodDecl ::=
       calcMethodDeclBegin LBRAC RBRAC:b {:
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       :}
     | calcMethodDeclBegin LBRAC calcMethodItems RBRAC:b {:
-        theStructure.setRight(bxright);
+        if (flag) theStructure.setRight(bxright);
       :}
 ;
 calcMethodDeclBegin ::= CALC:c IDENT:id COLON AVCALCMETHOD_T {:
@@ -1053,6 +1094,7 @@ calcMethodDeclBegin ::= CALC:c IDENT:id COLON AVCALCMETHOD_T {:
     if (! theStructure.declare() ) {
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, cxleft, "Method " + id.getAvatarName() +
         " is already declared", theStructure.getLeft()) );
+        flag = false;
     } else {
         StxElement e = theBlock.addMethod((StxMethod)theStructure);
         if (e != null)
@@ -1066,6 +1108,7 @@ calcMethodDeclBegin ::= CALC:c IDENT:id COLON AVCALCMETHOD_T {:
                addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, cxleft, "Method " + id.getAvatarName() +
                 " cannot be added: name already used for signal", e.getLeft()));
             else ;
+        flag = true;
         theStructure.setLeft(cxleft);
     }
 :};
@@ -1081,10 +1124,11 @@ calcMethodItem ::=
 ;
 
 // SIGNAL DECLARATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 signalDecl ::=
       PART:p IDENT:id COLON FIFO_T SEMICOLON:q {:
         getSignal(theBlock.getName(),id.getAvatarName());
-        if (! theSignal.declare() ) {
+        if (! theSignal.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Signal " + id.getAvatarName() +
             " is already declared", theSignal.getLeft()) );
         } else {
@@ -1106,7 +1150,7 @@ signalDecl ::=
       :}
     | PART:p IDENT:id COLON CHANNEL_T SEMICOLON:q {:
         getSignal(theBlock.getName(),id.getAvatarName());
-        if (! theSignal.declare() ) {
+        if (! theSignal.declare() ) { // duplicate
             addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Signal " + id.getAvatarName() +
             " is already declared", theSignal.getLeft()) );
         } else {
@@ -1129,11 +1173,12 @@ signalDecl ::=
 ;
 
 // TIMER DECLARATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 timerDecl ::=
       PART:p IDENT:id COLON AVTIMER_T EQUAL AVTIMER_T LPAR RPAR SEMICOLON:q {:
         StxTimer t = new StxTimer(id.getAvatarName(), pxleft, qxright);
         StxElement e = theBlock.addTimer(t);
-        if (e != null)
+        if (e != null) // conflict with existing item e
             if (e instanceof StxTimer && !e.declare())
                 addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Timer " + id.getAvatarName() +
                 " is already declared", e.getLeft()));
@@ -1152,7 +1197,7 @@ timerDecl ::=
     | PART:p IDENT:id COLON AVTIMER_T SEMICOLON:q {:
         StxTimer t = new StxTimer(id.getAvatarName(), pxleft, qxright);
         StxElement e = theBlock.addTimer(t);
-        if (e != null)
+        if (e != null) // conflict with existing item e
             if (e instanceof StxTimer && !e.declare())
                 addError( new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, pxleft, "Timer " + id.getAvatarName() +
                 " is already declared", e.getLeft()));
@@ -1171,21 +1216,28 @@ timerDecl ::=
 ;
 
 // STATE MACHINE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 stateMachine ::=
       stateMachineBegin LBRAC stateMachineItems RBRAC {:
-        theBlock.setStates(stateMap.values().toArray(new StxState[0]));
+        theBlock.setStates(stateMap.values().toArray(new StxState[0])); // all collected information is put in block states
         stateMap = null;
       :}
     | stateMachineBegin LBRAC  RBRAC {:
-        theBlock.setStates(stateMap.values().toArray(new StxState[0]));
+        theBlock.setStates(stateMap.values().toArray(new StxState[0])); // all collected information is put in block states
         stateMap = null;
       :}
     | stateMachineBegin SEMICOLON {:
-        theBlock.setStates(stateMap.values().toArray(new StxState[0]));
+        theBlock.setStates(stateMap.values().toArray(new StxState[0])); // all collected information is put in block states
         stateMap = null;
       :}
 ;
-stateMachineBegin ::= EXHIBIT STATE STATEMACHINE COLON AVSTATEMACHINE_T {:
+stateMachineBegin ::= EXHIBIT:e STATE STATEMACHINE COLON AVSTATEMACHINE_T {:
+    if (stateMachine != null)
+        addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, exleft,
+            "State Machine is already declared", stateMachine) );
+    else
+        stateMachine = exleft;
+
     stateMap = new HashMap<String, StxState>();
 :};
 stateMachineItems ::=
@@ -1203,302 +1255,318 @@ state ::= standardState | stopState | startState | sendState | receiveState
 startState ::=
      startStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
    | startStateBegin:b EQUAL AVSTARTSTATE_T LPAR RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
    | startStateBegin EQUAL AVSTARTSTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 startStateBegin ::= ENTRY:z ACTION IDENT:id COLON AVSTARTSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSTARTSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 standardState ::=
       standardStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | standardStateBegin:b EQUAL AVSTANDARDSTATE_T LPAR RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | standardStateBegin EQUAL AVSTANDARDSTATE_T LPAR poolParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 standardStateBegin ::= STATE:z IDENT:id COLON AVSTANDARDSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSTANDARDSTATE);
         theState.setName(id.getAvatarName());
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 stopState ::=
       stopStateBegin SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | stopStateBegin EQUAL AVSTOPSTATE_T LPAR RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 stopStateBegin ::= EXIT:z ACTION IDENT:id COLON AVSTOPSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSTOPSTATE);
         theState.setLeft(zxright);
+        flag = true;
     }
 :};
 sendState ::=
       sendStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | sendStateBegin EQUAL AVSENDSTATE_T LPAR RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | sendStateBegin EQUAL AVSENDSTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 sendStateBegin ::= STATE:z IDENT:id COLON AVSENDSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSENDSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 receiveState ::=
       receiveStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | receiveStateBegin:b EQUAL AVRECEIVESTATE_T LPAR RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | receiveStateBegin EQUAL AVRECEIVESTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 receiveStateBegin ::= STATE:z IDENT:id COLON AVRECEIVESTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXRECEIVESTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 randomState ::=
       randomStateBegin EQUAL AVRANDOMSTATE_T LPAR randomAction COMMA requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | randomStateBegin EQUAL AVRANDOMSTATE_T LPAR requestParam COMMA randomAction RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | randomStateBegin:b EQUAL AVRANDOMSTATE_T LPAR randomAction RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 randomStateBegin ::= STATE:z IDENT:id COLON AVRANDOMSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXRANDOMSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 countState ::=
         countStateBegin:b EQUAL AVCOUNTSTATE_T LPAR countAction RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | countStateBegin EQUAL AVCOUNTSTATE_T LPAR requestParam COMMA countAction RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | countStateBegin EQUAL AVCOUNTSTATE_T LPAR countAction COMMA requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 countStateBegin ::= STATE:z IDENT:id COLON AVCOUNTSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXCOUNTSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 presendState ::=
       presendStateBegin EQUAL AVPRESENDSTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 presendStateBegin ::= STATE:z IDENT:id COLON AVPRESENDSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXPRESENDSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 prereceiveState ::=
       prereceiveStateBegin EQUAL AVPRERECEIVESTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 prereceiveStateBegin ::= STATE:z IDENT:id COLON AVPRERECEIVESTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXPRERECEIVESTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 setTimerState ::=
       setTimerStateBegin EQUAL AVSETTIMERSTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | setTimerStateBegin:b EQUAL AVSETTIMERSTATE_T LPAR RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | setTimerStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 setTimerStateBegin ::= STATE:z IDENT:id COLON AVSETTIMERSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXSETTIMERSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 resetTimerState ::=
       resetTimerStateBegin EQUAL AVRESETTIMERSTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | resetTimerStateBegin:b EQUAL AVRESETTIMERSTATE_T LPAR RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | resetTimerStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 resetTimerStateBegin ::= STATE:z IDENT:id COLON AVRESETTIMERSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXRESETTIMERSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 expireTimerState ::=
       expireTimerStateBegin EQUAL AVEXPIRETIMERSTATE_T LPAR requestParam RPAR SEMICOLON:q {:
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | expireTimerStateBegin:b EQUAL AVEXPIRETIMERSTATE_T LPAR RPAR SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
     | expireTimerStateBegin:b SEMICOLON:q {:
         tryTrivialRequest(bxleft, qxright);
-        theState.setRight(qxright);
+        if (flag) theState.setRight(qxright);
      :}
 ;
 expireTimerStateBegin ::= STATE:z IDENT:id COLON AVEXPIRETIMERSTATE_T {:
     getState(id.getAvatarName());
-    if (! theState.declare() ) {
+    if (! theState.declare() ) { // duplicate
         addError( new AvatarFromSysMLError(AvatarFromSysMLError.HIGHERROR, zxleft, "State " + id.getAvatarName() +
         " is already declared", theState.getLeft()) );
         requestIndex = 0;
+        flag = false;
     } else {
         theState.setType(AvatarFromSysMLSyntax.STXEXPIRETIMERSTATE);
         theState.setLeft(zxright);
         requestIndex = 0;
+        flag = true;
     }
 :};
 
 // STATES PARAMETERS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
 // REQUESTS ++++++++++++++++++++++++++++++++++++
+
+// REQUESTS POOLS ------------------------------
+
 poolParam ::=
-      POOL_F EQUAL LPAR requestList RPAR
-    | POOL_F EQUAL request
+      POOL_F EQUAL LPAR RPAR
+   |  POOL_F EQUAL LPAR requestList RPAR
+   | POOL_F EQUAL request
 ;
 requestParam ::= REQUEST_F EQUAL request;
 requestList ::= request | request COMMA requestList;
-dummy ::= {:
-            getTransition(requestIndex);
-            if (theTransition.isRequested()) {
-                addError( new AvatarFromSysMLError(
-                    AvatarFromSysMLError.LOWERROR,
-                    lexer.getLocation(),
-                    "Transition " + (requestIndex + 1) + " is already requested",
-                    theTransition.getRleft()) );
-                okRequest = false;
-            } else {
-                theTransition.setRequested(true);
-                okRequest = true;
-            }
-:};
+
 request ::=
       dummy IF:i iexpr:e QUEST simpleRequest:q ELSE NOKREQUEST_U LPAR INT:n RPAR:z {:
         if (n != requestIndex + 1) {
@@ -1519,6 +1587,24 @@ request ::=
         requestIndex++;
        :}
 ;
+dummy ::= {:
+            getTransition(requestIndex);
+            if (theTransition.isRequested()) { // duplicate
+                addError( new AvatarFromSysMLError(
+                    AvatarFromSysMLError.LOWERROR,
+                    lexer.getLocation(),
+                    "Transition " + (requestIndex + 1) + " is already requested",
+                    theTransition.getRleft()) );
+                okRequest = false; // request is a duplikate (skip handling)
+            } else {
+                theTransition.setRequested(true);
+                okRequest = true; // request is not a duplicate
+            }
+:};
+
+
+// SIMPLE REQUESTS -------------------------------------------
+
 simpleRequest ::= trivialRequest | sendRequest | receiveRequest
     | setTimerRequest | resetTimerRequest | expireTimerRequest;
 
@@ -1569,9 +1655,12 @@ expireTimerRequestBegin ::= EXPIRETIMERREQUEST_T LPAR {:
     clearRequestArgs();
 :};
 
+// SIMPLE REQUESTS PARAMETERS -------------------------------
+
 requestArgs ::= requestArg | requestArg COMMA requestArgs;
 requestArg ::= indexParam | delayParam | channelParam | payloadParam | settimerParam | resettimerParam | expiretimerParam;
 
+// INDEX .........
 indexParam ::= INDEX_F:f EQUAL INT:i {:
     if (indexArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING,fxleft, "index parameter has already been set", indexArg));
@@ -1580,6 +1669,8 @@ indexParam ::= INDEX_F:f EQUAL INT:i {:
         null));
     if (indexArg == null) indexArg = fxleft;
 :};
+
+// DELAY .........
 delayParam ::= delayKeyword EQUAL delayExpr;
 delayKeyword ::= DELAY_F:d {:
     if (delayArg != null) {
@@ -1603,9 +1694,10 @@ delayRandomExpr ::=
         }
       :}
 ;
+// PAYLOAD .........
 payloadParam ::=
-      payloadParamBegin:b IDENT LPAR termList RPAR {:
-        if (argOK) {
+      payloadParamBegin:b IDENT LPAR termList RPAR {: // termlist fills argList
+        if (argOK) { // not duplicate
             if (theTransition.getType() != AvatarFromSysMLSyntax.STXSENDTRANSITION)
                 addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                     "such payload is only relevant for send transitions", null));
@@ -1614,7 +1706,7 @@ payloadParam ::=
         argList = null;
       :}
     | payloadParamBegin:b IDENT LPAR RPAR {:
-       if (argOK) {
+       if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXSENDTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for send transitions", null));
@@ -1623,7 +1715,7 @@ payloadParam ::=
        argList = null;
      :}
     | payloadParamBegin:b IDENT {:
-       if (argOK) {
+       if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXSENDTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for send transitions", null));
@@ -1632,7 +1724,7 @@ payloadParam ::=
        argList = null;
      :}
     | payloadParamBegin:b TIMERSETMSG_T LPAR stxExpr:e RPAR {:
-        if (argOK) {
+        if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXSETTIMERTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for set-timer transitions", null));
@@ -1642,7 +1734,7 @@ payloadParam ::=
         argList = null;
       :}
     | payloadParamBegin:b TIMERRESETMSG_T LPAR  RPAR {:
-        if (argOK) {
+        if (argOK) { // not duplicate
            if (theTransition.getType() != AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION)
                addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, bxleft,
                    "such payload is only relevant for reset-timer transitions", null));
@@ -1662,7 +1754,7 @@ payloadParamBegin ::= PAYLOAD_F:p EQUAL {:
         argList= new ArrayList<StxTerm>();
     }
 :};
-
+// CHANNEL .........
 channelParam ::= CHANNEL_F:c EQUAL IDENT:id {:
     if (channelArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "channel parameter has already been set", channelArg));
@@ -1678,7 +1770,7 @@ channelParam ::= CHANNEL_F:c EQUAL IDENT:id {:
        channelArg = cxleft;
     }
 :};
-
+// SET TIMER TIMER PARAM .........
 settimerParam ::= CHANNEL_F:c EQUAL IDENT:id POINT SET_TM {:
     if (settimerArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg));
@@ -1690,6 +1782,7 @@ settimerParam ::= CHANNEL_F:c EQUAL IDENT:id POINT SET_TM {:
         settimerArg = cxleft;
     }
 :};
+// RESET TIMER TIMER PARAM .........
 resettimerParam ::= CHANNEL_F:c EQUAL IDENT:id POINT RESET_TM {:
     if (resettimerArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg));
@@ -1701,6 +1794,7 @@ resettimerParam ::= CHANNEL_F:c EQUAL IDENT:id POINT RESET_TM {:
         resettimerArg = cxleft;
     }
 :};
+// EXPIRE TIMER TIMER PARAM .........
 expiretimerParam ::= CHANNEL_F:c EQUAL IDENT:id POINT EXPIRE_TM {:
     if (expiretimerArg != null)
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWWARNING, cxleft, "timer channel parameter has already been set", settimerArg));
@@ -1717,11 +1811,10 @@ termList ::=
     stxRvalue:e {: argList.add(e); :}
     | termList COMMA stxRvalue:e  {: argList.add(e); :}
 ;
+
 // STATE ACTIONS ++++++++++++++++++++++++++++++++++++
-randomAction ::=
-      STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA randomParam RPAR
-    | STATEACTION_F EQUAL ASSIGNMENT_T LPAR randomParam COMMA targetParam RPAR
-;
+
+// common: TARGET VARIABLE PARAMETER......
 targetParam ::= target EQUAL fullIdent {:
     theState.setVariable(stringAcc.toString());
 :};
@@ -1729,12 +1822,14 @@ target ::= TARGET_F {:
     stringAcc = new StringBuffer();
 :};
 fullIdent ::=
-      IDENT:id {:
-        stringAcc.append(id.getAvatarName());
-      :}
-    | fullIdent POINT IDENT:id {:
-        stringAcc.append("." + id.getAvatarName());
-      :}
+      IDENT:id                 {: stringAcc.append(id.getAvatarName()); :}
+    | fullIdent POINT IDENT:id {: stringAcc.append("." + id.getAvatarName()); :}
+;
+
+// RANDOM ACTION..........
+randomAction ::=
+      STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA randomParam RPAR
+    | STATEACTION_F EQUAL ASSIGNMENT_T LPAR randomParam COMMA targetParam RPAR
 ;
 randomParam ::= VALUE_F EQUAL actionRandomExpr;
 actionRandomExpr ::=
@@ -1744,6 +1839,7 @@ actionRandomExpr ::=
       :}
 ;
 
+// COUNT ACTION............
 countAction ::=
       STATEACTION_F EQUAL ASSIGNMENT_T LPAR targetParam COMMA countParam RPAR
     | STATEACTION_F EQUAL ASSIGNMENT_T LPAR countParam COMMA targetParam RPAR
@@ -1757,71 +1853,96 @@ countParam ::= VALUE_F EQUAL IDENT:id POINT AMOUNT_U LPAR RPAR {:
 
 transition ::=
       transitionBegin:t THEN IDENT:id SEMICOLON:q {:
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
       :}
     | transitionBegin:t doActions THEN IDENT:id SEMICOLON:q {:
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
       :}
     | transitionBegin:t THEN IDENT:id LBRAC transitionLabels RBRAC:q {:
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setDelayExtra(delayExtraMap);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setDelayExtra(delayExtraMap);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
         delayExtraMap = null;
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
       :}
     | transitionBegin:t doActions THEN IDENT:id LBRAC transitionLabels RBRAC:q {:
-        getState(id.getAvatarName());
-        theTransition.setTarget(theState);
-        theTransition.setDelayExtra(delayExtraMap);
+        if (flag) {
+            getState(id.getAvatarName());
+            theTransition.setTarget(theState);
+            theTransition.setDelayExtra(delayExtraMap);
+            theTransition.setLeft(txleft);
+            theTransition.setRight(qxright);
+        }
         delayExtraMap = null;
-        theTransition.setLeft(txleft);
-        theTransition.setRight(qxright);
       :}
 ;
 transitionBegin ::=
       TRANSITION:t COLON AVTRANSITION_T FIRST IDENT:st {:
         getState(st.getAvatarName());
         getTransition(0);
-        if (!theTransition.declare())
+        if (!theTransition.declare()) {
             addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
                 "transition with same index has already been declared", null));
+            flag = false;
+        }
+        else flag = true;
         clearTransitionLbls();
       :}
     | TRANSITION:t COLON AVTRANSITION_T FIRST IDENT:st IF INDEX_F EQ INT:i {:
        getState(st.getAvatarName());
        getTransition(i-1);
-        if (!theTransition.declare())
-            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+       if (!theTransition.declare()) {
+           addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
                 "transition with same index has already been declared", null));
+           flag = true;
+       }
+       else flag = true;
        clearTransitionLbls();
      :}
 ;
+
+// TRANSITION ACTIONS---------------------------------
+
 doActions ::=
       transitionActionBegin LBRAC RBRAC
     | transitionActionBegin LBRAC transitionAction RBRAC {:
-            theTransition.setActions(actionList);
+            if (flag) theTransition.setActions(actionList);
             actionList = null;
       :}
     | receiveActionBegin LBRAC RBRAC
     | receiveActionBegin LBRAC receiveAction RBRAC {:
-            theTransition.setReceivePayload(receiveMap);
+            if (flag) theTransition.setReceivePayload(receiveMap);
             receiveMap = null;
       :}
 ;
+
+// ORDINARY TRANSITION ACTION LIST ..........................
+
 transitionActionBegin ::= DO ACTION COLON TRANSITIONACTION_T {:
      actionList = new ArrayList<StxAction>();
 :};
+
+// RECEIVE TRANSITION ACTION LIST ..........................
+
 receiveActionBegin ::= DO ACTION COLON RECEIVEACTION_T {:
      receiveMap = new HashMap<String,String>();
 :};
 
+// ORDINARY TRANSITION ACTION LIST ..........................
+
 transitionAction ::=
       FIRST START_U SEMICOLON THEN DONE_U SEMICOLON
     | FIRST START_U SEMICOLON actionSeq
@@ -1838,15 +1959,20 @@ act ::=
         actionList.add(new StxAction(axleft, qxright, c));
       :}
 ;
+assign ::= ASSIGN {:
+    stringAcc = new StringBuffer();
+:};
 fulllIdent ::= fullIdent {:
     RESULT = stringAcc.toString();
     stringAcc.setLength(0);
 :};
-assign ::= ASSIGN {:
-    stringAcc = new StringBuffer();
-:};
+
+// RECEIVE TRANSITION ACTION LIST ..........................
+
 receiveAction ::= messageLine receiveAssigns | receiveAssigns messageLine;
+
 messageLine ::= ITEM MSG_U COLON IDENT EQUAL PAYLOAD_F AS IDENT SEMICOLON;
+
 receiveAssigns ::=
       FIRST START_U SEMICOLON THEN DONE_U SEMICOLON
     | FIRST START_U SEMICOLON receiveAssignSeq
@@ -1862,6 +1988,9 @@ receiveAssign ::= THEN:t assign fullIdent GETS MSG_U POINT IDENT:id SEMICOLON {:
         addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
             "component " + id.getAvatarName() + " has already been assigned", null));
 :};
+
+// TRANSITION DISTRIBUTION LAWS ---------------------------------
+
 transitionLabels ::= transitionLabel SEMICOLON | transitionLabel SEMICOLON transitionLabels;
 transitionLabel ::= distributionLabel | weightLabel | extraLabel;
 distributionLabel ::= ATTRIBUTE:a DISTRIBUTION_A COLON STRING_T EQUAL STRING:s {:
@@ -1905,18 +2034,24 @@ extraLabel ::=
         delayExtraMap.put(n.getAvatarName(),s);
       :}
 ;
+
+// CLASSIFIED EXPRESSIONS +++++++++++++++++++++++++++++++++++++++
+
 stxRvalue ::=
-    stxCall:c {: RESULT = c; :}
-  | expr:e {: RESULT = new StxExpr(e); :}
+    stxCall:c {: RESULT = c; // FUNCTION CALL:}
+  | expr:e {: RESULT = new StxExpr(e);  // INT/BOOL EXPRESSION :}
   | complexIdent:i {: RESULT = new StxId(i); :}
 ;
 
-stxExpr ::= iexpr:e {: RESULT = new StxExpr(e); :}
+stxExpr ::= iexpr:e {: RESULT = new StxExpr(e); // INT/BOOL EXPRESSION :}
 ;
-iexpr ::= 
+
+iexpr ::= // string int/bool expression or complex ident
     expr:e  {: RESULT = e; :}
    | complexIdent:i {: RESULT = i; :}
 ;
+
+// INT/BOOL EXPRESSIONS ---------------------------
 expr    ::=
      iexpr:l PLUS iexpr:r {: RESULT = l + " + " + r; :}
    | iexpr:l MINUS iexpr:r {: RESULT = l + " - " + r; :}
@@ -1937,10 +2072,15 @@ expr    ::=
    | INT:i {: RESULT = "" + i; :}
    | BOOL:b {: RESULT = ( b ? "true" : "false" ); :}
 ;
+
+// COMPLEX IDENT ---------------------------
 complexIdent ::=
       IDENT:e {: RESULT = e.getAvatarName(); :}
     | IDENT:e POINT complexIdent:i  {: RESULT = e.getAvatarName() + "." + i; :}
 ;
+
+
+// METHOD CALL ---------------------------
 stxCall ::=
       stxCallBegin RPAR {:
         theCall.addSegment(stringAcc.toString() + ")");
diff --git a/src/main/java/avatartranslator/tosysmlv2/static/AvatarCommunication.sysml b/src/main/java/avatartranslator/tosysmlv2/static/AvatarCommunication.sysml
index e722fc1634..b39b8e1da4 100644
--- a/src/main/java/avatartranslator/tosysmlv2/static/AvatarCommunication.sysml
+++ b/src/main/java/avatartranslator/tosysmlv2/static/AvatarCommunication.sysml
@@ -79,7 +79,7 @@ package AvatarCommunication {
         private item fifo : '#Message'[0..*] ordered nonunique := null ;
         assert constraint { size(fifo) <= '@relation'.'@max_size' }
         
-        calc amount { return : Positive := size(fifo); }
+        calc '@amount' { return : Positive := size(fifo); }
     
         calc can_get { return : Boolean; notEmpty(fifo) }
         calc can_put { return : Boolean; size(fifo) < '@relation'.'@max_size' }
diff --git a/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml b/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml
index 353e724216..8d25e1bcb6 100644
--- a/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml
+++ b/src/main/java/avatartranslator/tosysmlv2/static/AvatarGeneral.sysml
@@ -11,9 +11,9 @@ package AvatarGeneral {
 
     // Assignment =======================================
     action def '#Assignment' {
-	    inout target : Anything[0..*] nonunique;
-	    in value : Anything[0..*] nonunique;
-	    first start; then assign target:= value; then done;
+	    inout '@target' : Anything[0..*] nonunique;
+	    in '@value' : Anything[0..*] nonunique;
+	    first start; then assign '@target':= '@value'; then done;
     }
     
     // SETS AND RANDOMS =============================================================
-- 
GitLab