diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index 9cf150b4f6de129dce4c195beeb35152b15275a1..2357f1d7ffab337e5178c0f131812c42ad98ce4b 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -16,10 +16,10 @@ import java.io.IOException;
 @SuppressWarnings({"rawtypes","unchecked","unused"})
 public class Parser implements IParser
 {
-    protected ArrayList nodeList;
+    protected List<Object> nodeList;
 
     private final Lexer lexer;
-    private final ListIterator stack = new LinkedList().listIterator();
+    private final ListIterator<State> stack = new LinkedList<State>().listIterator();
     private int last_pos;
     private int last_line;
     private Token last_token;
@@ -31,8 +31,8 @@ public class Parser implements IParser
     private final static int ACCEPT = 2;
     private final static int ERROR = 3;
 
-    protected ArrayList firstPopped = null;
-    protected ArrayList lastPopped = null;
+    protected List<Object> firstPopped = null;
+    protected List<Object> lastPopped = null;
 
     public Parser(Lexer lexer)
     {
@@ -55,13 +55,13 @@ public class Parser implements IParser
             return;
         }
 
-        if (elementToCheck instanceof LinkedList) {
+        if (elementToCheck instanceof List<?>) {
             /*
              * special case: this is a list of nodes, for example an identifier
              * list, so we don't want to check the list but the last element
              * added to it
              */
-            final LinkedList nodeList = (LinkedList) elementToCheck;
+            final List<?> nodeList = (List<?>) elementToCheck;
 
             if (nodeList.size() > 0) {
                 elementToCheck = nodeList.get(nodeList.size() - 1);
@@ -92,11 +92,11 @@ public class Parser implements IParser
     }
 
 
-    protected int findBeginPos(final ArrayList list,
+    protected int findBeginPos(final List<Object> list,
             PositionedNode n) {
         Object first = list.get(0);
         if (!(first instanceof PositionedNode) && !(first instanceof IToken)) {
-            List list2 = (List) first;
+            List<?> list2 = (List<?>) first;
 
             if (list2.size() > 0) {
                 first = list2.get(0);
@@ -123,10 +123,10 @@ public class Parser implements IParser
     }
 
 
-    protected int findEndPos(final ArrayList list) {
+    protected int findEndPos(final List<Object> list) {
         Object last = list.get(list.size() - 1);
         if (!(last instanceof PositionedNode) && !(last instanceof IToken)) {
-            final List list2 = (List) last;
+            final List<?> list2 = (List<?>) last;
             last = list2.get(list2.size() - 1);
         }
 
@@ -170,7 +170,7 @@ public class Parser implements IParser
         return true;
     }
 
-    private void push(int numstate, ArrayList listNode) throws ParserException, LexerException, IOException
+    private void push(int numstate, List<Object> listNode) throws ParserException, LexerException, IOException
     {
         this.nodeList = listNode;
 
@@ -180,7 +180,7 @@ public class Parser implements IParser
             return;
         }
 
-        State s = (State) this.stack.next();
+        State s = this.stack.next();
         s.state = numstate;
         s.nodes = this.nodeList;
     }
@@ -216,14 +216,14 @@ public class Parser implements IParser
 
     private int state()
     {
-        State s = (State) this.stack.previous();
+        State s = this.stack.previous();
         this.stack.next();
         return s.state;
     }
 
-    protected ArrayList pop()
+    protected List<Object> pop()
     {
-        ArrayList list = ((State) this.stack.previous()).nodes;
+        List<Object> list = this.stack.previous().nodes;
         if (this.firstPopped == null) {
             this.firstPopped = list;
         } else {
@@ -288,7 +288,7 @@ public class Parser implements IParser
             {
                 case SHIFT:
                 {
-                    ArrayList list = new ArrayList();
+                    List<Object> list = new ArrayList<Object>();
                     list.add(this.lexer.next());
                     push(this.action[1], list);
                 }
@@ -298,1615 +298,1615 @@ public class Parser implements IParser
                     {
                         case 0: /* reduce AAgrammar1Grammar */
                         {
-                            ArrayList list = new0();
+                            List<Object> list = new0();
                             push(goTo(0), list);
                         }
                         break;
                         case 1: /* reduce AAgrammar2Grammar */
                         {
-                            ArrayList list = new1();
+                            List<Object> list = new1();
                             push(goTo(0), list);
                         }
                         break;
                         case 2: /* reduce AAgrammar3Grammar */
                         {
-                            ArrayList list = new2();
+                            List<Object> list = new2();
                             push(goTo(0), list);
                         }
                         break;
                         case 3: /* reduce AAgrammar4Grammar */
                         {
-                            ArrayList list = new3();
+                            List<Object> list = new3();
                             push(goTo(0), list);
                         }
                         break;
                         case 4: /* reduce AAgrammar5Grammar */
                         {
-                            ArrayList list = new4();
+                            List<Object> list = new4();
                             push(goTo(0), list);
                         }
                         break;
                         case 5: /* reduce AAgrammar6Grammar */
                         {
-                            ArrayList list = new5();
+                            List<Object> list = new5();
                             push(goTo(0), list);
                         }
                         break;
                         case 6: /* reduce AAgrammar7Grammar */
                         {
-                            ArrayList list = new6();
+                            List<Object> list = new6();
                             push(goTo(0), list);
                         }
                         break;
                         case 7: /* reduce AAgrammar8Grammar */
                         {
-                            ArrayList list = new7();
+                            List<Object> list = new7();
                             push(goTo(0), list);
                         }
                         break;
                         case 8: /* reduce AAgrammar9Grammar */
                         {
-                            ArrayList list = new8();
+                            List<Object> list = new8();
                             push(goTo(0), list);
                         }
                         break;
                         case 9: /* reduce AAgrammar10Grammar */
                         {
-                            ArrayList list = new9();
+                            List<Object> list = new9();
                             push(goTo(0), list);
                         }
                         break;
                         case 10: /* reduce AAgrammar11Grammar */
                         {
-                            ArrayList list = new10();
+                            List<Object> list = new10();
                             push(goTo(0), list);
                         }
                         break;
                         case 11: /* reduce AAgrammar12Grammar */
                         {
-                            ArrayList list = new11();
+                            List<Object> list = new11();
                             push(goTo(0), list);
                         }
                         break;
                         case 12: /* reduce AAgrammar13Grammar */
                         {
-                            ArrayList list = new12();
+                            List<Object> list = new12();
                             push(goTo(0), list);
                         }
                         break;
                         case 13: /* reduce AAgrammar14Grammar */
                         {
-                            ArrayList list = new13();
+                            List<Object> list = new13();
                             push(goTo(0), list);
                         }
                         break;
                         case 14: /* reduce AAgrammar15Grammar */
                         {
-                            ArrayList list = new14();
+                            List<Object> list = new14();
                             push(goTo(0), list);
                         }
                         break;
                         case 15: /* reduce AAgrammar16Grammar */
                         {
-                            ArrayList list = new15();
+                            List<Object> list = new15();
                             push(goTo(0), list);
                         }
                         break;
                         case 16: /* reduce AAgrammar17Grammar */
                         {
-                            ArrayList list = new16();
+                            List<Object> list = new16();
                             push(goTo(0), list);
                         }
                         break;
                         case 17: /* reduce AAgrammar18Grammar */
                         {
-                            ArrayList list = new17();
+                            List<Object> list = new17();
                             push(goTo(0), list);
                         }
                         break;
                         case 18: /* reduce AAgrammar19Grammar */
                         {
-                            ArrayList list = new18();
+                            List<Object> list = new18();
                             push(goTo(0), list);
                         }
                         break;
                         case 19: /* reduce AAgrammar20Grammar */
                         {
-                            ArrayList list = new19();
+                            List<Object> list = new19();
                             push(goTo(0), list);
                         }
                         break;
                         case 20: /* reduce AAgrammar21Grammar */
                         {
-                            ArrayList list = new20();
+                            List<Object> list = new20();
                             push(goTo(0), list);
                         }
                         break;
                         case 21: /* reduce AAgrammar22Grammar */
                         {
-                            ArrayList list = new21();
+                            List<Object> list = new21();
                             push(goTo(0), list);
                         }
                         break;
                         case 22: /* reduce AAgrammar23Grammar */
                         {
-                            ArrayList list = new22();
+                            List<Object> list = new22();
                             push(goTo(0), list);
                         }
                         break;
                         case 23: /* reduce AAgrammar24Grammar */
                         {
-                            ArrayList list = new23();
+                            List<Object> list = new23();
                             push(goTo(0), list);
                         }
                         break;
                         case 24: /* reduce AAgrammar25Grammar */
                         {
-                            ArrayList list = new24();
+                            List<Object> list = new24();
                             push(goTo(0), list);
                         }
                         break;
                         case 25: /* reduce AAgrammar26Grammar */
                         {
-                            ArrayList list = new25();
+                            List<Object> list = new25();
                             push(goTo(0), list);
                         }
                         break;
                         case 26: /* reduce AAgrammar27Grammar */
                         {
-                            ArrayList list = new26();
+                            List<Object> list = new26();
                             push(goTo(0), list);
                         }
                         break;
                         case 27: /* reduce AAgrammar28Grammar */
                         {
-                            ArrayList list = new27();
+                            List<Object> list = new27();
                             push(goTo(0), list);
                         }
                         break;
                         case 28: /* reduce AAgrammar29Grammar */
                         {
-                            ArrayList list = new28();
+                            List<Object> list = new28();
                             push(goTo(0), list);
                         }
                         break;
                         case 29: /* reduce AAgrammar30Grammar */
                         {
-                            ArrayList list = new29();
+                            List<Object> list = new29();
                             push(goTo(0), list);
                         }
                         break;
                         case 30: /* reduce AAgrammar31Grammar */
                         {
-                            ArrayList list = new30();
+                            List<Object> list = new30();
                             push(goTo(0), list);
                         }
                         break;
                         case 31: /* reduce AAgrammar32Grammar */
                         {
-                            ArrayList list = new31();
+                            List<Object> list = new31();
                             push(goTo(0), list);
                         }
                         break;
                         case 32: /* reduce AAgrammar33Grammar */
                         {
-                            ArrayList list = new32();
+                            List<Object> list = new32();
                             push(goTo(0), list);
                         }
                         break;
                         case 33: /* reduce AAgrammar34Grammar */
                         {
-                            ArrayList list = new33();
+                            List<Object> list = new33();
                             push(goTo(0), list);
                         }
                         break;
                         case 34: /* reduce AAgrammar35Grammar */
                         {
-                            ArrayList list = new34();
+                            List<Object> list = new34();
                             push(goTo(0), list);
                         }
                         break;
                         case 35: /* reduce AAgrammar36Grammar */
                         {
-                            ArrayList list = new35();
+                            List<Object> list = new35();
                             push(goTo(0), list);
                         }
                         break;
                         case 36: /* reduce AAgrammar37Grammar */
                         {
-                            ArrayList list = new36();
+                            List<Object> list = new36();
                             push(goTo(0), list);
                         }
                         break;
                         case 37: /* reduce AAgrammar38Grammar */
                         {
-                            ArrayList list = new37();
+                            List<Object> list = new37();
                             push(goTo(0), list);
                         }
                         break;
                         case 38: /* reduce AAgrammar39Grammar */
                         {
-                            ArrayList list = new38();
+                            List<Object> list = new38();
                             push(goTo(0), list);
                         }
                         break;
                         case 39: /* reduce AAgrammar40Grammar */
                         {
-                            ArrayList list = new39();
+                            List<Object> list = new39();
                             push(goTo(0), list);
                         }
                         break;
                         case 40: /* reduce AAgrammar41Grammar */
                         {
-                            ArrayList list = new40();
+                            List<Object> list = new40();
                             push(goTo(0), list);
                         }
                         break;
                         case 41: /* reduce AAgrammar42Grammar */
                         {
-                            ArrayList list = new41();
+                            List<Object> list = new41();
                             push(goTo(0), list);
                         }
                         break;
                         case 42: /* reduce AAgrammar43Grammar */
                         {
-                            ArrayList list = new42();
+                            List<Object> list = new42();
                             push(goTo(0), list);
                         }
                         break;
                         case 43: /* reduce AAgrammar44Grammar */
                         {
-                            ArrayList list = new43();
+                            List<Object> list = new43();
                             push(goTo(0), list);
                         }
                         break;
                         case 44: /* reduce AAgrammar45Grammar */
                         {
-                            ArrayList list = new44();
+                            List<Object> list = new44();
                             push(goTo(0), list);
                         }
                         break;
                         case 45: /* reduce AAgrammar46Grammar */
                         {
-                            ArrayList list = new45();
+                            List<Object> list = new45();
                             push(goTo(0), list);
                         }
                         break;
                         case 46: /* reduce AAgrammar47Grammar */
                         {
-                            ArrayList list = new46();
+                            List<Object> list = new46();
                             push(goTo(0), list);
                         }
                         break;
                         case 47: /* reduce AAgrammar48Grammar */
                         {
-                            ArrayList list = new47();
+                            List<Object> list = new47();
                             push(goTo(0), list);
                         }
                         break;
                         case 48: /* reduce AAgrammar49Grammar */
                         {
-                            ArrayList list = new48();
+                            List<Object> list = new48();
                             push(goTo(0), list);
                         }
                         break;
                         case 49: /* reduce AAgrammar50Grammar */
                         {
-                            ArrayList list = new49();
+                            List<Object> list = new49();
                             push(goTo(0), list);
                         }
                         break;
                         case 50: /* reduce AAgrammar51Grammar */
                         {
-                            ArrayList list = new50();
+                            List<Object> list = new50();
                             push(goTo(0), list);
                         }
                         break;
                         case 51: /* reduce AAgrammar52Grammar */
                         {
-                            ArrayList list = new51();
+                            List<Object> list = new51();
                             push(goTo(0), list);
                         }
                         break;
                         case 52: /* reduce AAgrammar53Grammar */
                         {
-                            ArrayList list = new52();
+                            List<Object> list = new52();
                             push(goTo(0), list);
                         }
                         break;
                         case 53: /* reduce AAgrammar54Grammar */
                         {
-                            ArrayList list = new53();
+                            List<Object> list = new53();
                             push(goTo(0), list);
                         }
                         break;
                         case 54: /* reduce AAgrammar55Grammar */
                         {
-                            ArrayList list = new54();
+                            List<Object> list = new54();
                             push(goTo(0), list);
                         }
                         break;
                         case 55: /* reduce AAgrammar56Grammar */
                         {
-                            ArrayList list = new55();
+                            List<Object> list = new55();
                             push(goTo(0), list);
                         }
                         break;
                         case 56: /* reduce AAgrammar57Grammar */
                         {
-                            ArrayList list = new56();
+                            List<Object> list = new56();
                             push(goTo(0), list);
                         }
                         break;
                         case 57: /* reduce AAgrammar58Grammar */
                         {
-                            ArrayList list = new57();
+                            List<Object> list = new57();
                             push(goTo(0), list);
                         }
                         break;
                         case 58: /* reduce AAgrammar59Grammar */
                         {
-                            ArrayList list = new58();
+                            List<Object> list = new58();
                             push(goTo(0), list);
                         }
                         break;
                         case 59: /* reduce AAgrammar60Grammar */
                         {
-                            ArrayList list = new59();
+                            List<Object> list = new59();
                             push(goTo(0), list);
                         }
                         break;
                         case 60: /* reduce AAgrammar61Grammar */
                         {
-                            ArrayList list = new60();
+                            List<Object> list = new60();
                             push(goTo(0), list);
                         }
                         break;
                         case 61: /* reduce AAgrammar62Grammar */
                         {
-                            ArrayList list = new61();
+                            List<Object> list = new61();
                             push(goTo(0), list);
                         }
                         break;
                         case 62: /* reduce AAgrammar63Grammar */
                         {
-                            ArrayList list = new62();
+                            List<Object> list = new62();
                             push(goTo(0), list);
                         }
                         break;
                         case 63: /* reduce AAgrammar64Grammar */
                         {
-                            ArrayList list = new63();
+                            List<Object> list = new63();
                             push(goTo(0), list);
                         }
                         break;
                         case 64: /* reduce AAgrammar65Grammar */
                         {
-                            ArrayList list = new64();
+                            List<Object> list = new64();
                             push(goTo(0), list);
                         }
                         break;
                         case 65: /* reduce AAgrammar66Grammar */
                         {
-                            ArrayList list = new65();
+                            List<Object> list = new65();
                             push(goTo(0), list);
                         }
                         break;
                         case 66: /* reduce AAgrammar67Grammar */
                         {
-                            ArrayList list = new66();
+                            List<Object> list = new66();
                             push(goTo(0), list);
                         }
                         break;
                         case 67: /* reduce AAgrammar68Grammar */
                         {
-                            ArrayList list = new67();
+                            List<Object> list = new67();
                             push(goTo(0), list);
                         }
                         break;
                         case 68: /* reduce AAgrammar69Grammar */
                         {
-                            ArrayList list = new68();
+                            List<Object> list = new68();
                             push(goTo(0), list);
                         }
                         break;
                         case 69: /* reduce AAgrammar70Grammar */
                         {
-                            ArrayList list = new69();
+                            List<Object> list = new69();
                             push(goTo(0), list);
                         }
                         break;
                         case 70: /* reduce AAgrammar71Grammar */
                         {
-                            ArrayList list = new70();
+                            List<Object> list = new70();
                             push(goTo(0), list);
                         }
                         break;
                         case 71: /* reduce AAgrammar72Grammar */
                         {
-                            ArrayList list = new71();
+                            List<Object> list = new71();
                             push(goTo(0), list);
                         }
                         break;
                         case 72: /* reduce AAgrammar73Grammar */
                         {
-                            ArrayList list = new72();
+                            List<Object> list = new72();
                             push(goTo(0), list);
                         }
                         break;
                         case 73: /* reduce AAgrammar74Grammar */
                         {
-                            ArrayList list = new73();
+                            List<Object> list = new73();
                             push(goTo(0), list);
                         }
                         break;
                         case 74: /* reduce AAgrammar75Grammar */
                         {
-                            ArrayList list = new74();
+                            List<Object> list = new74();
                             push(goTo(0), list);
                         }
                         break;
                         case 75: /* reduce AAgrammar76Grammar */
                         {
-                            ArrayList list = new75();
+                            List<Object> list = new75();
                             push(goTo(0), list);
                         }
                         break;
                         case 76: /* reduce AAgrammar77Grammar */
                         {
-                            ArrayList list = new76();
+                            List<Object> list = new76();
                             push(goTo(0), list);
                         }
                         break;
                         case 77: /* reduce AAgrammar78Grammar */
                         {
-                            ArrayList list = new77();
+                            List<Object> list = new77();
                             push(goTo(0), list);
                         }
                         break;
                         case 78: /* reduce AAgrammar79Grammar */
                         {
-                            ArrayList list = new78();
+                            List<Object> list = new78();
                             push(goTo(0), list);
                         }
                         break;
                         case 79: /* reduce AAgrammar80Grammar */
                         {
-                            ArrayList list = new79();
+                            List<Object> list = new79();
                             push(goTo(0), list);
                         }
                         break;
                         case 80: /* reduce AAgrammar81Grammar */
                         {
-                            ArrayList list = new80();
+                            List<Object> list = new80();
                             push(goTo(0), list);
                         }
                         break;
                         case 81: /* reduce AAgrammar82Grammar */
                         {
-                            ArrayList list = new81();
+                            List<Object> list = new81();
                             push(goTo(0), list);
                         }
                         break;
                         case 82: /* reduce AAgrammar83Grammar */
                         {
-                            ArrayList list = new82();
+                            List<Object> list = new82();
                             push(goTo(0), list);
                         }
                         break;
                         case 83: /* reduce AAgrammar84Grammar */
                         {
-                            ArrayList list = new83();
+                            List<Object> list = new83();
                             push(goTo(0), list);
                         }
                         break;
                         case 84: /* reduce AAgrammar85Grammar */
                         {
-                            ArrayList list = new84();
+                            List<Object> list = new84();
                             push(goTo(0), list);
                         }
                         break;
                         case 85: /* reduce AAgrammar86Grammar */
                         {
-                            ArrayList list = new85();
+                            List<Object> list = new85();
                             push(goTo(0), list);
                         }
                         break;
                         case 86: /* reduce AAgrammar87Grammar */
                         {
-                            ArrayList list = new86();
+                            List<Object> list = new86();
                             push(goTo(0), list);
                         }
                         break;
                         case 87: /* reduce AAgrammar88Grammar */
                         {
-                            ArrayList list = new87();
+                            List<Object> list = new87();
                             push(goTo(0), list);
                         }
                         break;
                         case 88: /* reduce AAgrammar89Grammar */
                         {
-                            ArrayList list = new88();
+                            List<Object> list = new88();
                             push(goTo(0), list);
                         }
                         break;
                         case 89: /* reduce AAgrammar90Grammar */
                         {
-                            ArrayList list = new89();
+                            List<Object> list = new89();
                             push(goTo(0), list);
                         }
                         break;
                         case 90: /* reduce AAgrammar91Grammar */
                         {
-                            ArrayList list = new90();
+                            List<Object> list = new90();
                             push(goTo(0), list);
                         }
                         break;
                         case 91: /* reduce AAgrammar92Grammar */
                         {
-                            ArrayList list = new91();
+                            List<Object> list = new91();
                             push(goTo(0), list);
                         }
                         break;
                         case 92: /* reduce AAgrammar93Grammar */
                         {
-                            ArrayList list = new92();
+                            List<Object> list = new92();
                             push(goTo(0), list);
                         }
                         break;
                         case 93: /* reduce AAgrammar94Grammar */
                         {
-                            ArrayList list = new93();
+                            List<Object> list = new93();
                             push(goTo(0), list);
                         }
                         break;
                         case 94: /* reduce AAgrammar95Grammar */
                         {
-                            ArrayList list = new94();
+                            List<Object> list = new94();
                             push(goTo(0), list);
                         }
                         break;
                         case 95: /* reduce AAgrammar96Grammar */
                         {
-                            ArrayList list = new95();
+                            List<Object> list = new95();
                             push(goTo(0), list);
                         }
                         break;
                         case 96: /* reduce AAgrammar97Grammar */
                         {
-                            ArrayList list = new96();
+                            List<Object> list = new96();
                             push(goTo(0), list);
                         }
                         break;
                         case 97: /* reduce AAgrammar98Grammar */
                         {
-                            ArrayList list = new97();
+                            List<Object> list = new97();
                             push(goTo(0), list);
                         }
                         break;
                         case 98: /* reduce AAgrammar99Grammar */
                         {
-                            ArrayList list = new98();
+                            List<Object> list = new98();
                             push(goTo(0), list);
                         }
                         break;
                         case 99: /* reduce AAgrammar100Grammar */
                         {
-                            ArrayList list = new99();
+                            List<Object> list = new99();
                             push(goTo(0), list);
                         }
                         break;
                         case 100: /* reduce AAgrammar101Grammar */
                         {
-                            ArrayList list = new100();
+                            List<Object> list = new100();
                             push(goTo(0), list);
                         }
                         break;
                         case 101: /* reduce AAgrammar102Grammar */
                         {
-                            ArrayList list = new101();
+                            List<Object> list = new101();
                             push(goTo(0), list);
                         }
                         break;
                         case 102: /* reduce AAgrammar103Grammar */
                         {
-                            ArrayList list = new102();
+                            List<Object> list = new102();
                             push(goTo(0), list);
                         }
                         break;
                         case 103: /* reduce AAgrammar104Grammar */
                         {
-                            ArrayList list = new103();
+                            List<Object> list = new103();
                             push(goTo(0), list);
                         }
                         break;
                         case 104: /* reduce AAgrammar105Grammar */
                         {
-                            ArrayList list = new104();
+                            List<Object> list = new104();
                             push(goTo(0), list);
                         }
                         break;
                         case 105: /* reduce AAgrammar106Grammar */
                         {
-                            ArrayList list = new105();
+                            List<Object> list = new105();
                             push(goTo(0), list);
                         }
                         break;
                         case 106: /* reduce AAgrammar107Grammar */
                         {
-                            ArrayList list = new106();
+                            List<Object> list = new106();
                             push(goTo(0), list);
                         }
                         break;
                         case 107: /* reduce AAgrammar108Grammar */
                         {
-                            ArrayList list = new107();
+                            List<Object> list = new107();
                             push(goTo(0), list);
                         }
                         break;
                         case 108: /* reduce AAgrammar109Grammar */
                         {
-                            ArrayList list = new108();
+                            List<Object> list = new108();
                             push(goTo(0), list);
                         }
                         break;
                         case 109: /* reduce AAgrammar110Grammar */
                         {
-                            ArrayList list = new109();
+                            List<Object> list = new109();
                             push(goTo(0), list);
                         }
                         break;
                         case 110: /* reduce AAgrammar111Grammar */
                         {
-                            ArrayList list = new110();
+                            List<Object> list = new110();
                             push(goTo(0), list);
                         }
                         break;
                         case 111: /* reduce AAgrammar112Grammar */
                         {
-                            ArrayList list = new111();
+                            List<Object> list = new111();
                             push(goTo(0), list);
                         }
                         break;
                         case 112: /* reduce AAgrammar113Grammar */
                         {
-                            ArrayList list = new112();
+                            List<Object> list = new112();
                             push(goTo(0), list);
                         }
                         break;
                         case 113: /* reduce AAgrammar114Grammar */
                         {
-                            ArrayList list = new113();
+                            List<Object> list = new113();
                             push(goTo(0), list);
                         }
                         break;
                         case 114: /* reduce AAgrammar115Grammar */
                         {
-                            ArrayList list = new114();
+                            List<Object> list = new114();
                             push(goTo(0), list);
                         }
                         break;
                         case 115: /* reduce AAgrammar116Grammar */
                         {
-                            ArrayList list = new115();
+                            List<Object> list = new115();
                             push(goTo(0), list);
                         }
                         break;
                         case 116: /* reduce AAgrammar117Grammar */
                         {
-                            ArrayList list = new116();
+                            List<Object> list = new116();
                             push(goTo(0), list);
                         }
                         break;
                         case 117: /* reduce AAgrammar118Grammar */
                         {
-                            ArrayList list = new117();
+                            List<Object> list = new117();
                             push(goTo(0), list);
                         }
                         break;
                         case 118: /* reduce AAgrammar119Grammar */
                         {
-                            ArrayList list = new118();
+                            List<Object> list = new118();
                             push(goTo(0), list);
                         }
                         break;
                         case 119: /* reduce AAgrammar120Grammar */
                         {
-                            ArrayList list = new119();
+                            List<Object> list = new119();
                             push(goTo(0), list);
                         }
                         break;
                         case 120: /* reduce AAgrammar121Grammar */
                         {
-                            ArrayList list = new120();
+                            List<Object> list = new120();
                             push(goTo(0), list);
                         }
                         break;
                         case 121: /* reduce AAgrammar122Grammar */
                         {
-                            ArrayList list = new121();
+                            List<Object> list = new121();
                             push(goTo(0), list);
                         }
                         break;
                         case 122: /* reduce AAgrammar123Grammar */
                         {
-                            ArrayList list = new122();
+                            List<Object> list = new122();
                             push(goTo(0), list);
                         }
                         break;
                         case 123: /* reduce AAgrammar124Grammar */
                         {
-                            ArrayList list = new123();
+                            List<Object> list = new123();
                             push(goTo(0), list);
                         }
                         break;
                         case 124: /* reduce AAgrammar125Grammar */
                         {
-                            ArrayList list = new124();
+                            List<Object> list = new124();
                             push(goTo(0), list);
                         }
                         break;
                         case 125: /* reduce AAgrammar126Grammar */
                         {
-                            ArrayList list = new125();
+                            List<Object> list = new125();
                             push(goTo(0), list);
                         }
                         break;
                         case 126: /* reduce AAgrammar127Grammar */
                         {
-                            ArrayList list = new126();
+                            List<Object> list = new126();
                             push(goTo(0), list);
                         }
                         break;
                         case 127: /* reduce AAgrammar128Grammar */
                         {
-                            ArrayList list = new127();
+                            List<Object> list = new127();
                             push(goTo(0), list);
                         }
                         break;
                         case 128: /* reduce APackage */
                         {
-                            ArrayList list = new128();
+                            List<Object> list = new128();
                             push(goTo(1), list);
                         }
                         break;
                         case 129: /* reduce AApkgname1PkgName */
                         {
-                            ArrayList list = new129();
+                            List<Object> list = new129();
                             push(goTo(2), list);
                         }
                         break;
                         case 130: /* reduce AApkgname2PkgName */
                         {
-                            ArrayList list = new130();
+                            List<Object> list = new130();
                             push(goTo(2), list);
                         }
                         break;
                         case 131: /* reduce APkgNameTail */
                         {
-                            ArrayList list = new131();
+                            List<Object> list = new131();
                             push(goTo(3), list);
                         }
                         break;
                         case 132: /* reduce AHelpers */
                         {
-                            ArrayList list = new132();
+                            List<Object> list = new132();
                             push(goTo(4), list);
                         }
                         break;
                         case 133: /* reduce AHelperDef */
                         {
-                            ArrayList list = new133();
+                            List<Object> list = new133();
                             push(goTo(5), list);
                         }
                         break;
                         case 134: /* reduce AStates */
                         {
-                            ArrayList list = new134();
+                            List<Object> list = new134();
                             push(goTo(6), list);
                         }
                         break;
                         case 135: /* reduce AAidlist1IdList */
                         {
-                            ArrayList list = new135();
+                            List<Object> list = new135();
                             push(goTo(7), list);
                         }
                         break;
                         case 136: /* reduce AAidlist2IdList */
                         {
-                            ArrayList list = new136();
+                            List<Object> list = new136();
                             push(goTo(7), list);
                         }
                         break;
                         case 137: /* reduce AIdListTail */
                         {
-                            ArrayList list = new137();
+                            List<Object> list = new137();
                             push(goTo(8), list);
                         }
                         break;
                         case 138: /* reduce ATokens */
                         {
-                            ArrayList list = new138();
+                            List<Object> list = new138();
                             push(goTo(9), list);
                         }
                         break;
                         case 139: /* reduce AAtokendef1TokenDef */
                         {
-                            ArrayList list = new139();
+                            List<Object> list = new139();
                             push(goTo(10), list);
                         }
                         break;
                         case 140: /* reduce AAtokendef2TokenDef */
                         {
-                            ArrayList list = new140();
+                            List<Object> list = new140();
                             push(goTo(10), list);
                         }
                         break;
                         case 141: /* reduce AAtokendef3TokenDef */
                         {
-                            ArrayList list = new141();
+                            List<Object> list = new141();
                             push(goTo(10), list);
                         }
                         break;
                         case 142: /* reduce AAtokendef4TokenDef */
                         {
-                            ArrayList list = new142();
+                            List<Object> list = new142();
                             push(goTo(10), list);
                         }
                         break;
                         case 143: /* reduce AAstatelist1StateList */
                         {
-                            ArrayList list = new143();
+                            List<Object> list = new143();
                             push(goTo(11), list);
                         }
                         break;
                         case 144: /* reduce AAstatelist2StateList */
                         {
-                            ArrayList list = new144();
+                            List<Object> list = new144();
                             push(goTo(11), list);
                         }
                         break;
                         case 145: /* reduce AAstatelist3StateList */
                         {
-                            ArrayList list = new145();
+                            List<Object> list = new145();
                             push(goTo(11), list);
                         }
                         break;
                         case 146: /* reduce AAstatelist4StateList */
                         {
-                            ArrayList list = new146();
+                            List<Object> list = new146();
                             push(goTo(11), list);
                         }
                         break;
                         case 147: /* reduce AAstatelisttail1StateListTail */
                         {
-                            ArrayList list = new147();
+                            List<Object> list = new147();
                             push(goTo(12), list);
                         }
                         break;
                         case 148: /* reduce AAstatelisttail2StateListTail */
                         {
-                            ArrayList list = new148();
+                            List<Object> list = new148();
                             push(goTo(12), list);
                         }
                         break;
                         case 149: /* reduce ATransition */
                         {
-                            ArrayList list = new149();
+                            List<Object> list = new149();
                             push(goTo(13), list);
                         }
                         break;
                         case 150: /* reduce AAigntokens1IgnTokens */
                         {
-                            ArrayList list = new150();
+                            List<Object> list = new150();
                             push(goTo(14), list);
                         }
                         break;
                         case 151: /* reduce AAigntokens2IgnTokens */
                         {
-                            ArrayList list = new151();
+                            List<Object> list = new151();
                             push(goTo(14), list);
                         }
                         break;
                         case 152: /* reduce ALookAhead */
                         {
-                            ArrayList list = new152();
+                            List<Object> list = new152();
                             push(goTo(15), list);
                         }
                         break;
                         case 153: /* reduce AAregexp1RegExp */
                         {
-                            ArrayList list = new153();
+                            List<Object> list = new153();
                             push(goTo(16), list);
                         }
                         break;
                         case 154: /* reduce AAregexp2RegExp */
                         {
-                            ArrayList list = new154();
+                            List<Object> list = new154();
                             push(goTo(16), list);
                         }
                         break;
                         case 155: /* reduce ARegExpTail */
                         {
-                            ArrayList list = new155();
+                            List<Object> list = new155();
                             push(goTo(17), list);
                         }
                         break;
                         case 156: /* reduce AAconcat1Concat */
                         {
-                            ArrayList list = new156();
+                            List<Object> list = new156();
                             push(goTo(18), list);
                         }
                         break;
                         case 157: /* reduce AAconcat2Concat */
                         {
-                            ArrayList list = new157();
+                            List<Object> list = new157();
                             push(goTo(18), list);
                         }
                         break;
                         case 158: /* reduce AAunexp1UnExp */
                         {
-                            ArrayList list = new158();
+                            List<Object> list = new158();
                             push(goTo(19), list);
                         }
                         break;
                         case 159: /* reduce AAunexp2UnExp */
                         {
-                            ArrayList list = new159();
+                            List<Object> list = new159();
                             push(goTo(19), list);
                         }
                         break;
                         case 160: /* reduce ACharBasic */
                         {
-                            ArrayList list = new160();
+                            List<Object> list = new160();
                             push(goTo(20), list);
                         }
                         break;
                         case 161: /* reduce ASetBasic */
                         {
-                            ArrayList list = new161();
+                            List<Object> list = new161();
                             push(goTo(20), list);
                         }
                         break;
                         case 162: /* reduce AStringBasic */
                         {
-                            ArrayList list = new162();
+                            List<Object> list = new162();
                             push(goTo(20), list);
                         }
                         break;
                         case 163: /* reduce AIdBasic */
                         {
-                            ArrayList list = new163();
+                            List<Object> list = new163();
                             push(goTo(20), list);
                         }
                         break;
                         case 164: /* reduce ARegExpBasic */
                         {
-                            ArrayList list = new164();
+                            List<Object> list = new164();
                             push(goTo(20), list);
                         }
                         break;
                         case 165: /* reduce ACharChar */
                         {
-                            ArrayList list = new165();
+                            List<Object> list = new165();
                             push(goTo(21), list);
                         }
                         break;
                         case 166: /* reduce ADecChar */
                         {
-                            ArrayList list = new166();
+                            List<Object> list = new166();
                             push(goTo(21), list);
                         }
                         break;
                         case 167: /* reduce AHexChar */
                         {
-                            ArrayList list = new167();
+                            List<Object> list = new167();
                             push(goTo(21), list);
                         }
                         break;
                         case 168: /* reduce AOperationSet */
                         {
-                            ArrayList list = new168();
+                            List<Object> list = new168();
                             push(goTo(22), list);
                         }
                         break;
                         case 169: /* reduce AIntervalSet */
                         {
-                            ArrayList list = new169();
+                            List<Object> list = new169();
                             push(goTo(22), list);
                         }
                         break;
                         case 170: /* reduce AStarUnOp */
                         {
-                            ArrayList list = new170();
+                            List<Object> list = new170();
                             push(goTo(23), list);
                         }
                         break;
                         case 171: /* reduce AQMarkUnOp */
                         {
-                            ArrayList list = new171();
+                            List<Object> list = new171();
                             push(goTo(23), list);
                         }
                         break;
                         case 172: /* reduce APlusUnOp */
                         {
-                            ArrayList list = new172();
+                            List<Object> list = new172();
                             push(goTo(23), list);
                         }
                         break;
                         case 173: /* reduce APlusBinOp */
                         {
-                            ArrayList list = new173();
+                            List<Object> list = new173();
                             push(goTo(24), list);
                         }
                         break;
                         case 174: /* reduce AMinusBinOp */
                         {
-                            ArrayList list = new174();
+                            List<Object> list = new174();
                             push(goTo(24), list);
                         }
                         break;
                         case 175: /* reduce AProductions */
                         {
-                            ArrayList list = new175();
+                            List<Object> list = new175();
                             push(goTo(25), list);
                         }
                         break;
                         case 176: /* reduce AAprod1Prod */
                         {
-                            ArrayList list = new176();
+                            List<Object> list = new176();
                             push(goTo(26), list);
                         }
                         break;
                         case 177: /* reduce AAprod2Prod */
                         {
-                            ArrayList list = new177();
+                            List<Object> list = new177();
                             push(goTo(26), list);
                         }
                         break;
                         case 178: /* reduce AAprodtransform1ProdTransform */
                         {
-                            ArrayList list = new178();
+                            List<Object> list = new178();
                             push(goTo(27), list);
                         }
                         break;
                         case 179: /* reduce AAprodtransform2ProdTransform */
                         {
-                            ArrayList list = new179();
+                            List<Object> list = new179();
                             push(goTo(27), list);
                         }
                         break;
                         case 180: /* reduce AAalts1Alts */
                         {
-                            ArrayList list = new180();
+                            List<Object> list = new180();
                             push(goTo(28), list);
                         }
                         break;
                         case 181: /* reduce AAalts2Alts */
                         {
-                            ArrayList list = new181();
+                            List<Object> list = new181();
                             push(goTo(28), list);
                         }
                         break;
                         case 182: /* reduce AAltsTail */
                         {
-                            ArrayList list = new182();
+                            List<Object> list = new182();
                             push(goTo(29), list);
                         }
                         break;
                         case 183: /* reduce AAalt1Alt */
                         {
-                            ArrayList list = new183();
+                            List<Object> list = new183();
                             push(goTo(30), list);
                         }
                         break;
                         case 184: /* reduce AAalt2Alt */
                         {
-                            ArrayList list = new184();
+                            List<Object> list = new184();
                             push(goTo(30), list);
                         }
                         break;
                         case 185: /* reduce AAalt3Alt */
                         {
-                            ArrayList list = new185();
+                            List<Object> list = new185();
                             push(goTo(30), list);
                         }
                         break;
                         case 186: /* reduce AAalt4Alt */
                         {
-                            ArrayList list = new186();
+                            List<Object> list = new186();
                             push(goTo(30), list);
                         }
                         break;
                         case 187: /* reduce AAalt5Alt */
                         {
-                            ArrayList list = new187();
+                            List<Object> list = new187();
                             push(goTo(30), list);
                         }
                         break;
                         case 188: /* reduce AAalt6Alt */
                         {
-                            ArrayList list = new188();
+                            List<Object> list = new188();
                             push(goTo(30), list);
                         }
                         break;
                         case 189: /* reduce AAalt7Alt */
                         {
-                            ArrayList list = new189();
+                            List<Object> list = new189();
                             push(goTo(30), list);
                         }
                         break;
                         case 190: /* reduce AAalt8Alt */
                         {
-                            ArrayList list = new190();
+                            List<Object> list = new190();
                             push(goTo(30), list);
                         }
                         break;
                         case 191: /* reduce AAalttransform1AltTransform */
                         {
-                            ArrayList list = new191();
+                            List<Object> list = new191();
                             push(goTo(31), list);
                         }
                         break;
                         case 192: /* reduce AAalttransform2AltTransform */
                         {
-                            ArrayList list = new192();
+                            List<Object> list = new192();
                             push(goTo(31), list);
                         }
                         break;
                         case 193: /* reduce AAnewterm1Term */
                         {
-                            ArrayList list = new193();
+                            List<Object> list = new193();
                             push(goTo(32), list);
                         }
                         break;
                         case 194: /* reduce AAnewterm2Term */
                         {
-                            ArrayList list = new194();
+                            List<Object> list = new194();
                             push(goTo(32), list);
                         }
                         break;
                         case 195: /* reduce AAlistterm1Term */
                         {
-                            ArrayList list = new195();
+                            List<Object> list = new195();
                             push(goTo(32), list);
                         }
                         break;
                         case 196: /* reduce AAlistterm2Term */
                         {
-                            ArrayList list = new196();
+                            List<Object> list = new196();
                             push(goTo(32), list);
                         }
                         break;
                         case 197: /* reduce AAsimpleterm1Term */
                         {
-                            ArrayList list = new197();
+                            List<Object> list = new197();
                             push(goTo(32), list);
                         }
                         break;
                         case 198: /* reduce AAsimpleterm2Term */
                         {
-                            ArrayList list = new198();
+                            List<Object> list = new198();
                             push(goTo(32), list);
                         }
                         break;
                         case 199: /* reduce AAsimpleterm3Term */
                         {
-                            ArrayList list = new199();
+                            List<Object> list = new199();
                             push(goTo(32), list);
                         }
                         break;
                         case 200: /* reduce AAsimpleterm4Term */
                         {
-                            ArrayList list = new200();
+                            List<Object> list = new200();
                             push(goTo(32), list);
                         }
                         break;
                         case 201: /* reduce ANullTerm */
                         {
-                            ArrayList list = new201();
+                            List<Object> list = new201();
                             push(goTo(32), list);
                         }
                         break;
                         case 202: /* reduce AAlistoflistterm1ListOfListTerm */
                         {
-                            ArrayList list = new202();
+                            List<Object> list = new202();
                             push(goTo(33), list);
                         }
                         break;
                         case 203: /* reduce AAlistoflistterm2ListOfListTerm */
                         {
-                            ArrayList list = new203();
+                            List<Object> list = new203();
                             push(goTo(33), list);
                         }
                         break;
                         case 204: /* reduce AAnewlistterm1ListTerm */
                         {
-                            ArrayList list = new204();
+                            List<Object> list = new204();
                             push(goTo(34), list);
                         }
                         break;
                         case 205: /* reduce AAnewlistterm2ListTerm */
                         {
-                            ArrayList list = new205();
+                            List<Object> list = new205();
                             push(goTo(34), list);
                         }
                         break;
                         case 206: /* reduce AAsimplelistterm1ListTerm */
                         {
-                            ArrayList list = new206();
+                            List<Object> list = new206();
                             push(goTo(34), list);
                         }
                         break;
                         case 207: /* reduce AAsimplelistterm2ListTerm */
                         {
-                            ArrayList list = new207();
+                            List<Object> list = new207();
                             push(goTo(34), list);
                         }
                         break;
                         case 208: /* reduce AAsimplelistterm3ListTerm */
                         {
-                            ArrayList list = new208();
+                            List<Object> list = new208();
                             push(goTo(34), list);
                         }
                         break;
                         case 209: /* reduce AAsimplelistterm4ListTerm */
                         {
-                            ArrayList list = new209();
+                            List<Object> list = new209();
                             push(goTo(34), list);
                         }
                         break;
                         case 210: /* reduce AListTermTail */
                         {
-                            ArrayList list = new210();
+                            List<Object> list = new210();
                             push(goTo(35), list);
                         }
                         break;
                         case 211: /* reduce ASimpleTermTail */
                         {
-                            ArrayList list = new211();
+                            List<Object> list = new211();
                             push(goTo(36), list);
                         }
                         break;
                         case 212: /* reduce AAprodname1ProdName */
                         {
-                            ArrayList list = new212();
+                            List<Object> list = new212();
                             push(goTo(37), list);
                         }
                         break;
                         case 213: /* reduce AAprodname2ProdName */
                         {
-                            ArrayList list = new213();
+                            List<Object> list = new213();
                             push(goTo(37), list);
                         }
                         break;
                         case 214: /* reduce AProdNameTail */
                         {
-                            ArrayList list = new214();
+                            List<Object> list = new214();
                             push(goTo(38), list);
                         }
                         break;
                         case 215: /* reduce AAparams1Params */
                         {
-                            ArrayList list = new215();
+                            List<Object> list = new215();
                             push(goTo(39), list);
                         }
                         break;
                         case 216: /* reduce AAparams2Params */
                         {
-                            ArrayList list = new216();
+                            List<Object> list = new216();
                             push(goTo(39), list);
                         }
                         break;
                         case 217: /* reduce AParamsTail */
                         {
-                            ArrayList list = new217();
+                            List<Object> list = new217();
                             push(goTo(40), list);
                         }
                         break;
                         case 218: /* reduce AAltName */
                         {
-                            ArrayList list = new218();
+                            List<Object> list = new218();
                             push(goTo(41), list);
                         }
                         break;
                         case 219: /* reduce AAelem1Elem */
                         {
-                            ArrayList list = new219();
+                            List<Object> list = new219();
                             push(goTo(42), list);
                         }
                         break;
                         case 220: /* reduce AAelem2Elem */
                         {
-                            ArrayList list = new220();
+                            List<Object> list = new220();
                             push(goTo(42), list);
                         }
                         break;
                         case 221: /* reduce AAelem3Elem */
                         {
-                            ArrayList list = new221();
+                            List<Object> list = new221();
                             push(goTo(42), list);
                         }
                         break;
                         case 222: /* reduce AAelem4Elem */
                         {
-                            ArrayList list = new222();
+                            List<Object> list = new222();
                             push(goTo(42), list);
                         }
                         break;
                         case 223: /* reduce AAelem5Elem */
                         {
-                            ArrayList list = new223();
+                            List<Object> list = new223();
                             push(goTo(42), list);
                         }
                         break;
                         case 224: /* reduce AAelem6Elem */
                         {
-                            ArrayList list = new224();
+                            List<Object> list = new224();
                             push(goTo(42), list);
                         }
                         break;
                         case 225: /* reduce AAelem7Elem */
                         {
-                            ArrayList list = new225();
+                            List<Object> list = new225();
                             push(goTo(42), list);
                         }
                         break;
                         case 226: /* reduce AAelem8Elem */
                         {
-                            ArrayList list = new226();
+                            List<Object> list = new226();
                             push(goTo(42), list);
                         }
                         break;
                         case 227: /* reduce AElemName */
                         {
-                            ArrayList list = new227();
+                            List<Object> list = new227();
                             push(goTo(43), list);
                         }
                         break;
                         case 228: /* reduce ATokenSpecifier */
                         {
-                            ArrayList list = new228();
+                            List<Object> list = new228();
                             push(goTo(44), list);
                         }
                         break;
                         case 229: /* reduce AProductionSpecifier */
                         {
-                            ArrayList list = new229();
+                            List<Object> list = new229();
                             push(goTo(44), list);
                         }
                         break;
                         case 230: /* reduce AAst */
                         {
-                            ArrayList list = new230();
+                            List<Object> list = new230();
                             push(goTo(45), list);
                         }
                         break;
                         case 231: /* reduce AAstProd */
                         {
-                            ArrayList list = new231();
+                            List<Object> list = new231();
                             push(goTo(46), list);
                         }
                         break;
                         case 232: /* reduce AAastalts1AstAlts */
                         {
-                            ArrayList list = new232();
+                            List<Object> list = new232();
                             push(goTo(47), list);
                         }
                         break;
                         case 233: /* reduce AAastalts2AstAlts */
                         {
-                            ArrayList list = new233();
+                            List<Object> list = new233();
                             push(goTo(47), list);
                         }
                         break;
                         case 234: /* reduce AAstAltsTail */
                         {
-                            ArrayList list = new234();
+                            List<Object> list = new234();
                             push(goTo(48), list);
                         }
                         break;
                         case 235: /* reduce AAastalt1AstAlt */
                         {
-                            ArrayList list = new235();
+                            List<Object> list = new235();
                             push(goTo(49), list);
                         }
                         break;
                         case 236: /* reduce AAastalt2AstAlt */
                         {
-                            ArrayList list = new236();
+                            List<Object> list = new236();
                             push(goTo(49), list);
                         }
                         break;
                         case 237: /* reduce AAastalt3AstAlt */
                         {
-                            ArrayList list = new237();
+                            List<Object> list = new237();
                             push(goTo(49), list);
                         }
                         break;
                         case 238: /* reduce AAastalt4AstAlt */
                         {
-                            ArrayList list = new238();
+                            List<Object> list = new238();
                             push(goTo(49), list);
                         }
                         break;
                         case 239: /* reduce ATerminal$PkgNameTail */
                         {
-                            ArrayList list = new239();
+                            List<Object> list = new239();
                             push(goTo(50), list);
                         }
                         break;
                         case 240: /* reduce ANonTerminal$PkgNameTail */
                         {
-                            ArrayList list = new240();
+                            List<Object> list = new240();
                             push(goTo(50), list);
                         }
                         break;
                         case 241: /* reduce ATerminal$HelperDef */
                         {
-                            ArrayList list = new241();
+                            List<Object> list = new241();
                             push(goTo(51), list);
                         }
                         break;
                         case 242: /* reduce ANonTerminal$HelperDef */
                         {
-                            ArrayList list = new242();
+                            List<Object> list = new242();
                             push(goTo(51), list);
                         }
                         break;
                         case 243: /* reduce ATerminal$IdListTail */
                         {
-                            ArrayList list = new243();
+                            List<Object> list = new243();
                             push(goTo(52), list);
                         }
                         break;
                         case 244: /* reduce ANonTerminal$IdListTail */
                         {
-                            ArrayList list = new244();
+                            List<Object> list = new244();
                             push(goTo(52), list);
                         }
                         break;
                         case 245: /* reduce ATerminal$TokenDef */
                         {
-                            ArrayList list = new245();
+                            List<Object> list = new245();
                             push(goTo(53), list);
                         }
                         break;
                         case 246: /* reduce ANonTerminal$TokenDef */
                         {
-                            ArrayList list = new246();
+                            List<Object> list = new246();
                             push(goTo(53), list);
                         }
                         break;
                         case 247: /* reduce ATerminal$StateListTail */
                         {
-                            ArrayList list = new247();
+                            List<Object> list = new247();
                             push(goTo(54), list);
                         }
                         break;
                         case 248: /* reduce ANonTerminal$StateListTail */
                         {
-                            ArrayList list = new248();
+                            List<Object> list = new248();
                             push(goTo(54), list);
                         }
                         break;
                         case 249: /* reduce ATerminal$RegExpTail */
                         {
-                            ArrayList list = new249();
+                            List<Object> list = new249();
                             push(goTo(55), list);
                         }
                         break;
                         case 250: /* reduce ANonTerminal$RegExpTail */
                         {
-                            ArrayList list = new250();
+                            List<Object> list = new250();
                             push(goTo(55), list);
                         }
                         break;
                         case 251: /* reduce ATerminal$UnExp */
                         {
-                            ArrayList list = new251();
+                            List<Object> list = new251();
                             push(goTo(56), list);
                         }
                         break;
                         case 252: /* reduce ANonTerminal$UnExp */
                         {
-                            ArrayList list = new252();
+                            List<Object> list = new252();
                             push(goTo(56), list);
                         }
                         break;
                         case 253: /* reduce ATerminal$Prod */
                         {
-                            ArrayList list = new253();
+                            List<Object> list = new253();
                             push(goTo(57), list);
                         }
                         break;
                         case 254: /* reduce ANonTerminal$Prod */
                         {
-                            ArrayList list = new254();
+                            List<Object> list = new254();
                             push(goTo(57), list);
                         }
                         break;
                         case 255: /* reduce ATerminal$Elem */
                         {
-                            ArrayList list = new255();
+                            List<Object> list = new255();
                             push(goTo(58), list);
                         }
                         break;
                         case 256: /* reduce ANonTerminal$Elem */
                         {
-                            ArrayList list = new256();
+                            List<Object> list = new256();
                             push(goTo(58), list);
                         }
                         break;
                         case 257: /* reduce ATerminal$AltsTail */
                         {
-                            ArrayList list = new257();
+                            List<Object> list = new257();
                             push(goTo(59), list);
                         }
                         break;
                         case 258: /* reduce ANonTerminal$AltsTail */
                         {
-                            ArrayList list = new258();
+                            List<Object> list = new258();
                             push(goTo(59), list);
                         }
                         break;
                         case 259: /* reduce ATerminal$Term */
                         {
-                            ArrayList list = new259();
+                            List<Object> list = new259();
                             push(goTo(60), list);
                         }
                         break;
                         case 260: /* reduce ANonTerminal$Term */
                         {
-                            ArrayList list = new260();
+                            List<Object> list = new260();
                             push(goTo(60), list);
                         }
                         break;
                         case 261: /* reduce ATerminal$ListTermTail */
                         {
-                            ArrayList list = new261();
+                            List<Object> list = new261();
                             push(goTo(61), list);
                         }
                         break;
                         case 262: /* reduce ANonTerminal$ListTermTail */
                         {
-                            ArrayList list = new262();
+                            List<Object> list = new262();
                             push(goTo(61), list);
                         }
                         break;
                         case 263: /* reduce ATerminal$ParamsTail */
                         {
-                            ArrayList list = new263();
+                            List<Object> list = new263();
                             push(goTo(62), list);
                         }
                         break;
                         case 264: /* reduce ANonTerminal$ParamsTail */
                         {
-                            ArrayList list = new264();
+                            List<Object> list = new264();
                             push(goTo(62), list);
                         }
                         break;
                         case 265: /* reduce ATerminal$AstProd */
                         {
-                            ArrayList list = new265();
+                            List<Object> list = new265();
                             push(goTo(63), list);
                         }
                         break;
                         case 266: /* reduce ANonTerminal$AstProd */
                         {
-                            ArrayList list = new266();
+                            List<Object> list = new266();
                             push(goTo(63), list);
                         }
                         break;
                         case 267: /* reduce ATerminal$AstAltsTail */
                         {
-                            ArrayList list = new267();
+                            List<Object> list = new267();
                             push(goTo(64), list);
                         }
                         break;
                         case 268: /* reduce ANonTerminal$AstAltsTail */
                         {
-                            ArrayList list = new268();
+                            List<Object> list = new268();
                             push(goTo(64), list);
                         }
                         break;
@@ -1930,12 +1930,12 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new0() /* reduce AAgrammar1Grammar */
+    protected List<Object> new0() /* reduce AAgrammar1Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar1Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
         PGrammar pgrammarNode1;
         {
@@ -1954,14 +1954,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new1() /* reduce AAgrammar2Grammar */
+    protected List<Object> new1() /* reduce AAgrammar2Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar2Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -1989,14 +1989,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new2() /* reduce AAgrammar3Grammar */
+    protected List<Object> new2() /* reduce AAgrammar3Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar3Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2016,15 +2016,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new3() /* reduce AAgrammar4Grammar */
+    protected List<Object> new3() /* reduce AAgrammar4Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar4Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2054,14 +2054,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new4() /* reduce AAgrammar5Grammar */
+    protected List<Object> new4() /* reduce AAgrammar5Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar5Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2081,15 +2081,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new5() /* reduce AAgrammar6Grammar */
+    protected List<Object> new5() /* reduce AAgrammar6Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar6Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2119,15 +2119,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new6() /* reduce AAgrammar7Grammar */
+    protected List<Object> new6() /* reduce AAgrammar7Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar7Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2149,16 +2149,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new7() /* reduce AAgrammar8Grammar */
+    protected List<Object> new7() /* reduce AAgrammar8Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar8Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2190,14 +2190,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new8() /* reduce AAgrammar9Grammar */
+    protected List<Object> new8() /* reduce AAgrammar9Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar9Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2217,15 +2217,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new9() /* reduce AAgrammar10Grammar */
+    protected List<Object> new9() /* reduce AAgrammar10Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar10Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2255,15 +2255,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new10() /* reduce AAgrammar11Grammar */
+    protected List<Object> new10() /* reduce AAgrammar11Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar11Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2285,16 +2285,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new11() /* reduce AAgrammar12Grammar */
+    protected List<Object> new11() /* reduce AAgrammar12Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar12Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2326,15 +2326,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new12() /* reduce AAgrammar13Grammar */
+    protected List<Object> new12() /* reduce AAgrammar13Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar13Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2356,16 +2356,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new13() /* reduce AAgrammar14Grammar */
+    protected List<Object> new13() /* reduce AAgrammar14Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar14Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2397,16 +2397,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new14() /* reduce AAgrammar15Grammar */
+    protected List<Object> new14() /* reduce AAgrammar15Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar15Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2430,17 +2430,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new15() /* reduce AAgrammar16Grammar */
+    protected List<Object> new15() /* reduce AAgrammar16Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar16Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2474,14 +2474,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new16() /* reduce AAgrammar17Grammar */
+    protected List<Object> new16() /* reduce AAgrammar17Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar17Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2501,15 +2501,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new17() /* reduce AAgrammar18Grammar */
+    protected List<Object> new17() /* reduce AAgrammar18Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar18Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2539,15 +2539,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new18() /* reduce AAgrammar19Grammar */
+    protected List<Object> new18() /* reduce AAgrammar19Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar19Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2569,16 +2569,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new19() /* reduce AAgrammar20Grammar */
+    protected List<Object> new19() /* reduce AAgrammar20Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar20Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2610,15 +2610,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new20() /* reduce AAgrammar21Grammar */
+    protected List<Object> new20() /* reduce AAgrammar21Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar21Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2640,16 +2640,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new21() /* reduce AAgrammar22Grammar */
+    protected List<Object> new21() /* reduce AAgrammar22Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar22Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2681,16 +2681,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new22() /* reduce AAgrammar23Grammar */
+    protected List<Object> new22() /* reduce AAgrammar23Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar23Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2714,17 +2714,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new23() /* reduce AAgrammar24Grammar */
+    protected List<Object> new23() /* reduce AAgrammar24Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar24Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2758,15 +2758,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new24() /* reduce AAgrammar25Grammar */
+    protected List<Object> new24() /* reduce AAgrammar25Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar25Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2788,16 +2788,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new25() /* reduce AAgrammar26Grammar */
+    protected List<Object> new25() /* reduce AAgrammar26Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar26Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2829,16 +2829,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new26() /* reduce AAgrammar27Grammar */
+    protected List<Object> new26() /* reduce AAgrammar27Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar27Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2862,17 +2862,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new27() /* reduce AAgrammar28Grammar */
+    protected List<Object> new27() /* reduce AAgrammar28Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar28Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2906,16 +2906,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new28() /* reduce AAgrammar29Grammar */
+    protected List<Object> new28() /* reduce AAgrammar29Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar29Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2939,17 +2939,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new29() /* reduce AAgrammar30Grammar */
+    protected List<Object> new29() /* reduce AAgrammar30Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar30Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -2983,17 +2983,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new30() /* reduce AAgrammar31Grammar */
+    protected List<Object> new30() /* reduce AAgrammar31Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar31Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3019,18 +3019,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new31() /* reduce AAgrammar32Grammar */
+    protected List<Object> new31() /* reduce AAgrammar32Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar32Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3066,14 +3066,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new32() /* reduce AAgrammar33Grammar */
+    protected List<Object> new32() /* reduce AAgrammar33Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar33Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3093,15 +3093,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new33() /* reduce AAgrammar34Grammar */
+    protected List<Object> new33() /* reduce AAgrammar34Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar34Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3131,15 +3131,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new34() /* reduce AAgrammar35Grammar */
+    protected List<Object> new34() /* reduce AAgrammar35Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar35Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3161,16 +3161,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new35() /* reduce AAgrammar36Grammar */
+    protected List<Object> new35() /* reduce AAgrammar36Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar36Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3202,15 +3202,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new36() /* reduce AAgrammar37Grammar */
+    protected List<Object> new36() /* reduce AAgrammar37Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar37Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3232,16 +3232,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new37() /* reduce AAgrammar38Grammar */
+    protected List<Object> new37() /* reduce AAgrammar38Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar38Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3273,16 +3273,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new38() /* reduce AAgrammar39Grammar */
+    protected List<Object> new38() /* reduce AAgrammar39Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar39Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3306,17 +3306,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new39() /* reduce AAgrammar40Grammar */
+    protected List<Object> new39() /* reduce AAgrammar40Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar40Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3350,15 +3350,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new40() /* reduce AAgrammar41Grammar */
+    protected List<Object> new40() /* reduce AAgrammar41Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar41Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3380,16 +3380,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new41() /* reduce AAgrammar42Grammar */
+    protected List<Object> new41() /* reduce AAgrammar42Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar42Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3421,16 +3421,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new42() /* reduce AAgrammar43Grammar */
+    protected List<Object> new42() /* reduce AAgrammar43Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar43Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3454,17 +3454,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new43() /* reduce AAgrammar44Grammar */
+    protected List<Object> new43() /* reduce AAgrammar44Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar44Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3498,16 +3498,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new44() /* reduce AAgrammar45Grammar */
+    protected List<Object> new44() /* reduce AAgrammar45Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar45Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3531,17 +3531,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new45() /* reduce AAgrammar46Grammar */
+    protected List<Object> new45() /* reduce AAgrammar46Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar46Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3575,17 +3575,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new46() /* reduce AAgrammar47Grammar */
+    protected List<Object> new46() /* reduce AAgrammar47Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar47Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3611,18 +3611,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new47() /* reduce AAgrammar48Grammar */
+    protected List<Object> new47() /* reduce AAgrammar48Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar48Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3658,15 +3658,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new48() /* reduce AAgrammar49Grammar */
+    protected List<Object> new48() /* reduce AAgrammar49Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar49Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3688,16 +3688,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new49() /* reduce AAgrammar50Grammar */
+    protected List<Object> new49() /* reduce AAgrammar50Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar50Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3729,16 +3729,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new50() /* reduce AAgrammar51Grammar */
+    protected List<Object> new50() /* reduce AAgrammar51Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar51Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3762,17 +3762,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new51() /* reduce AAgrammar52Grammar */
+    protected List<Object> new51() /* reduce AAgrammar52Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar52Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3806,16 +3806,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new52() /* reduce AAgrammar53Grammar */
+    protected List<Object> new52() /* reduce AAgrammar53Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar53Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3839,17 +3839,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new53() /* reduce AAgrammar54Grammar */
+    protected List<Object> new53() /* reduce AAgrammar54Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar54Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3883,17 +3883,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new54() /* reduce AAgrammar55Grammar */
+    protected List<Object> new54() /* reduce AAgrammar55Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar55Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3919,18 +3919,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new55() /* reduce AAgrammar56Grammar */
+    protected List<Object> new55() /* reduce AAgrammar56Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar56Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3966,16 +3966,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new56() /* reduce AAgrammar57Grammar */
+    protected List<Object> new56() /* reduce AAgrammar57Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar57Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -3999,17 +3999,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new57() /* reduce AAgrammar58Grammar */
+    protected List<Object> new57() /* reduce AAgrammar58Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar58Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4043,17 +4043,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new58() /* reduce AAgrammar59Grammar */
+    protected List<Object> new58() /* reduce AAgrammar59Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar59Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4079,18 +4079,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new59() /* reduce AAgrammar60Grammar */
+    protected List<Object> new59() /* reduce AAgrammar60Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar60Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4126,17 +4126,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new60() /* reduce AAgrammar61Grammar */
+    protected List<Object> new60() /* reduce AAgrammar61Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar61Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4162,18 +4162,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new61() /* reduce AAgrammar62Grammar */
+    protected List<Object> new61() /* reduce AAgrammar62Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar62Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4209,18 +4209,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new62() /* reduce AAgrammar63Grammar */
+    protected List<Object> new62() /* reduce AAgrammar63Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar63Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4248,19 +4248,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new63() /* reduce AAgrammar64Grammar */
+    protected List<Object> new63() /* reduce AAgrammar64Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar64Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4298,14 +4298,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new64() /* reduce AAgrammar65Grammar */
+    protected List<Object> new64() /* reduce AAgrammar65Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar65Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4325,15 +4325,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new65() /* reduce AAgrammar66Grammar */
+    protected List<Object> new65() /* reduce AAgrammar66Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar66Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4363,15 +4363,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new66() /* reduce AAgrammar67Grammar */
+    protected List<Object> new66() /* reduce AAgrammar67Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar67Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4393,16 +4393,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new67() /* reduce AAgrammar68Grammar */
+    protected List<Object> new67() /* reduce AAgrammar68Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar68Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4434,15 +4434,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new68() /* reduce AAgrammar69Grammar */
+    protected List<Object> new68() /* reduce AAgrammar69Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar69Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4464,16 +4464,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new69() /* reduce AAgrammar70Grammar */
+    protected List<Object> new69() /* reduce AAgrammar70Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar70Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4505,16 +4505,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new70() /* reduce AAgrammar71Grammar */
+    protected List<Object> new70() /* reduce AAgrammar71Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar71Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4538,17 +4538,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new71() /* reduce AAgrammar72Grammar */
+    protected List<Object> new71() /* reduce AAgrammar72Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar72Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4582,15 +4582,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new72() /* reduce AAgrammar73Grammar */
+    protected List<Object> new72() /* reduce AAgrammar73Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar73Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4612,16 +4612,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new73() /* reduce AAgrammar74Grammar */
+    protected List<Object> new73() /* reduce AAgrammar74Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar74Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4653,16 +4653,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new74() /* reduce AAgrammar75Grammar */
+    protected List<Object> new74() /* reduce AAgrammar75Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar75Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4686,17 +4686,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new75() /* reduce AAgrammar76Grammar */
+    protected List<Object> new75() /* reduce AAgrammar76Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar76Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4730,16 +4730,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new76() /* reduce AAgrammar77Grammar */
+    protected List<Object> new76() /* reduce AAgrammar77Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar77Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4763,17 +4763,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new77() /* reduce AAgrammar78Grammar */
+    protected List<Object> new77() /* reduce AAgrammar78Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar78Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4807,17 +4807,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new78() /* reduce AAgrammar79Grammar */
+    protected List<Object> new78() /* reduce AAgrammar79Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar79Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4843,18 +4843,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new79() /* reduce AAgrammar80Grammar */
+    protected List<Object> new79() /* reduce AAgrammar80Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar80Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4890,15 +4890,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new80() /* reduce AAgrammar81Grammar */
+    protected List<Object> new80() /* reduce AAgrammar81Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar81Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4920,16 +4920,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new81() /* reduce AAgrammar82Grammar */
+    protected List<Object> new81() /* reduce AAgrammar82Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar82Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4961,16 +4961,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new82() /* reduce AAgrammar83Grammar */
+    protected List<Object> new82() /* reduce AAgrammar83Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar83Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -4994,17 +4994,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new83() /* reduce AAgrammar84Grammar */
+    protected List<Object> new83() /* reduce AAgrammar84Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar84Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5038,16 +5038,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new84() /* reduce AAgrammar85Grammar */
+    protected List<Object> new84() /* reduce AAgrammar85Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar85Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5071,17 +5071,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new85() /* reduce AAgrammar86Grammar */
+    protected List<Object> new85() /* reduce AAgrammar86Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar86Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5115,17 +5115,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new86() /* reduce AAgrammar87Grammar */
+    protected List<Object> new86() /* reduce AAgrammar87Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar87Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5151,18 +5151,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new87() /* reduce AAgrammar88Grammar */
+    protected List<Object> new87() /* reduce AAgrammar88Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar88Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5198,16 +5198,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new88() /* reduce AAgrammar89Grammar */
+    protected List<Object> new88() /* reduce AAgrammar89Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar89Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5231,17 +5231,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new89() /* reduce AAgrammar90Grammar */
+    protected List<Object> new89() /* reduce AAgrammar90Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar90Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5275,17 +5275,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new90() /* reduce AAgrammar91Grammar */
+    protected List<Object> new90() /* reduce AAgrammar91Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar91Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5311,18 +5311,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new91() /* reduce AAgrammar92Grammar */
+    protected List<Object> new91() /* reduce AAgrammar92Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar92Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5358,17 +5358,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new92() /* reduce AAgrammar93Grammar */
+    protected List<Object> new92() /* reduce AAgrammar93Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar93Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5394,18 +5394,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new93() /* reduce AAgrammar94Grammar */
+    protected List<Object> new93() /* reduce AAgrammar94Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar94Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5441,18 +5441,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new94() /* reduce AAgrammar95Grammar */
+    protected List<Object> new94() /* reduce AAgrammar95Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar95Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5480,19 +5480,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new95() /* reduce AAgrammar96Grammar */
+    protected List<Object> new95() /* reduce AAgrammar96Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar96Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5530,15 +5530,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new96() /* reduce AAgrammar97Grammar */
+    protected List<Object> new96() /* reduce AAgrammar97Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar97Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5560,16 +5560,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new97() /* reduce AAgrammar98Grammar */
+    protected List<Object> new97() /* reduce AAgrammar98Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar98Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5601,16 +5601,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new98() /* reduce AAgrammar99Grammar */
+    protected List<Object> new98() /* reduce AAgrammar99Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar99Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5634,17 +5634,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new99() /* reduce AAgrammar100Grammar */
+    protected List<Object> new99() /* reduce AAgrammar100Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar100Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5678,16 +5678,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new100() /* reduce AAgrammar101Grammar */
+    protected List<Object> new100() /* reduce AAgrammar101Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar101Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5711,17 +5711,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new101() /* reduce AAgrammar102Grammar */
+    protected List<Object> new101() /* reduce AAgrammar102Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar102Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5755,17 +5755,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new102() /* reduce AAgrammar103Grammar */
+    protected List<Object> new102() /* reduce AAgrammar103Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar103Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5791,18 +5791,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new103() /* reduce AAgrammar104Grammar */
+    protected List<Object> new103() /* reduce AAgrammar104Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar104Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5838,16 +5838,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new104() /* reduce AAgrammar105Grammar */
+    protected List<Object> new104() /* reduce AAgrammar105Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar105Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5871,17 +5871,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new105() /* reduce AAgrammar106Grammar */
+    protected List<Object> new105() /* reduce AAgrammar106Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar106Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5915,17 +5915,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new106() /* reduce AAgrammar107Grammar */
+    protected List<Object> new106() /* reduce AAgrammar107Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar107Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5951,18 +5951,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new107() /* reduce AAgrammar108Grammar */
+    protected List<Object> new107() /* reduce AAgrammar108Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar108Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -5998,17 +5998,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new108() /* reduce AAgrammar109Grammar */
+    protected List<Object> new108() /* reduce AAgrammar109Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar109Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6034,18 +6034,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new109() /* reduce AAgrammar110Grammar */
+    protected List<Object> new109() /* reduce AAgrammar110Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar110Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6081,18 +6081,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new110() /* reduce AAgrammar111Grammar */
+    protected List<Object> new110() /* reduce AAgrammar111Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar111Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6120,19 +6120,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new111() /* reduce AAgrammar112Grammar */
+    protected List<Object> new111() /* reduce AAgrammar112Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar112Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6170,16 +6170,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new112() /* reduce AAgrammar113Grammar */
+    protected List<Object> new112() /* reduce AAgrammar113Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar113Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6203,17 +6203,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new113() /* reduce AAgrammar114Grammar */
+    protected List<Object> new113() /* reduce AAgrammar114Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar114Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6247,17 +6247,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new114() /* reduce AAgrammar115Grammar */
+    protected List<Object> new114() /* reduce AAgrammar115Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar115Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6283,18 +6283,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new115() /* reduce AAgrammar116Grammar */
+    protected List<Object> new115() /* reduce AAgrammar116Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar116Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6330,17 +6330,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new116() /* reduce AAgrammar117Grammar */
+    protected List<Object> new116() /* reduce AAgrammar117Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar117Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6366,18 +6366,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new117() /* reduce AAgrammar118Grammar */
+    protected List<Object> new117() /* reduce AAgrammar118Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar118Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6413,18 +6413,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new118() /* reduce AAgrammar119Grammar */
+    protected List<Object> new118() /* reduce AAgrammar119Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar119Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6452,19 +6452,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new119() /* reduce AAgrammar120Grammar */
+    protected List<Object> new119() /* reduce AAgrammar120Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar120Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6502,17 +6502,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new120() /* reduce AAgrammar121Grammar */
+    protected List<Object> new120() /* reduce AAgrammar121Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar121Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6538,18 +6538,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new121() /* reduce AAgrammar122Grammar */
+    protected List<Object> new121() /* reduce AAgrammar122Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar122Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6585,18 +6585,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new122() /* reduce AAgrammar123Grammar */
+    protected List<Object> new122() /* reduce AAgrammar123Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar123Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6624,19 +6624,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new123() /* reduce AAgrammar124Grammar */
+    protected List<Object> new123() /* reduce AAgrammar124Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar124Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6674,18 +6674,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new124() /* reduce AAgrammar125Grammar */
+    protected List<Object> new124() /* reduce AAgrammar125Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar125Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6713,19 +6713,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new125() /* reduce AAgrammar126Grammar */
+    protected List<Object> new125() /* reduce AAgrammar126Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar126Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6763,19 +6763,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new126() /* reduce AAgrammar127Grammar */
+    protected List<Object> new126() /* reduce AAgrammar127Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar127Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6805,20 +6805,20 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new127() /* reduce AAgrammar128Grammar */
+    protected List<Object> new127() /* reduce AAgrammar128Grammar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar128Grammar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList7 = pop();
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList7 = pop();
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PGrammar pgrammarNode1;
         {
             // Block
@@ -6858,15 +6858,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new128() /* reduce APackage */
+    protected List<Object> new128() /* reduce APackage */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APackage");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -6888,15 +6888,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new129() /* reduce AApkgname1PkgName */
+    protected List<Object> new129() /* reduce AApkgname1PkgName */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AApkgname1PkgName");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -6914,16 +6914,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new130() /* reduce AApkgname2PkgName */
+    protected List<Object> new130() /* reduce AApkgname2PkgName */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AApkgname2PkgName");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -6951,15 +6951,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new131() /* reduce APkgNameTail */
+    protected List<Object> new131() /* reduce APkgNameTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APkgNameTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TPkgId tpkgidNode1;
         tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
         nodeList.add(tpkgidNode1);
@@ -6969,15 +6969,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new132() /* reduce AHelpers */
+    protected List<Object> new132() /* reduce AHelpers */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AHelpers");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode1;
         {
             // Block
@@ -7005,17 +7005,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new133() /* reduce AHelperDef */
+    protected List<Object> new133() /* reduce AHelperDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AHelperDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PHelperDef phelperdefNode1;
         {
             // Block
@@ -7033,16 +7033,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new134() /* reduce AStates */
+    protected List<Object> new134() /* reduce AStates */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AStates");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStates pstatesNode1;
         {
             // Block
@@ -7070,14 +7070,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new135() /* reduce AAidlist1IdList */
+    protected List<Object> new135() /* reduce AAidlist1IdList */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAidlist1IdList");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -7095,15 +7095,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new136() /* reduce AAidlist2IdList */
+    protected List<Object> new136() /* reduce AAidlist2IdList */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAidlist2IdList");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -7131,15 +7131,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new137() /* reduce AIdListTail */
+    protected List<Object> new137() /* reduce AIdListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AIdListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
@@ -7149,15 +7149,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new138() /* reduce ATokens */
+    protected List<Object> new138() /* reduce ATokens */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATokens");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTokens ptokensNode1;
         {
             // Block
@@ -7185,17 +7185,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new139() /* reduce AAtokendef1TokenDef */
+    protected List<Object> new139() /* reduce AAtokendef1TokenDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef1TokenDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTokenDef ptokendefNode1;
         {
             // Block
@@ -7213,18 +7213,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new140() /* reduce AAtokendef2TokenDef */
+    protected List<Object> new140() /* reduce AAtokendef2TokenDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef2TokenDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTokenDef ptokendefNode1;
         {
             // Block
@@ -7244,18 +7244,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new141() /* reduce AAtokendef3TokenDef */
+    protected List<Object> new141() /* reduce AAtokendef3TokenDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef3TokenDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTokenDef ptokendefNode1;
         {
             // Block
@@ -7277,19 +7277,19 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new142() /* reduce AAtokendef4TokenDef */
+    protected List<Object> new142() /* reduce AAtokendef4TokenDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef4TokenDef");
-        ArrayList nodeList = new ArrayList();
-
-        ArrayList nodeArrayList6 = pop();
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeList = new ArrayList<>();
+
+        List<Object> nodeArrayList6 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTokenDef ptokendefNode1;
         {
             // Block
@@ -7313,16 +7313,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new143() /* reduce AAstatelist1StateList */
+    protected List<Object> new143() /* reduce AAstatelist1StateList */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist1StateList");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStateList pstatelistNode1;
         {
             // Block
@@ -7342,17 +7342,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new144() /* reduce AAstatelist2StateList */
+    protected List<Object> new144() /* reduce AAstatelist2StateList */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist2StateList");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStateList pstatelistNode1;
         {
             // Block
@@ -7374,17 +7374,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new145() /* reduce AAstatelist3StateList */
+    protected List<Object> new145() /* reduce AAstatelist3StateList */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist3StateList");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStateList pstatelistNode1;
         {
             // Block
@@ -7414,18 +7414,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new146() /* reduce AAstatelist4StateList */
+    protected List<Object> new146() /* reduce AAstatelist4StateList */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist4StateList");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStateList pstatelistNode1;
         {
             // Block
@@ -7457,15 +7457,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new147() /* reduce AAstatelisttail1StateListTail */
+    protected List<Object> new147() /* reduce AAstatelisttail1StateListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelisttail1StateListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStateListTail pstatelisttailNode1;
         {
             // Block
@@ -7481,16 +7481,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new148() /* reduce AAstatelisttail2StateListTail */
+    protected List<Object> new148() /* reduce AAstatelisttail2StateListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelisttail2StateListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PStateListTail pstatelisttailNode1;
         {
             // Block
@@ -7508,15 +7508,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new149() /* reduce ATransition */
+    protected List<Object> new149() /* reduce ATransition */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATransition");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTransition ptransitionNode1;
         {
             // Block
@@ -7532,16 +7532,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new150() /* reduce AAigntokens1IgnTokens */
+    protected List<Object> new150() /* reduce AAigntokens1IgnTokens */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAigntokens1IgnTokens");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PIgnTokens pigntokensNode1;
         {
             // Block
@@ -7559,17 +7559,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new151() /* reduce AAigntokens2IgnTokens */
+    protected List<Object> new151() /* reduce AAigntokens2IgnTokens */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAigntokens2IgnTokens");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PIgnTokens pigntokensNode1;
         {
             // Block
@@ -7597,15 +7597,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new152() /* reduce ALookAhead */
+    protected List<Object> new152() /* reduce ALookAhead */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ALookAhead");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TSlash tslashNode1;
         PRegExp pregexpNode2;
         tslashNode1 = (TSlash)nodeArrayList1.get(0);
@@ -7618,14 +7618,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new153() /* reduce AAregexp1RegExp */
+    protected List<Object> new153() /* reduce AAregexp1RegExp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAregexp1RegExp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PRegExp pregexpNode1;
         {
             // Block
@@ -7649,15 +7649,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new154() /* reduce AAregexp2RegExp */
+    protected List<Object> new154() /* reduce AAregexp2RegExp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAregexp2RegExp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PRegExp pregexpNode1;
         {
             // Block
@@ -7691,15 +7691,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new155() /* reduce ARegExpTail */
+    protected List<Object> new155() /* reduce ARegExpTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ARegExpTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PConcat pconcatNode1;
         pconcatNode1 = (PConcat)nodeArrayList2.get(0);
         nodeList.add(pconcatNode1);
@@ -7709,12 +7709,12 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new156() /* reduce AAconcat1Concat */
+    protected List<Object> new156() /* reduce AAconcat1Concat */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAconcat1Concat");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
         PConcat pconcatNode1;
         {
@@ -7733,14 +7733,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new157() /* reduce AAconcat2Concat */
+    protected List<Object> new157() /* reduce AAconcat2Concat */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAconcat2Concat");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PConcat pconcatNode1;
         {
             // Block
@@ -7768,14 +7768,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new158() /* reduce AAunexp1UnExp */
+    protected List<Object> new158() /* reduce AAunexp1UnExp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAunexp1UnExp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PUnExp punexpNode1;
         {
             // Block
@@ -7791,15 +7791,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new159() /* reduce AAunexp2UnExp */
+    protected List<Object> new159() /* reduce AAunexp2UnExp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAunexp2UnExp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PUnExp punexpNode1;
         {
             // Block
@@ -7817,14 +7817,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new160() /* reduce ACharBasic */
+    protected List<Object> new160() /* reduce ACharBasic */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ACharBasic");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode1;
         {
             // Block
@@ -7840,14 +7840,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new161() /* reduce ASetBasic */
+    protected List<Object> new161() /* reduce ASetBasic */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ASetBasic");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode1;
         {
             // Block
@@ -7863,14 +7863,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new162() /* reduce AStringBasic */
+    protected List<Object> new162() /* reduce AStringBasic */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AStringBasic");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode1;
         {
             // Block
@@ -7886,14 +7886,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new163() /* reduce AIdBasic */
+    protected List<Object> new163() /* reduce AIdBasic */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AIdBasic");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode1;
         {
             // Block
@@ -7909,16 +7909,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new164() /* reduce ARegExpBasic */
+    protected List<Object> new164() /* reduce ARegExpBasic */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ARegExpBasic");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode1;
         {
             // Block
@@ -7934,14 +7934,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new165() /* reduce ACharChar */
+    protected List<Object> new165() /* reduce ACharChar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ACharChar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PChar pcharNode1;
         {
             // Block
@@ -7957,14 +7957,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new166() /* reduce ADecChar */
+    protected List<Object> new166() /* reduce ADecChar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ADecChar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PChar pcharNode1;
         {
             // Block
@@ -7980,14 +7980,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new167() /* reduce AHexChar */
+    protected List<Object> new167() /* reduce AHexChar */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AHexChar");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PChar pcharNode1;
         {
             // Block
@@ -8003,18 +8003,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new168() /* reduce AOperationSet */
+    protected List<Object> new168() /* reduce AOperationSet */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AOperationSet");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PSet psetNode1;
         {
             // Block
@@ -8034,18 +8034,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new169() /* reduce AIntervalSet */
+    protected List<Object> new169() /* reduce AIntervalSet */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AIntervalSet");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PSet psetNode1;
         {
             // Block
@@ -8063,14 +8063,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new170() /* reduce AStarUnOp */
+    protected List<Object> new170() /* reduce AStarUnOp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AStarUnOp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PUnOp punopNode1;
         {
             // Block
@@ -8086,14 +8086,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new171() /* reduce AQMarkUnOp */
+    protected List<Object> new171() /* reduce AQMarkUnOp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AQMarkUnOp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PUnOp punopNode1;
         {
             // Block
@@ -8109,14 +8109,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new172() /* reduce APlusUnOp */
+    protected List<Object> new172() /* reduce APlusUnOp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APlusUnOp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PUnOp punopNode1;
         {
             // Block
@@ -8132,14 +8132,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new173() /* reduce APlusBinOp */
+    protected List<Object> new173() /* reduce APlusBinOp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APlusBinOp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBinOp pbinopNode1;
         {
             // Block
@@ -8153,14 +8153,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new174() /* reduce AMinusBinOp */
+    protected List<Object> new174() /* reduce AMinusBinOp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AMinusBinOp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PBinOp pbinopNode1;
         {
             // Block
@@ -8174,15 +8174,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new175() /* reduce AProductions */
+    protected List<Object> new175() /* reduce AProductions */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AProductions");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PProductions pproductionsNode1;
         {
             // Block
@@ -8210,17 +8210,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new176() /* reduce AAprod1Prod */
+    protected List<Object> new176() /* reduce AAprod1Prod */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprod1Prod");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PProd pprodNode1;
         {
             // Block
@@ -8254,18 +8254,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new177() /* reduce AAprod2Prod */
+    protected List<Object> new177() /* reduce AAprod2Prod */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprod2Prod");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PProd pprodNode1;
         {
             // Block
@@ -8311,16 +8311,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new178() /* reduce AAprodtransform1ProdTransform */
+    protected List<Object> new178() /* reduce AAprodtransform1ProdTransform */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodtransform1ProdTransform");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TArrow tarrowNode1;
         LinkedList listNode2 = new LinkedList();
         tarrowNode1 = (TArrow)nodeArrayList2.get(0);
@@ -8335,17 +8335,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new179() /* reduce AAprodtransform2ProdTransform */
+    protected List<Object> new179() /* reduce AAprodtransform2ProdTransform */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodtransform2ProdTransform");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TArrow tarrowNode1;
         LinkedList listNode3 = new LinkedList();
         tarrowNode1 = (TArrow)nodeArrayList2.get(0);
@@ -8370,14 +8370,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new180() /* reduce AAalts1Alts */
+    protected List<Object> new180() /* reduce AAalts1Alts */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalts1Alts");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -8395,15 +8395,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new181() /* reduce AAalts2Alts */
+    protected List<Object> new181() /* reduce AAalts2Alts */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalts2Alts");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -8431,15 +8431,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new182() /* reduce AAltsTail */
+    protected List<Object> new182() /* reduce AAltsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAltsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         paltNode1 = (PAlt)nodeArrayList2.get(0);
         nodeList.add(paltNode1);
@@ -8449,12 +8449,12 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new183() /* reduce AAalt1Alt */
+    protected List<Object> new183() /* reduce AAalt1Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt1Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
         PAlt paltNode1;
         {
@@ -8473,14 +8473,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new184() /* reduce AAalt2Alt */
+    protected List<Object> new184() /* reduce AAalt2Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt2Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8500,14 +8500,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new185() /* reduce AAalt3Alt */
+    protected List<Object> new185() /* reduce AAalt3Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt3Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8535,15 +8535,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new186() /* reduce AAalt4Alt */
+    protected List<Object> new186() /* reduce AAalt4Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt4Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8573,14 +8573,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new187() /* reduce AAalt5Alt */
+    protected List<Object> new187() /* reduce AAalt5Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt5Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8600,15 +8600,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new188() /* reduce AAalt6Alt */
+    protected List<Object> new188() /* reduce AAalt6Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt6Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8630,15 +8630,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new189() /* reduce AAalt7Alt */
+    protected List<Object> new189() /* reduce AAalt7Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt7Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8668,16 +8668,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new190() /* reduce AAalt8Alt */
+    protected List<Object> new190() /* reduce AAalt8Alt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt8Alt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAlt paltNode1;
         {
             // Block
@@ -8709,16 +8709,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new191() /* reduce AAalttransform1AltTransform */
+    protected List<Object> new191() /* reduce AAalttransform1AltTransform */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalttransform1AltTransform");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAltTransform palttransformNode1;
         {
             // Block
@@ -8740,17 +8740,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new192() /* reduce AAalttransform2AltTransform */
+    protected List<Object> new192() /* reduce AAalttransform2AltTransform */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalttransform2AltTransform");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAltTransform palttransformNode1;
         {
             // Block
@@ -8782,17 +8782,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new193() /* reduce AAnewterm1Term */
+    protected List<Object> new193() /* reduce AAnewterm1Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewterm1Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8814,18 +8814,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new194() /* reduce AAnewterm2Term */
+    protected List<Object> new194() /* reduce AAnewterm2Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewterm2Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8857,15 +8857,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new195() /* reduce AAlistterm1Term */
+    protected List<Object> new195() /* reduce AAlistterm1Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistterm1Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8885,16 +8885,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new196() /* reduce AAlistterm2Term */
+    protected List<Object> new196() /* reduce AAlistterm2Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistterm2Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8924,14 +8924,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new197() /* reduce AAsimpleterm1Term */
+    protected List<Object> new197() /* reduce AAsimpleterm1Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm1Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8947,15 +8947,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new198() /* reduce AAsimpleterm2Term */
+    protected List<Object> new198() /* reduce AAsimpleterm2Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm2Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8973,15 +8973,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new199() /* reduce AAsimpleterm3Term */
+    protected List<Object> new199() /* reduce AAsimpleterm3Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm3Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -8999,16 +8999,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new200() /* reduce AAsimpleterm4Term */
+    protected List<Object> new200() /* reduce AAsimpleterm4Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm4Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -9028,14 +9028,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new201() /* reduce ANullTerm */
+    protected List<Object> new201() /* reduce ANullTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANullTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         {
             // Block
@@ -9049,14 +9049,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new202() /* reduce AAlistoflistterm1ListOfListTerm */
+    protected List<Object> new202() /* reduce AAlistoflistterm1ListOfListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistoflistterm1ListOfListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -9074,15 +9074,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new203() /* reduce AAlistoflistterm2ListOfListTerm */
+    protected List<Object> new203() /* reduce AAlistoflistterm2ListOfListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistoflistterm2ListOfListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -9110,17 +9110,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new204() /* reduce AAnewlistterm1ListTerm */
+    protected List<Object> new204() /* reduce AAnewlistterm1ListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewlistterm1ListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         {
             // Block
@@ -9142,18 +9142,18 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new205() /* reduce AAnewlistterm2ListTerm */
+    protected List<Object> new205() /* reduce AAnewlistterm2ListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewlistterm2ListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList5 = pop();
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList5 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         {
             // Block
@@ -9185,14 +9185,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new206() /* reduce AAsimplelistterm1ListTerm */
+    protected List<Object> new206() /* reduce AAsimplelistterm1ListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm1ListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         {
             // Block
@@ -9208,15 +9208,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new207() /* reduce AAsimplelistterm2ListTerm */
+    protected List<Object> new207() /* reduce AAsimplelistterm2ListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm2ListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         {
             // Block
@@ -9234,15 +9234,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new208() /* reduce AAsimplelistterm3ListTerm */
+    protected List<Object> new208() /* reduce AAsimplelistterm3ListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm3ListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         {
             // Block
@@ -9260,16 +9260,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new209() /* reduce AAsimplelistterm4ListTerm */
+    protected List<Object> new209() /* reduce AAsimplelistterm4ListTerm */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm4ListTerm");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         {
             // Block
@@ -9289,15 +9289,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new210() /* reduce AListTermTail */
+    protected List<Object> new210() /* reduce AListTermTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AListTermTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1;
         plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
         nodeList.add(plisttermNode1);
@@ -9307,15 +9307,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new211() /* reduce ASimpleTermTail */
+    protected List<Object> new211() /* reduce ASimpleTermTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ASimpleTermTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
@@ -9325,14 +9325,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new212() /* reduce AAprodname1ProdName */
+    protected List<Object> new212() /* reduce AAprodname1ProdName */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodname1ProdName");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PProdName pprodnameNode1;
         {
             // Block
@@ -9348,15 +9348,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new213() /* reduce AAprodname2ProdName */
+    protected List<Object> new213() /* reduce AAprodname2ProdName */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodname2ProdName");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PProdName pprodnameNode1;
         {
             // Block
@@ -9374,15 +9374,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new214() /* reduce AProdNameTail */
+    protected List<Object> new214() /* reduce AProdNameTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AProdNameTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
@@ -9392,14 +9392,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new215() /* reduce AAparams1Params */
+    protected List<Object> new215() /* reduce AAparams1Params */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAparams1Params");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -9417,15 +9417,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new216() /* reduce AAparams2Params */
+    protected List<Object> new216() /* reduce AAparams2Params */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAparams2Params");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -9453,15 +9453,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new217() /* reduce AParamsTail */
+    protected List<Object> new217() /* reduce AParamsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AParamsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1;
         ptermNode1 = (PTerm)nodeArrayList2.get(0);
         nodeList.add(ptermNode1);
@@ -9471,16 +9471,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new218() /* reduce AAltName */
+    protected List<Object> new218() /* reduce AAltName */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAltName");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
@@ -9490,14 +9490,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new219() /* reduce AAelem1Elem */
+    protected List<Object> new219() /* reduce AAelem1Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem1Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9513,15 +9513,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new220() /* reduce AAelem2Elem */
+    protected List<Object> new220() /* reduce AAelem2Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem2Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9539,15 +9539,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new221() /* reduce AAelem3Elem */
+    protected List<Object> new221() /* reduce AAelem3Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem3Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9565,16 +9565,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new222() /* reduce AAelem4Elem */
+    protected List<Object> new222() /* reduce AAelem4Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem4Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9594,15 +9594,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new223() /* reduce AAelem5Elem */
+    protected List<Object> new223() /* reduce AAelem5Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem5Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9620,16 +9620,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new224() /* reduce AAelem6Elem */
+    protected List<Object> new224() /* reduce AAelem6Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem6Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9649,16 +9649,16 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new225() /* reduce AAelem7Elem */
+    protected List<Object> new225() /* reduce AAelem7Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem7Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9678,17 +9678,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new226() /* reduce AAelem8Elem */
+    protected List<Object> new226() /* reduce AAelem8Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem8Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PElem pelemNode1;
         {
             // Block
@@ -9710,17 +9710,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new227() /* reduce AElemName */
+    protected List<Object> new227() /* reduce AElemName */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AElemName");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
@@ -9730,15 +9730,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new228() /* reduce ATokenSpecifier */
+    protected List<Object> new228() /* reduce ATokenSpecifier */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATokenSpecifier");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PSpecifier pspecifierNode1;
         {
             // Block
@@ -9752,15 +9752,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new229() /* reduce AProductionSpecifier */
+    protected List<Object> new229() /* reduce AProductionSpecifier */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AProductionSpecifier");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PSpecifier pspecifierNode1;
         {
             // Block
@@ -9774,17 +9774,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new230() /* reduce AAst */
+    protected List<Object> new230() /* reduce AAst */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAst");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAst pastNode1;
         {
             // Block
@@ -9812,17 +9812,17 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new231() /* reduce AAstProd */
+    protected List<Object> new231() /* reduce AAstProd */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstProd");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList4 = pop();
-        ArrayList nodeArrayList3 = pop();
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList4 = pop();
+        List<Object> nodeArrayList3 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAstProd pastprodNode1;
         {
             // Block
@@ -9852,14 +9852,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new232() /* reduce AAastalts1AstAlts */
+    protected List<Object> new232() /* reduce AAastalts1AstAlts */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalts1AstAlts");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -9877,15 +9877,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new233() /* reduce AAastalts2AstAlts */
+    protected List<Object> new233() /* reduce AAastalts2AstAlts */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalts2AstAlts");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -9913,15 +9913,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new234() /* reduce AAstAltsTail */
+    protected List<Object> new234() /* reduce AAstAltsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstAltsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1;
         pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
         nodeList.add(pastaltNode1);
@@ -9931,12 +9931,12 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new235() /* reduce AAastalt1AstAlt */
+    protected List<Object> new235() /* reduce AAastalt1AstAlt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt1AstAlt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
         PAstAlt pastaltNode1;
         {
@@ -9955,14 +9955,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new236() /* reduce AAastalt2AstAlt */
+    protected List<Object> new236() /* reduce AAastalt2AstAlt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt2AstAlt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1;
         {
             // Block
@@ -9982,14 +9982,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new237() /* reduce AAastalt3AstAlt */
+    protected List<Object> new237() /* reduce AAastalt3AstAlt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt3AstAlt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1;
         {
             // Block
@@ -10017,15 +10017,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new238() /* reduce AAastalt4AstAlt */
+    protected List<Object> new238() /* reduce AAastalt4AstAlt */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt4AstAlt");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1;
         {
             // Block
@@ -10055,14 +10055,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new239() /* reduce ATerminal$PkgNameTail */
+    protected List<Object> new239() /* reduce ATerminal$PkgNameTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$PkgNameTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10080,15 +10080,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new240() /* reduce ANonTerminal$PkgNameTail */
+    protected List<Object> new240() /* reduce ANonTerminal$PkgNameTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$PkgNameTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10116,14 +10116,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new241() /* reduce ATerminal$HelperDef */
+    protected List<Object> new241() /* reduce ATerminal$HelperDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$HelperDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10141,15 +10141,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new242() /* reduce ANonTerminal$HelperDef */
+    protected List<Object> new242() /* reduce ANonTerminal$HelperDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$HelperDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10177,14 +10177,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new243() /* reduce ATerminal$IdListTail */
+    protected List<Object> new243() /* reduce ATerminal$IdListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$IdListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10202,15 +10202,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new244() /* reduce ANonTerminal$IdListTail */
+    protected List<Object> new244() /* reduce ANonTerminal$IdListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$IdListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10238,14 +10238,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new245() /* reduce ATerminal$TokenDef */
+    protected List<Object> new245() /* reduce ATerminal$TokenDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$TokenDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10263,15 +10263,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new246() /* reduce ANonTerminal$TokenDef */
+    protected List<Object> new246() /* reduce ANonTerminal$TokenDef */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$TokenDef");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10299,14 +10299,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new247() /* reduce ATerminal$StateListTail */
+    protected List<Object> new247() /* reduce ATerminal$StateListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$StateListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10324,15 +10324,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new248() /* reduce ANonTerminal$StateListTail */
+    protected List<Object> new248() /* reduce ANonTerminal$StateListTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$StateListTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10360,14 +10360,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new249() /* reduce ATerminal$RegExpTail */
+    protected List<Object> new249() /* reduce ATerminal$RegExpTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$RegExpTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10385,15 +10385,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new250() /* reduce ANonTerminal$RegExpTail */
+    protected List<Object> new250() /* reduce ANonTerminal$RegExpTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$RegExpTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10421,14 +10421,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new251() /* reduce ATerminal$UnExp */
+    protected List<Object> new251() /* reduce ATerminal$UnExp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$UnExp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10446,15 +10446,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new252() /* reduce ANonTerminal$UnExp */
+    protected List<Object> new252() /* reduce ANonTerminal$UnExp */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$UnExp");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10482,14 +10482,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new253() /* reduce ATerminal$Prod */
+    protected List<Object> new253() /* reduce ATerminal$Prod */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Prod");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10507,15 +10507,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new254() /* reduce ANonTerminal$Prod */
+    protected List<Object> new254() /* reduce ANonTerminal$Prod */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Prod");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10543,14 +10543,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new255() /* reduce ATerminal$Elem */
+    protected List<Object> new255() /* reduce ATerminal$Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10568,15 +10568,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new256() /* reduce ANonTerminal$Elem */
+    protected List<Object> new256() /* reduce ANonTerminal$Elem */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Elem");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10604,14 +10604,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new257() /* reduce ATerminal$AltsTail */
+    protected List<Object> new257() /* reduce ATerminal$AltsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AltsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10629,15 +10629,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new258() /* reduce ANonTerminal$AltsTail */
+    protected List<Object> new258() /* reduce ANonTerminal$AltsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AltsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10665,14 +10665,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new259() /* reduce ATerminal$Term */
+    protected List<Object> new259() /* reduce ATerminal$Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10690,15 +10690,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new260() /* reduce ANonTerminal$Term */
+    protected List<Object> new260() /* reduce ANonTerminal$Term */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Term");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10726,14 +10726,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new261() /* reduce ATerminal$ListTermTail */
+    protected List<Object> new261() /* reduce ATerminal$ListTermTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$ListTermTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10751,15 +10751,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new262() /* reduce ANonTerminal$ListTermTail */
+    protected List<Object> new262() /* reduce ANonTerminal$ListTermTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$ListTermTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10787,14 +10787,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new263() /* reduce ATerminal$ParamsTail */
+    protected List<Object> new263() /* reduce ATerminal$ParamsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$ParamsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10812,15 +10812,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new264() /* reduce ANonTerminal$ParamsTail */
+    protected List<Object> new264() /* reduce ANonTerminal$ParamsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$ParamsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10848,14 +10848,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new265() /* reduce ATerminal$AstProd */
+    protected List<Object> new265() /* reduce ATerminal$AstProd */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AstProd");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10873,15 +10873,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new266() /* reduce ANonTerminal$AstProd */
+    protected List<Object> new266() /* reduce ANonTerminal$AstProd */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AstProd");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
@@ -10909,14 +10909,14 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new267() /* reduce ATerminal$AstAltsTail */
+    protected List<Object> new267() /* reduce ATerminal$AstAltsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AstAltsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode2 = new LinkedList();
         {
             // Block
@@ -10934,15 +10934,15 @@ public class Parser implements IParser
 
 
 
-    protected ArrayList new268() /* reduce ANonTerminal$AstAltsTail */
+    protected List<Object> new268() /* reduce ANonTerminal$AstAltsTail */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AstAltsTail");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
-        ArrayList nodeArrayList2 = pop();
-        ArrayList nodeArrayList1 = pop();
+        List<Object> nodeArrayList2 = pop();
+        List<Object> nodeArrayList1 = pop();
         LinkedList listNode3 = new LinkedList();
         {
             // Block
diff --git a/src/main/java/org/sablecc/sablecc/parser/State.java b/src/main/java/org/sablecc/sablecc/parser/State.java
index dab2c1260e6d1666b066a84c31ef1178ef349fc8..0673a4159937727a5bd3f1edf72580434afb0a16 100644
--- a/src/main/java/org/sablecc/sablecc/parser/State.java
+++ b/src/main/java/org/sablecc/sablecc/parser/State.java
@@ -2,15 +2,14 @@
 
 package org.sablecc.sablecc.parser;
 
-import java.util.ArrayList;
+import java.util.List;
 
-@SuppressWarnings("rawtypes")
 final class State
 {
     int state;
-    ArrayList nodes;
+    List<Object> nodes; // elements are of type Node or List<Node>
 
-    State(int state, ArrayList nodes)
+    State(int state, List<Object> nodes)
     {
         this.state = state;
         this.nodes = nodes;
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 65db0e6ed3c3f113ab3da6522e475571b649c1c2..218852d1cac4b7f5dc1fec949060c8557974b05b 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -24,10 +24,10 @@ import java.io.IOException;
 @SuppressWarnings({"rawtypes","unchecked","unused"})
 public class Parser implements IParser
 {
-    protected ArrayList nodeList;
+    protected List<Object> nodeList;
 
     private final Lexer lexer;
-    private final ListIterator stack = new LinkedList().listIterator();
+    private final ListIterator<State> stack = new LinkedList<State>().listIterator();
     private int last_pos;
     private int last_line;
     private Token last_token;
@@ -39,8 +39,8 @@ public class Parser implements IParser
     private final static int ACCEPT = 2;
     private final static int ERROR = 3;
 
-    protected ArrayList firstPopped = null;
-    protected ArrayList lastPopped = null;
+    protected List<Object> firstPopped = null;
+    protected List<Object> lastPopped = null;
 
     public Parser(Lexer lexer)
     {
@@ -63,13 +63,13 @@ public class Parser implements IParser
             return;
         }
 
-        if (elementToCheck instanceof LinkedList) {
+        if (elementToCheck instanceof List<?>) {
             /*
              * special case: this is a list of nodes, for example an identifier
              * list, so we don't want to check the list but the last element
              * added to it
              */
-            final LinkedList nodeList = (LinkedList) elementToCheck;
+            final List<?> nodeList = (List<?>) elementToCheck;
 
             if (nodeList.size() > 0) {
                 elementToCheck = nodeList.get(nodeList.size() - 1);
@@ -100,11 +100,11 @@ public class Parser implements IParser
     }
 
 
-    protected int findBeginPos(final ArrayList list,
+    protected int findBeginPos(final List<Object> list,
             PositionedNode n) {
         Object first = list.get(0);
         if (!(first instanceof PositionedNode) && !(first instanceof IToken)) {
-            List list2 = (List) first;
+            List<?> list2 = (List<?>) first;
 
             if (list2.size() > 0) {
                 first = list2.get(0);
@@ -131,10 +131,10 @@ public class Parser implements IParser
     }
 
 
-    protected int findEndPos(final ArrayList list) {
+    protected int findEndPos(final List<Object> list) {
         Object last = list.get(list.size() - 1);
         if (!(last instanceof PositionedNode) && !(last instanceof IToken)) {
-            final List list2 = (List) last;
+            final List<?> list2 = (List<?>) last;
             last = list2.get(list2.size() - 1);
         }
 
@@ -182,7 +182,7 @@ $
 
 Macro:ParserInliningPushHeader
 
-    private void push(int numstate, ArrayList listNode) throws ParserException, LexerException, IOException
+    private void push(int numstate, List<Object> listNode) throws ParserException, LexerException, IOException
     {
         this.nodeList = listNode;
 
@@ -195,7 +195,7 @@ Macro:ParserNoInliningPushHeader
         // Empty body
     }
 
-    private void push(int numstate, ArrayList listNode, boolean hidden) throws ParserException, LexerException, IOException
+    private void push(int numstate, List<Object> listNode, boolean hidden) throws ParserException, LexerException, IOException
     {
         this.nodeList = listNode;
 
@@ -214,7 +214,7 @@ Macro:ParserCommon
             return;
         }
 
-        State s = (State) this.stack.next();
+        State s = this.stack.next();
         s.state = numstate;
         s.nodes = this.nodeList;
     }
@@ -250,14 +250,14 @@ Macro:ParserCommon
 
     private int state()
     {
-        State s = (State) this.stack.previous();
+        State s = this.stack.previous();
         this.stack.next();
         return s.state;
     }
 
-    protected ArrayList pop()
+    protected List<Object> pop()
     {
-        ArrayList list = ((State) this.stack.previous()).nodes;
+        List<Object> list = this.stack.previous().nodes;
         if (this.firstPopped == null) {
             this.firstPopped = list;
         } else {
@@ -322,7 +322,7 @@ Macro:ParserCommon
             {
                 case SHIFT:
                 {
-                    ArrayList list = new ArrayList();
+                    List<Object> list = new ArrayList<Object>();
                     list.add(this.lexer.next());
                     push(this.action[1], list$1$);
                 }
@@ -336,7 +336,7 @@ $
 Macro:ParserInliningReduce
                         case $0$: /* reduce $2$ */
                         {
-                            ArrayList list = new$0$();
+                            List<Object> list = new$0$();
                             push(goTo($1$), list);
                         }
                         break;
@@ -346,7 +346,7 @@ $
 Macro:ParserNoInliningReduce
                         case $0$: /* reduce $3$ */
                         {
-                            ArrayList list = new$0$();
+                            List<Object> list = new$0$();
                             push(goTo($1$), list, $2$);
                         }
                         break;
@@ -378,23 +378,23 @@ Macro:ParserNewHeader
 
 
 
-    protected ArrayList new$0$() /* reduce $1$ */
+    protected List<Object> new$0$() /* reduce $1$ */
     {
         this.firstPopped = null;
         this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("$1$");
-        ArrayList nodeList = new ArrayList();
+        List<Object> nodeList = new ArrayList<>();
 
 
 $
 
 Macro:ParserNewBodyDecl
-        ArrayList nodeArrayList$0$ = pop();
+        List<Object> nodeArrayList$0$ = pop();
 
 $
 
 Macro:ParserNewBodyDeclNull
-        ArrayList nodeArrayList$0$ = null;
+        List<Object> nodeArrayList$0$ = null;
 
 $
 
@@ -684,15 +684,14 @@ Macro:State
 
 package $0$;
 
-import java.util.ArrayList;
+import java.util.List;
 
-@SuppressWarnings("rawtypes")
 final class State
 {
     int state;
-    ArrayList nodes;
+    List<Object> nodes; // elements are of type Node or List<Node>
 
-    State(int state, ArrayList nodes)
+    State(int state, List<Object> nodes)
     {
         this.state = state;
         this.nodes = nodes;