diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index 7fd6f563b178c7aa9b4e7c9dcac1bfc4f7c3d5e4..06a60a5a5dc2bf039bbc823fc7928b632c458f9b 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -30,6 +30,8 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
   private LinkedList listSimpleTermTransform;
   private Map<Node, String> simpleTermOrsimpleListTermTypes;
 
+  private int popCount;
+
   GenerateAlternativeCodeForParser(File pkgDir, String aParsedAltName,
                                    String raParsedAltName,
                                    BufferedWriter file,
@@ -52,6 +54,13 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     this.macros = macros;
     this.listSimpleTermTransform = listSimpleTermTransform;
     this.simpleTermOrsimpleListTermTypes = simpleTermOrsimpleListTermTypes;
+
+    this.popCount = 0;
+  }
+
+  @Override
+  public void caseAElem(final AElem node) {
+    popCount++;
   }
 
   @Override
@@ -134,6 +143,10 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
         macros.apply(file, "ParserNewBodyListAdd", new String[] {type_name, "" + position});
 
       }
+      if (popCount > 0) {
+        // The nodeArrayList variables are numbered starting at 1, so the first popped variable has the number popCount and not popCount-1.
+        macros.apply(file, "ParserNewCheck", new String[] {String.valueOf(popCount)});
+      }
       macros.apply(file, "ParserNewTail");
     }
     catch(IOException e)
diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index f5bb945d227e5a2ceff2a8e7024809b0c73c2638..d5b9818517a66ddfe46873f48ab1414abaf3f6c4 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -31,9 +31,6 @@ public class Parser implements IParser
     private final static int ACCEPT = 2;
     private final static int ERROR = 3;
 
-    private List<Object> firstPopped = null;
-    private List<Object> lastPopped = null;
-
     public Parser(Lexer lexer)
     {
         this.lexer = lexer;
@@ -218,13 +215,7 @@ public class Parser implements IParser
 
     private List<Object> pop()
     {
-        List<Object> list = this.stack.previous().nodes;
-        if (this.firstPopped == null) {
-            this.firstPopped = list;
-        } else {
-            this.lastPopped = list;
-        }
-        return list;
+        return this.stack.previous().nodes;
     }
 
     private int index(Switchable token)
@@ -1927,8 +1918,6 @@ public class Parser implements IParser
 
     private List<Object> new0() /* reduce AAgrammar1Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar1Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -1943,7 +1932,6 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -1951,8 +1939,6 @@ public class Parser implements IParser
 
     private List<Object> new1() /* reduce AAgrammar2Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar2Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -1978,7 +1964,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -1986,8 +1972,6 @@ public class Parser implements IParser
 
     private List<Object> new2() /* reduce AAgrammar3Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar3Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2005,7 +1989,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -2013,8 +1997,6 @@ public class Parser implements IParser
 
     private List<Object> new3() /* reduce AAgrammar4Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar4Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2043,7 +2025,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2051,8 +2033,6 @@ public class Parser implements IParser
 
     private List<Object> new4() /* reduce AAgrammar5Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar5Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2070,7 +2050,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -2078,8 +2058,6 @@ public class Parser implements IParser
 
     private List<Object> new5() /* reduce AAgrammar6Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar6Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2108,7 +2086,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2116,8 +2094,6 @@ public class Parser implements IParser
 
     private List<Object> new6() /* reduce AAgrammar7Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar7Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2138,7 +2114,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2146,8 +2122,6 @@ public class Parser implements IParser
 
     private List<Object> new7() /* reduce AAgrammar8Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar8Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2179,7 +2153,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2187,8 +2161,6 @@ public class Parser implements IParser
 
     private List<Object> new8() /* reduce AAgrammar9Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar9Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2206,7 +2178,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -2214,8 +2186,6 @@ public class Parser implements IParser
 
     private List<Object> new9() /* reduce AAgrammar10Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar10Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2244,7 +2214,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2252,8 +2222,6 @@ public class Parser implements IParser
 
     private List<Object> new10() /* reduce AAgrammar11Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar11Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2274,7 +2242,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2282,8 +2250,6 @@ public class Parser implements IParser
 
     private List<Object> new11() /* reduce AAgrammar12Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar12Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2315,7 +2281,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2323,8 +2289,6 @@ public class Parser implements IParser
 
     private List<Object> new12() /* reduce AAgrammar13Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar13Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2345,7 +2309,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2353,8 +2317,6 @@ public class Parser implements IParser
 
     private List<Object> new13() /* reduce AAgrammar14Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar14Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2386,7 +2348,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2394,8 +2356,6 @@ public class Parser implements IParser
 
     private List<Object> new14() /* reduce AAgrammar15Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar15Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2419,7 +2379,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2427,8 +2387,6 @@ public class Parser implements IParser
 
     private List<Object> new15() /* reduce AAgrammar16Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar16Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2463,7 +2421,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -2471,8 +2429,6 @@ public class Parser implements IParser
 
     private List<Object> new16() /* reduce AAgrammar17Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar17Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2490,7 +2446,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -2498,8 +2454,6 @@ public class Parser implements IParser
 
     private List<Object> new17() /* reduce AAgrammar18Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar18Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2528,7 +2482,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2536,8 +2490,6 @@ public class Parser implements IParser
 
     private List<Object> new18() /* reduce AAgrammar19Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar19Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2558,7 +2510,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2566,8 +2518,6 @@ public class Parser implements IParser
 
     private List<Object> new19() /* reduce AAgrammar20Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar20Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2599,7 +2549,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2607,8 +2557,6 @@ public class Parser implements IParser
 
     private List<Object> new20() /* reduce AAgrammar21Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar21Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2629,7 +2577,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2637,8 +2585,6 @@ public class Parser implements IParser
 
     private List<Object> new21() /* reduce AAgrammar22Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar22Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2670,7 +2616,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2678,8 +2624,6 @@ public class Parser implements IParser
 
     private List<Object> new22() /* reduce AAgrammar23Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar23Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2703,7 +2647,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2711,8 +2655,6 @@ public class Parser implements IParser
 
     private List<Object> new23() /* reduce AAgrammar24Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar24Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2747,7 +2689,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -2755,8 +2697,6 @@ public class Parser implements IParser
 
     private List<Object> new24() /* reduce AAgrammar25Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar25Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2777,7 +2717,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -2785,8 +2725,6 @@ public class Parser implements IParser
 
     private List<Object> new25() /* reduce AAgrammar26Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar26Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2818,7 +2756,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2826,8 +2764,6 @@ public class Parser implements IParser
 
     private List<Object> new26() /* reduce AAgrammar27Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar27Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2851,7 +2787,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2859,8 +2795,6 @@ public class Parser implements IParser
 
     private List<Object> new27() /* reduce AAgrammar28Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar28Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2895,7 +2829,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -2903,8 +2837,6 @@ public class Parser implements IParser
 
     private List<Object> new28() /* reduce AAgrammar29Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar29Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2928,7 +2860,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -2936,8 +2868,6 @@ public class Parser implements IParser
 
     private List<Object> new29() /* reduce AAgrammar30Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar30Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -2972,7 +2902,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -2980,8 +2910,6 @@ public class Parser implements IParser
 
     private List<Object> new30() /* reduce AAgrammar31Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar31Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3008,7 +2936,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3016,8 +2944,6 @@ public class Parser implements IParser
 
     private List<Object> new31() /* reduce AAgrammar32Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar32Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3055,7 +2981,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -3063,8 +2989,6 @@ public class Parser implements IParser
 
     private List<Object> new32() /* reduce AAgrammar33Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar33Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3082,7 +3006,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -3090,8 +3014,6 @@ public class Parser implements IParser
 
     private List<Object> new33() /* reduce AAgrammar34Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar34Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3120,7 +3042,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -3128,8 +3050,6 @@ public class Parser implements IParser
 
     private List<Object> new34() /* reduce AAgrammar35Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar35Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3150,7 +3070,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -3158,8 +3078,6 @@ public class Parser implements IParser
 
     private List<Object> new35() /* reduce AAgrammar36Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar36Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3191,7 +3109,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3199,8 +3117,6 @@ public class Parser implements IParser
 
     private List<Object> new36() /* reduce AAgrammar37Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar37Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3221,7 +3137,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -3229,8 +3145,6 @@ public class Parser implements IParser
 
     private List<Object> new37() /* reduce AAgrammar38Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar38Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3262,7 +3176,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3270,8 +3184,6 @@ public class Parser implements IParser
 
     private List<Object> new38() /* reduce AAgrammar39Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar39Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3295,7 +3207,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3303,8 +3215,6 @@ public class Parser implements IParser
 
     private List<Object> new39() /* reduce AAgrammar40Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar40Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3339,7 +3249,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3347,8 +3257,6 @@ public class Parser implements IParser
 
     private List<Object> new40() /* reduce AAgrammar41Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar41Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3369,7 +3277,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -3377,8 +3285,6 @@ public class Parser implements IParser
 
     private List<Object> new41() /* reduce AAgrammar42Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar42Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3410,7 +3316,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3418,8 +3324,6 @@ public class Parser implements IParser
 
     private List<Object> new42() /* reduce AAgrammar43Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar43Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3443,7 +3347,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3451,8 +3355,6 @@ public class Parser implements IParser
 
     private List<Object> new43() /* reduce AAgrammar44Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar44Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3487,7 +3389,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3495,8 +3397,6 @@ public class Parser implements IParser
 
     private List<Object> new44() /* reduce AAgrammar45Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar45Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3520,7 +3420,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3528,8 +3428,6 @@ public class Parser implements IParser
 
     private List<Object> new45() /* reduce AAgrammar46Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar46Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3564,7 +3462,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3572,8 +3470,6 @@ public class Parser implements IParser
 
     private List<Object> new46() /* reduce AAgrammar47Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar47Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3600,7 +3496,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3608,8 +3504,6 @@ public class Parser implements IParser
 
     private List<Object> new47() /* reduce AAgrammar48Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar48Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3647,7 +3541,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -3655,8 +3549,6 @@ public class Parser implements IParser
 
     private List<Object> new48() /* reduce AAgrammar49Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar49Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3677,7 +3569,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -3685,8 +3577,6 @@ public class Parser implements IParser
 
     private List<Object> new49() /* reduce AAgrammar50Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar50Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3718,7 +3608,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3726,8 +3616,6 @@ public class Parser implements IParser
 
     private List<Object> new50() /* reduce AAgrammar51Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar51Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3751,7 +3639,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3759,8 +3647,6 @@ public class Parser implements IParser
 
     private List<Object> new51() /* reduce AAgrammar52Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar52Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3795,7 +3681,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3803,8 +3689,6 @@ public class Parser implements IParser
 
     private List<Object> new52() /* reduce AAgrammar53Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar53Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3828,7 +3712,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3836,8 +3720,6 @@ public class Parser implements IParser
 
     private List<Object> new53() /* reduce AAgrammar54Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar54Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3872,7 +3754,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3880,8 +3762,6 @@ public class Parser implements IParser
 
     private List<Object> new54() /* reduce AAgrammar55Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar55Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3908,7 +3788,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -3916,8 +3796,6 @@ public class Parser implements IParser
 
     private List<Object> new55() /* reduce AAgrammar56Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar56Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3955,7 +3833,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -3963,8 +3841,6 @@ public class Parser implements IParser
 
     private List<Object> new56() /* reduce AAgrammar57Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar57Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -3988,7 +3864,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -3996,8 +3872,6 @@ public class Parser implements IParser
 
     private List<Object> new57() /* reduce AAgrammar58Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar58Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4032,7 +3906,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4040,8 +3914,6 @@ public class Parser implements IParser
 
     private List<Object> new58() /* reduce AAgrammar59Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar59Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4068,7 +3940,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4076,8 +3948,6 @@ public class Parser implements IParser
 
     private List<Object> new59() /* reduce AAgrammar60Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar60Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4115,7 +3985,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -4123,8 +3993,6 @@ public class Parser implements IParser
 
     private List<Object> new60() /* reduce AAgrammar61Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar61Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4151,7 +4019,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4159,8 +4027,6 @@ public class Parser implements IParser
 
     private List<Object> new61() /* reduce AAgrammar62Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar62Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4198,7 +4064,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -4206,8 +4072,6 @@ public class Parser implements IParser
 
     private List<Object> new62() /* reduce AAgrammar63Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar63Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4237,7 +4101,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -4245,8 +4109,6 @@ public class Parser implements IParser
 
     private List<Object> new63() /* reduce AAgrammar64Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar64Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4287,7 +4149,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -4295,8 +4157,6 @@ public class Parser implements IParser
 
     private List<Object> new64() /* reduce AAgrammar65Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar65Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4314,7 +4174,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -4322,8 +4182,6 @@ public class Parser implements IParser
 
     private List<Object> new65() /* reduce AAgrammar66Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar66Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4352,7 +4210,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -4360,8 +4218,6 @@ public class Parser implements IParser
 
     private List<Object> new66() /* reduce AAgrammar67Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar67Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4382,7 +4238,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -4390,8 +4246,6 @@ public class Parser implements IParser
 
     private List<Object> new67() /* reduce AAgrammar68Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar68Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4423,7 +4277,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4431,8 +4285,6 @@ public class Parser implements IParser
 
     private List<Object> new68() /* reduce AAgrammar69Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar69Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4453,7 +4305,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -4461,8 +4313,6 @@ public class Parser implements IParser
 
     private List<Object> new69() /* reduce AAgrammar70Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar70Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4494,7 +4344,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4502,8 +4352,6 @@ public class Parser implements IParser
 
     private List<Object> new70() /* reduce AAgrammar71Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar71Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4527,7 +4375,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4535,8 +4383,6 @@ public class Parser implements IParser
 
     private List<Object> new71() /* reduce AAgrammar72Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar72Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4571,7 +4417,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4579,8 +4425,6 @@ public class Parser implements IParser
 
     private List<Object> new72() /* reduce AAgrammar73Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar73Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4601,7 +4445,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -4609,8 +4453,6 @@ public class Parser implements IParser
 
     private List<Object> new73() /* reduce AAgrammar74Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar74Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4642,7 +4484,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4650,8 +4492,6 @@ public class Parser implements IParser
 
     private List<Object> new74() /* reduce AAgrammar75Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar75Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4675,7 +4515,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4683,8 +4523,6 @@ public class Parser implements IParser
 
     private List<Object> new75() /* reduce AAgrammar76Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar76Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4719,7 +4557,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4727,8 +4565,6 @@ public class Parser implements IParser
 
     private List<Object> new76() /* reduce AAgrammar77Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar77Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4752,7 +4588,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4760,8 +4596,6 @@ public class Parser implements IParser
 
     private List<Object> new77() /* reduce AAgrammar78Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar78Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4796,7 +4630,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4804,8 +4638,6 @@ public class Parser implements IParser
 
     private List<Object> new78() /* reduce AAgrammar79Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar79Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4832,7 +4664,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -4840,8 +4672,6 @@ public class Parser implements IParser
 
     private List<Object> new79() /* reduce AAgrammar80Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar80Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4879,7 +4709,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -4887,8 +4717,6 @@ public class Parser implements IParser
 
     private List<Object> new80() /* reduce AAgrammar81Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar81Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4909,7 +4737,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -4917,8 +4745,6 @@ public class Parser implements IParser
 
     private List<Object> new81() /* reduce AAgrammar82Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar82Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4950,7 +4776,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4958,8 +4784,6 @@ public class Parser implements IParser
 
     private List<Object> new82() /* reduce AAgrammar83Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar83Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -4983,7 +4807,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -4991,8 +4815,6 @@ public class Parser implements IParser
 
     private List<Object> new83() /* reduce AAgrammar84Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar84Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5027,7 +4849,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5035,8 +4857,6 @@ public class Parser implements IParser
 
     private List<Object> new84() /* reduce AAgrammar85Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar85Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5060,7 +4880,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -5068,8 +4888,6 @@ public class Parser implements IParser
 
     private List<Object> new85() /* reduce AAgrammar86Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar86Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5104,7 +4922,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5112,8 +4930,6 @@ public class Parser implements IParser
 
     private List<Object> new86() /* reduce AAgrammar87Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar87Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5140,7 +4956,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5148,8 +4964,6 @@ public class Parser implements IParser
 
     private List<Object> new87() /* reduce AAgrammar88Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar88Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5187,7 +5001,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -5195,8 +5009,6 @@ public class Parser implements IParser
 
     private List<Object> new88() /* reduce AAgrammar89Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar89Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5220,7 +5032,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -5228,8 +5040,6 @@ public class Parser implements IParser
 
     private List<Object> new89() /* reduce AAgrammar90Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar90Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5264,7 +5074,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5272,8 +5082,6 @@ public class Parser implements IParser
 
     private List<Object> new90() /* reduce AAgrammar91Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar91Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5300,7 +5108,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5308,8 +5116,6 @@ public class Parser implements IParser
 
     private List<Object> new91() /* reduce AAgrammar92Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar92Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5347,7 +5153,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -5355,8 +5161,6 @@ public class Parser implements IParser
 
     private List<Object> new92() /* reduce AAgrammar93Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar93Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5383,7 +5187,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5391,8 +5195,6 @@ public class Parser implements IParser
 
     private List<Object> new93() /* reduce AAgrammar94Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar94Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5430,7 +5232,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -5438,8 +5240,6 @@ public class Parser implements IParser
 
     private List<Object> new94() /* reduce AAgrammar95Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar95Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5469,7 +5269,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -5477,8 +5277,6 @@ public class Parser implements IParser
 
     private List<Object> new95() /* reduce AAgrammar96Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar96Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5519,7 +5317,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -5527,8 +5325,6 @@ public class Parser implements IParser
 
     private List<Object> new96() /* reduce AAgrammar97Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar97Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5549,7 +5345,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -5557,8 +5353,6 @@ public class Parser implements IParser
 
     private List<Object> new97() /* reduce AAgrammar98Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar98Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5590,7 +5384,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -5598,8 +5392,6 @@ public class Parser implements IParser
 
     private List<Object> new98() /* reduce AAgrammar99Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar99Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5623,7 +5415,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -5631,8 +5423,6 @@ public class Parser implements IParser
 
     private List<Object> new99() /* reduce AAgrammar100Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar100Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5667,7 +5457,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5675,8 +5465,6 @@ public class Parser implements IParser
 
     private List<Object> new100() /* reduce AAgrammar101Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar101Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5700,7 +5488,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -5708,8 +5496,6 @@ public class Parser implements IParser
 
     private List<Object> new101() /* reduce AAgrammar102Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar102Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5744,7 +5530,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5752,8 +5538,6 @@ public class Parser implements IParser
 
     private List<Object> new102() /* reduce AAgrammar103Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar103Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5780,7 +5564,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5788,8 +5572,6 @@ public class Parser implements IParser
 
     private List<Object> new103() /* reduce AAgrammar104Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar104Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5827,7 +5609,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -5835,8 +5617,6 @@ public class Parser implements IParser
 
     private List<Object> new104() /* reduce AAgrammar105Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar105Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5860,7 +5640,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -5868,8 +5648,6 @@ public class Parser implements IParser
 
     private List<Object> new105() /* reduce AAgrammar106Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar106Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5904,7 +5682,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5912,8 +5690,6 @@ public class Parser implements IParser
 
     private List<Object> new106() /* reduce AAgrammar107Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar107Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5940,7 +5716,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -5948,8 +5724,6 @@ public class Parser implements IParser
 
     private List<Object> new107() /* reduce AAgrammar108Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar108Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -5987,7 +5761,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -5995,8 +5769,6 @@ public class Parser implements IParser
 
     private List<Object> new108() /* reduce AAgrammar109Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar109Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6023,7 +5795,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -6031,8 +5803,6 @@ public class Parser implements IParser
 
     private List<Object> new109() /* reduce AAgrammar110Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar110Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6070,7 +5840,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6078,8 +5848,6 @@ public class Parser implements IParser
 
     private List<Object> new110() /* reduce AAgrammar111Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar111Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6109,7 +5877,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6117,8 +5885,6 @@ public class Parser implements IParser
 
     private List<Object> new111() /* reduce AAgrammar112Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar112Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6159,7 +5925,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -6167,8 +5933,6 @@ public class Parser implements IParser
 
     private List<Object> new112() /* reduce AAgrammar113Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar113Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6192,7 +5956,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -6200,8 +5964,6 @@ public class Parser implements IParser
 
     private List<Object> new113() /* reduce AAgrammar114Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar114Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6236,7 +5998,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -6244,8 +6006,6 @@ public class Parser implements IParser
 
     private List<Object> new114() /* reduce AAgrammar115Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar115Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6272,7 +6032,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -6280,8 +6040,6 @@ public class Parser implements IParser
 
     private List<Object> new115() /* reduce AAgrammar116Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar116Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6319,7 +6077,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6327,8 +6085,6 @@ public class Parser implements IParser
 
     private List<Object> new116() /* reduce AAgrammar117Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar117Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6355,7 +6111,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -6363,8 +6119,6 @@ public class Parser implements IParser
 
     private List<Object> new117() /* reduce AAgrammar118Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar118Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6402,7 +6156,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6410,8 +6164,6 @@ public class Parser implements IParser
 
     private List<Object> new118() /* reduce AAgrammar119Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar119Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6441,7 +6193,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6449,8 +6201,6 @@ public class Parser implements IParser
 
     private List<Object> new119() /* reduce AAgrammar120Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar120Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6491,7 +6241,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -6499,8 +6249,6 @@ public class Parser implements IParser
 
     private List<Object> new120() /* reduce AAgrammar121Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar121Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6527,7 +6275,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -6535,8 +6283,6 @@ public class Parser implements IParser
 
     private List<Object> new121() /* reduce AAgrammar122Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar122Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6574,7 +6320,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6582,8 +6328,6 @@ public class Parser implements IParser
 
     private List<Object> new122() /* reduce AAgrammar123Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar123Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6613,7 +6357,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6621,8 +6365,6 @@ public class Parser implements IParser
 
     private List<Object> new123() /* reduce AAgrammar124Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar124Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6663,7 +6405,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -6671,8 +6413,6 @@ public class Parser implements IParser
 
     private List<Object> new124() /* reduce AAgrammar125Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar125Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6702,7 +6442,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -6710,8 +6450,6 @@ public class Parser implements IParser
 
     private List<Object> new125() /* reduce AAgrammar126Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar126Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6752,7 +6490,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -6760,8 +6498,6 @@ public class Parser implements IParser
 
     private List<Object> new126() /* reduce AAgrammar127Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar127Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6794,7 +6530,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -6802,8 +6538,6 @@ public class Parser implements IParser
 
     private List<Object> new127() /* reduce AAgrammar128Grammar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar128Grammar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6847,7 +6581,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList7);
         return nodeList;
     }
 
@@ -6855,8 +6589,6 @@ public class Parser implements IParser
 
     private List<Object> new128() /* reduce APackage */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APackage");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6877,7 +6609,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -6885,8 +6617,6 @@ public class Parser implements IParser
 
     private List<Object> new129() /* reduce AApkgname1PkgName */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AApkgname1PkgName");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6903,7 +6633,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -6911,8 +6641,6 @@ public class Parser implements IParser
 
     private List<Object> new130() /* reduce AApkgname2PkgName */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AApkgname2PkgName");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6940,7 +6668,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -6948,8 +6676,6 @@ public class Parser implements IParser
 
     private List<Object> new131() /* reduce APkgNameTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APkgNameTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6958,7 +6684,7 @@ public class Parser implements IParser
         TPkgId tpkgidNode1;
         tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
         nodeList.add(tpkgidNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -6966,8 +6692,6 @@ public class Parser implements IParser
 
     private List<Object> new132() /* reduce AHelpers */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AHelpers");
         List<Object> nodeList = new ArrayList<>();
 
@@ -6994,7 +6718,7 @@ public class Parser implements IParser
         phelpersNode1 = new AHelpers(listNode3);
         }
         nodeList.add(phelpersNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7002,8 +6726,6 @@ public class Parser implements IParser
 
     private List<Object> new133() /* reduce AHelperDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AHelperDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7022,7 +6744,7 @@ public class Parser implements IParser
         phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
         }
         nodeList.add(phelperdefNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -7030,8 +6752,6 @@ public class Parser implements IParser
 
     private List<Object> new134() /* reduce AStates */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AStates");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7059,7 +6779,7 @@ public class Parser implements IParser
         pstatesNode1 = new AStates(listNode3);
         }
         nodeList.add(pstatesNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -7067,8 +6787,6 @@ public class Parser implements IParser
 
     private List<Object> new135() /* reduce AAidlist1IdList */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAidlist1IdList");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7084,7 +6802,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7092,8 +6810,6 @@ public class Parser implements IParser
 
     private List<Object> new136() /* reduce AAidlist2IdList */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAidlist2IdList");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7120,7 +6836,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7128,8 +6844,6 @@ public class Parser implements IParser
 
     private List<Object> new137() /* reduce AIdListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AIdListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7138,7 +6852,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7146,8 +6860,6 @@ public class Parser implements IParser
 
     private List<Object> new138() /* reduce ATokens */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATokens");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7174,7 +6886,7 @@ public class Parser implements IParser
         ptokensNode1 = new ATokens(listNode3);
         }
         nodeList.add(ptokensNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7182,8 +6894,6 @@ public class Parser implements IParser
 
     private List<Object> new139() /* reduce AAtokendef1TokenDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef1TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7202,7 +6912,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, null, null);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -7210,8 +6920,6 @@ public class Parser implements IParser
 
     private List<Object> new140() /* reduce AAtokendef2TokenDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef2TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7233,7 +6941,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, null, null);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -7241,8 +6949,6 @@ public class Parser implements IParser
 
     private List<Object> new141() /* reduce AAtokendef3TokenDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef3TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7266,7 +6972,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -7274,8 +6980,6 @@ public class Parser implements IParser
 
     private List<Object> new142() /* reduce AAtokendef4TokenDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef4TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7302,7 +7006,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
     }
 
@@ -7310,8 +7014,6 @@ public class Parser implements IParser
 
     private List<Object> new143() /* reduce AAstatelist1StateList */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist1StateList");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7331,7 +7033,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, null, listNode4);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -7339,8 +7041,6 @@ public class Parser implements IParser
 
     private List<Object> new144() /* reduce AAstatelist2StateList */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist2StateList");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7363,7 +7063,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode4);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -7371,8 +7071,6 @@ public class Parser implements IParser
 
     private List<Object> new145() /* reduce AAstatelist3StateList */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist3StateList");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7403,7 +7101,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -7411,8 +7109,6 @@ public class Parser implements IParser
 
     private List<Object> new146() /* reduce AAstatelist4StateList */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist4StateList");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7446,7 +7142,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -7454,8 +7150,6 @@ public class Parser implements IParser
 
     private List<Object> new147() /* reduce AAstatelisttail1StateListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelisttail1StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7470,7 +7164,7 @@ public class Parser implements IParser
         pstatelisttailNode1 = new AStateListTail(tidNode2, null);
         }
         nodeList.add(pstatelisttailNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7478,8 +7172,6 @@ public class Parser implements IParser
 
     private List<Object> new148() /* reduce AAstatelisttail2StateListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelisttail2StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7497,7 +7189,7 @@ public class Parser implements IParser
         pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
         }
         nodeList.add(pstatelisttailNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -7505,8 +7197,6 @@ public class Parser implements IParser
 
     private List<Object> new149() /* reduce ATransition */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATransition");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7521,7 +7211,7 @@ public class Parser implements IParser
         ptransitionNode1 = new ATransition(tidNode2);
         }
         nodeList.add(ptransitionNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7529,8 +7219,6 @@ public class Parser implements IParser
 
     private List<Object> new150() /* reduce AAigntokens1IgnTokens */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAigntokens1IgnTokens");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7548,7 +7236,7 @@ public class Parser implements IParser
         pigntokensNode1 = new AIgnTokens(listNode2);
         }
         nodeList.add(pigntokensNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -7556,8 +7244,6 @@ public class Parser implements IParser
 
     private List<Object> new151() /* reduce AAigntokens2IgnTokens */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAigntokens2IgnTokens");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7586,7 +7272,7 @@ public class Parser implements IParser
         pigntokensNode1 = new AIgnTokens(listNode3);
         }
         nodeList.add(pigntokensNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -7594,8 +7280,6 @@ public class Parser implements IParser
 
     private List<Object> new152() /* reduce ALookAhead */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ALookAhead");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7607,7 +7291,7 @@ public class Parser implements IParser
         pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
         nodeList.add(tslashNode1);
         nodeList.add(pregexpNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7615,8 +7299,6 @@ public class Parser implements IParser
 
     private List<Object> new153() /* reduce AAregexp1RegExp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAregexp1RegExp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7638,7 +7320,7 @@ public class Parser implements IParser
         pregexpNode1 = new ARegExp(listNode3);
         }
         nodeList.add(pregexpNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7646,8 +7328,6 @@ public class Parser implements IParser
 
     private List<Object> new154() /* reduce AAregexp2RegExp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAregexp2RegExp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7680,7 +7360,7 @@ public class Parser implements IParser
         pregexpNode1 = new ARegExp(listNode4);
         }
         nodeList.add(pregexpNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7688,8 +7368,6 @@ public class Parser implements IParser
 
     private List<Object> new155() /* reduce ARegExpTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ARegExpTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7698,7 +7376,7 @@ public class Parser implements IParser
         PConcat pconcatNode1;
         pconcatNode1 = (PConcat)nodeArrayList2.get(0);
         nodeList.add(pconcatNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7706,8 +7384,6 @@ public class Parser implements IParser
 
     private List<Object> new156() /* reduce AAconcat1Concat */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAconcat1Concat");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7722,7 +7398,6 @@ public class Parser implements IParser
         pconcatNode1 = new AConcat(listNode2);
         }
         nodeList.add(pconcatNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7730,8 +7405,6 @@ public class Parser implements IParser
 
     private List<Object> new157() /* reduce AAconcat2Concat */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAconcat2Concat");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7757,7 +7430,7 @@ public class Parser implements IParser
         pconcatNode1 = new AConcat(listNode3);
         }
         nodeList.add(pconcatNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7765,8 +7438,6 @@ public class Parser implements IParser
 
     private List<Object> new158() /* reduce AAunexp1UnExp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAunexp1UnExp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7780,7 +7451,7 @@ public class Parser implements IParser
         punexpNode1 = new AUnExp(pbasicNode2, null);
         }
         nodeList.add(punexpNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7788,8 +7459,6 @@ public class Parser implements IParser
 
     private List<Object> new159() /* reduce AAunexp2UnExp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAunexp2UnExp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7806,7 +7475,7 @@ public class Parser implements IParser
         punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
         }
         nodeList.add(punexpNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -7814,8 +7483,6 @@ public class Parser implements IParser
 
     private List<Object> new160() /* reduce ACharBasic */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ACharBasic");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7829,7 +7496,7 @@ public class Parser implements IParser
         pbasicNode1 = new ACharBasic(pcharNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7837,8 +7504,6 @@ public class Parser implements IParser
 
     private List<Object> new161() /* reduce ASetBasic */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ASetBasic");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7852,7 +7517,7 @@ public class Parser implements IParser
         pbasicNode1 = new ASetBasic(psetNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7860,8 +7525,6 @@ public class Parser implements IParser
 
     private List<Object> new162() /* reduce AStringBasic */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AStringBasic");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7875,7 +7538,7 @@ public class Parser implements IParser
         pbasicNode1 = new AStringBasic(tstringNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7883,8 +7546,6 @@ public class Parser implements IParser
 
     private List<Object> new163() /* reduce AIdBasic */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AIdBasic");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7898,7 +7559,7 @@ public class Parser implements IParser
         pbasicNode1 = new AIdBasic(tidNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7906,8 +7567,6 @@ public class Parser implements IParser
 
     private List<Object> new164() /* reduce ARegExpBasic */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ARegExpBasic");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7923,7 +7582,7 @@ public class Parser implements IParser
         pbasicNode1 = new ARegExpBasic(pregexpNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -7931,8 +7590,6 @@ public class Parser implements IParser
 
     private List<Object> new165() /* reduce ACharChar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ACharChar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7946,7 +7603,7 @@ public class Parser implements IParser
         pcharNode1 = new ACharChar(tcharNode2);
         }
         nodeList.add(pcharNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7954,8 +7611,6 @@ public class Parser implements IParser
 
     private List<Object> new166() /* reduce ADecChar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ADecChar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7969,7 +7624,7 @@ public class Parser implements IParser
         pcharNode1 = new ADecChar(tdeccharNode2);
         }
         nodeList.add(pcharNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -7977,8 +7632,6 @@ public class Parser implements IParser
 
     private List<Object> new167() /* reduce AHexChar */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AHexChar");
         List<Object> nodeList = new ArrayList<>();
 
@@ -7992,7 +7645,7 @@ public class Parser implements IParser
         pcharNode1 = new AHexChar(thexcharNode2);
         }
         nodeList.add(pcharNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8000,8 +7653,6 @@ public class Parser implements IParser
 
     private List<Object> new168() /* reduce AOperationSet */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AOperationSet");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8023,7 +7674,7 @@ public class Parser implements IParser
         psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
         }
         nodeList.add(psetNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -8031,8 +7682,6 @@ public class Parser implements IParser
 
     private List<Object> new169() /* reduce AIntervalSet */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AIntervalSet");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8052,7 +7701,7 @@ public class Parser implements IParser
         psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
         }
         nodeList.add(psetNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -8060,8 +7709,6 @@ public class Parser implements IParser
 
     private List<Object> new170() /* reduce AStarUnOp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AStarUnOp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8075,7 +7722,7 @@ public class Parser implements IParser
         punopNode1 = new AStarUnOp(tstarNode2);
         }
         nodeList.add(punopNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8083,8 +7730,6 @@ public class Parser implements IParser
 
     private List<Object> new171() /* reduce AQMarkUnOp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AQMarkUnOp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8098,7 +7743,7 @@ public class Parser implements IParser
         punopNode1 = new AQMarkUnOp(tqmarkNode2);
         }
         nodeList.add(punopNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8106,8 +7751,6 @@ public class Parser implements IParser
 
     private List<Object> new172() /* reduce APlusUnOp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APlusUnOp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8121,7 +7764,7 @@ public class Parser implements IParser
         punopNode1 = new APlusUnOp(tplusNode2);
         }
         nodeList.add(punopNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8129,8 +7772,6 @@ public class Parser implements IParser
 
     private List<Object> new173() /* reduce APlusBinOp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("APlusBinOp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8142,7 +7783,7 @@ public class Parser implements IParser
         pbinopNode1 = new APlusBinOp();
         }
         nodeList.add(pbinopNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8150,8 +7791,6 @@ public class Parser implements IParser
 
     private List<Object> new174() /* reduce AMinusBinOp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AMinusBinOp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8163,7 +7802,7 @@ public class Parser implements IParser
         pbinopNode1 = new AMinusBinOp();
         }
         nodeList.add(pbinopNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8171,8 +7810,6 @@ public class Parser implements IParser
 
     private List<Object> new175() /* reduce AProductions */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AProductions");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8199,7 +7836,7 @@ public class Parser implements IParser
         pproductionsNode1 = new AProductions(listNode3);
         }
         nodeList.add(pproductionsNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8207,8 +7844,6 @@ public class Parser implements IParser
 
     private List<Object> new176() /* reduce AAprod1Prod */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprod1Prod");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8243,7 +7878,7 @@ public class Parser implements IParser
         pprodNode1 = new AProd(tidNode2, null, listNode4, listNode6);
         }
         nodeList.add(pprodNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -8251,8 +7886,6 @@ public class Parser implements IParser
 
     private List<Object> new177() /* reduce AAprod2Prod */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprod2Prod");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8300,7 +7933,7 @@ public class Parser implements IParser
         pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
         }
         nodeList.add(pprodNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -8308,8 +7941,6 @@ public class Parser implements IParser
 
     private List<Object> new178() /* reduce AAprodtransform1ProdTransform */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodtransform1ProdTransform");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8324,7 +7955,7 @@ public class Parser implements IParser
         }
         nodeList.add(tarrowNode1);
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -8332,8 +7963,6 @@ public class Parser implements IParser
 
     private List<Object> new179() /* reduce AAprodtransform2ProdTransform */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodtransform2ProdTransform");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8359,7 +7988,7 @@ public class Parser implements IParser
         }
         nodeList.add(tarrowNode1);
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -8367,8 +7996,6 @@ public class Parser implements IParser
 
     private List<Object> new180() /* reduce AAalts1Alts */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalts1Alts");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8384,7 +8011,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8392,8 +8019,6 @@ public class Parser implements IParser
 
     private List<Object> new181() /* reduce AAalts2Alts */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalts2Alts");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8420,7 +8045,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8428,8 +8053,6 @@ public class Parser implements IParser
 
     private List<Object> new182() /* reduce AAltsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8438,7 +8061,7 @@ public class Parser implements IParser
         PAlt paltNode1;
         paltNode1 = (PAlt)nodeArrayList2.get(0);
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8446,8 +8069,6 @@ public class Parser implements IParser
 
     private List<Object> new183() /* reduce AAalt1Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt1Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8462,7 +8083,6 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode3, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8470,8 +8090,6 @@ public class Parser implements IParser
 
     private List<Object> new184() /* reduce AAalt2Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt2Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8489,7 +8107,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode3, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8497,8 +8115,6 @@ public class Parser implements IParser
 
     private List<Object> new185() /* reduce AAalt3Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt3Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8524,7 +8140,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode4, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8532,8 +8148,6 @@ public class Parser implements IParser
 
     private List<Object> new186() /* reduce AAalt4Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt4Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8562,7 +8176,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode4, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8570,8 +8184,6 @@ public class Parser implements IParser
 
     private List<Object> new187() /* reduce AAalt5Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt5Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8589,7 +8201,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode3, palttransformNode4);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8597,8 +8209,6 @@ public class Parser implements IParser
 
     private List<Object> new188() /* reduce AAalt6Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt6Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8619,7 +8229,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode3, palttransformNode4);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8627,8 +8237,6 @@ public class Parser implements IParser
 
     private List<Object> new189() /* reduce AAalt7Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt7Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8657,7 +8265,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode4, palttransformNode5);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8665,8 +8273,6 @@ public class Parser implements IParser
 
     private List<Object> new190() /* reduce AAalt8Alt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalt8Alt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8698,7 +8304,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode4, palttransformNode5);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -8706,8 +8312,6 @@ public class Parser implements IParser
 
     private List<Object> new191() /* reduce AAalttransform1AltTransform */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalttransform1AltTransform");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8729,7 +8333,7 @@ public class Parser implements IParser
         palttransformNode1 = new AAltTransform(tlbraceNode2, listNode3, trbraceNode4);
         }
         nodeList.add(palttransformNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -8737,8 +8341,6 @@ public class Parser implements IParser
 
     private List<Object> new192() /* reduce AAalttransform2AltTransform */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAalttransform2AltTransform");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8771,7 +8373,7 @@ public class Parser implements IParser
         palttransformNode1 = new AAltTransform(tlbraceNode2, listNode4, trbraceNode5);
         }
         nodeList.add(palttransformNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -8779,8 +8381,6 @@ public class Parser implements IParser
 
     private List<Object> new193() /* reduce AAnewterm1Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewterm1Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8803,7 +8403,7 @@ public class Parser implements IParser
         ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -8811,8 +8411,6 @@ public class Parser implements IParser
 
     private List<Object> new194() /* reduce AAnewterm2Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewterm2Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8846,7 +8444,7 @@ public class Parser implements IParser
         ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -8854,8 +8452,6 @@ public class Parser implements IParser
 
     private List<Object> new195() /* reduce AAlistterm1Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistterm1Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8874,7 +8470,7 @@ public class Parser implements IParser
         ptermNode1 = new AListTerm(tlbktNode2, listNode3);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8882,8 +8478,6 @@ public class Parser implements IParser
 
     private List<Object> new196() /* reduce AAlistterm2Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistterm2Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8913,7 +8507,7 @@ public class Parser implements IParser
         ptermNode1 = new AListTerm(tlbktNode2, listNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -8921,8 +8515,6 @@ public class Parser implements IParser
 
     private List<Object> new197() /* reduce AAsimpleterm1Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm1Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8936,7 +8528,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(null, tidNode3, null);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -8944,8 +8536,6 @@ public class Parser implements IParser
 
     private List<Object> new198() /* reduce AAsimpleterm2Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm2Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8962,7 +8552,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8970,8 +8560,6 @@ public class Parser implements IParser
 
     private List<Object> new199() /* reduce AAsimpleterm3Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm3Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -8988,7 +8576,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(null, tidNode3, tidNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -8996,8 +8584,6 @@ public class Parser implements IParser
 
     private List<Object> new200() /* reduce AAsimpleterm4Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm4Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9017,7 +8603,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, tidNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -9025,8 +8611,6 @@ public class Parser implements IParser
 
     private List<Object> new201() /* reduce ANullTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANullTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9038,7 +8622,7 @@ public class Parser implements IParser
         ptermNode1 = new ANullTerm();
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9046,8 +8630,6 @@ public class Parser implements IParser
 
     private List<Object> new202() /* reduce AAlistoflistterm1ListOfListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistoflistterm1ListOfListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9063,7 +8645,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9071,8 +8653,6 @@ public class Parser implements IParser
 
     private List<Object> new203() /* reduce AAlistoflistterm2ListOfListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAlistoflistterm2ListOfListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9099,7 +8679,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9107,8 +8687,6 @@ public class Parser implements IParser
 
     private List<Object> new204() /* reduce AAnewlistterm1ListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewlistterm1ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9131,7 +8709,7 @@ public class Parser implements IParser
         plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode4);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -9139,8 +8717,6 @@ public class Parser implements IParser
 
     private List<Object> new205() /* reduce AAnewlistterm2ListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAnewlistterm2ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9174,7 +8750,7 @@ public class Parser implements IParser
         plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
     }
 
@@ -9182,8 +8758,6 @@ public class Parser implements IParser
 
     private List<Object> new206() /* reduce AAsimplelistterm1ListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm1ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9197,7 +8771,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9205,8 +8779,6 @@ public class Parser implements IParser
 
     private List<Object> new207() /* reduce AAsimplelistterm2ListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm2ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9223,7 +8795,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9231,8 +8803,6 @@ public class Parser implements IParser
 
     private List<Object> new208() /* reduce AAsimplelistterm3ListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm3ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9249,7 +8819,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(null, tidNode3, tidNode4);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9257,8 +8827,6 @@ public class Parser implements IParser
 
     private List<Object> new209() /* reduce AAsimplelistterm4ListTerm */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm4ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9278,7 +8846,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, tidNode4);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -9286,8 +8854,6 @@ public class Parser implements IParser
 
     private List<Object> new210() /* reduce AListTermTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AListTermTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9296,7 +8862,7 @@ public class Parser implements IParser
         PListTerm plisttermNode1;
         plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9304,8 +8870,6 @@ public class Parser implements IParser
 
     private List<Object> new211() /* reduce ASimpleTermTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ASimpleTermTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9314,7 +8878,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9322,8 +8886,6 @@ public class Parser implements IParser
 
     private List<Object> new212() /* reduce AAprodname1ProdName */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodname1ProdName");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9337,7 +8899,7 @@ public class Parser implements IParser
         pprodnameNode1 = new AProdName(tidNode2, null);
         }
         nodeList.add(pprodnameNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9345,8 +8907,6 @@ public class Parser implements IParser
 
     private List<Object> new213() /* reduce AAprodname2ProdName */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAprodname2ProdName");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9363,7 +8923,7 @@ public class Parser implements IParser
         pprodnameNode1 = new AProdName(tidNode2, tidNode3);
         }
         nodeList.add(pprodnameNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9371,8 +8931,6 @@ public class Parser implements IParser
 
     private List<Object> new214() /* reduce AProdNameTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AProdNameTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9381,7 +8939,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9389,8 +8947,6 @@ public class Parser implements IParser
 
     private List<Object> new215() /* reduce AAparams1Params */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAparams1Params");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9406,7 +8962,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9414,8 +8970,6 @@ public class Parser implements IParser
 
     private List<Object> new216() /* reduce AAparams2Params */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAparams2Params");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9442,7 +8996,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9450,8 +9004,6 @@ public class Parser implements IParser
 
     private List<Object> new217() /* reduce AParamsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AParamsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9460,7 +9012,7 @@ public class Parser implements IParser
         PTerm ptermNode1;
         ptermNode1 = (PTerm)nodeArrayList2.get(0);
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9468,8 +9020,6 @@ public class Parser implements IParser
 
     private List<Object> new218() /* reduce AAltName */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAltName");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9479,7 +9029,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -9487,8 +9037,6 @@ public class Parser implements IParser
 
     private List<Object> new219() /* reduce AAelem1Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem1Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9502,7 +9050,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, null, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9510,8 +9058,6 @@ public class Parser implements IParser
 
     private List<Object> new220() /* reduce AAelem2Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem2Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9528,7 +9074,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, null, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9536,8 +9082,6 @@ public class Parser implements IParser
 
     private List<Object> new221() /* reduce AAelem3Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem3Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9554,7 +9098,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9562,8 +9106,6 @@ public class Parser implements IParser
 
     private List<Object> new222() /* reduce AAelem4Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem4Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9583,7 +9125,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -9591,8 +9133,6 @@ public class Parser implements IParser
 
     private List<Object> new223() /* reduce AAelem5Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem5Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9609,7 +9149,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, null, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9617,8 +9157,6 @@ public class Parser implements IParser
 
     private List<Object> new224() /* reduce AAelem6Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem6Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9638,7 +9176,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, null, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -9646,8 +9184,6 @@ public class Parser implements IParser
 
     private List<Object> new225() /* reduce AAelem7Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem7Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9667,7 +9203,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
     }
 
@@ -9675,8 +9211,6 @@ public class Parser implements IParser
 
     private List<Object> new226() /* reduce AAelem8Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAelem8Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9699,7 +9233,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -9707,8 +9241,6 @@ public class Parser implements IParser
 
     private List<Object> new227() /* reduce AElemName */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AElemName");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9719,7 +9251,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -9727,8 +9259,6 @@ public class Parser implements IParser
 
     private List<Object> new228() /* reduce ATokenSpecifier */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATokenSpecifier");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9741,7 +9271,7 @@ public class Parser implements IParser
         pspecifierNode1 = new ATokenSpecifier();
         }
         nodeList.add(pspecifierNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9749,8 +9279,6 @@ public class Parser implements IParser
 
     private List<Object> new229() /* reduce AProductionSpecifier */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AProductionSpecifier");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9763,7 +9291,7 @@ public class Parser implements IParser
         pspecifierNode1 = new AProductionSpecifier();
         }
         nodeList.add(pspecifierNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9771,8 +9299,6 @@ public class Parser implements IParser
 
     private List<Object> new230() /* reduce AAst */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAst");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9801,7 +9327,7 @@ public class Parser implements IParser
         pastNode1 = new AAst(listNode3);
         }
         nodeList.add(pastNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -9809,8 +9335,6 @@ public class Parser implements IParser
 
     private List<Object> new231() /* reduce AAstProd */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstProd");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9841,7 +9365,7 @@ public class Parser implements IParser
         pastprodNode1 = new AAstProd(tidNode2, listNode4);
         }
         nodeList.add(pastprodNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
     }
 
@@ -9849,8 +9373,6 @@ public class Parser implements IParser
 
     private List<Object> new232() /* reduce AAastalts1AstAlts */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalts1AstAlts");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9866,7 +9388,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9874,8 +9396,6 @@ public class Parser implements IParser
 
     private List<Object> new233() /* reduce AAastalts2AstAlts */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalts2AstAlts");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9902,7 +9422,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9910,8 +9430,6 @@ public class Parser implements IParser
 
     private List<Object> new234() /* reduce AAstAltsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAstAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9920,7 +9438,7 @@ public class Parser implements IParser
         PAstAlt pastaltNode1;
         pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -9928,8 +9446,6 @@ public class Parser implements IParser
 
     private List<Object> new235() /* reduce AAastalt1AstAlt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt1AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9944,7 +9460,6 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(null, listNode3);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9952,8 +9467,6 @@ public class Parser implements IParser
 
     private List<Object> new236() /* reduce AAastalt2AstAlt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt2AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -9971,7 +9484,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(tidNode2, listNode3);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -9979,8 +9492,6 @@ public class Parser implements IParser
 
     private List<Object> new237() /* reduce AAastalt3AstAlt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt3AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10006,7 +9517,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(null, listNode4);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10014,8 +9525,6 @@ public class Parser implements IParser
 
     private List<Object> new238() /* reduce AAastalt4AstAlt */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt4AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10044,7 +9553,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(tidNode2, listNode4);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10052,8 +9561,6 @@ public class Parser implements IParser
 
     private List<Object> new239() /* reduce ATerminal$PkgNameTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$PkgNameTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10069,7 +9576,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10077,8 +9584,6 @@ public class Parser implements IParser
 
     private List<Object> new240() /* reduce ANonTerminal$PkgNameTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$PkgNameTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10105,7 +9610,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10113,8 +9618,6 @@ public class Parser implements IParser
 
     private List<Object> new241() /* reduce ATerminal$HelperDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$HelperDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10130,7 +9633,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10138,8 +9641,6 @@ public class Parser implements IParser
 
     private List<Object> new242() /* reduce ANonTerminal$HelperDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$HelperDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10166,7 +9667,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10174,8 +9675,6 @@ public class Parser implements IParser
 
     private List<Object> new243() /* reduce ATerminal$IdListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$IdListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10191,7 +9690,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10199,8 +9698,6 @@ public class Parser implements IParser
 
     private List<Object> new244() /* reduce ANonTerminal$IdListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$IdListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10227,7 +9724,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10235,8 +9732,6 @@ public class Parser implements IParser
 
     private List<Object> new245() /* reduce ATerminal$TokenDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10252,7 +9747,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10260,8 +9755,6 @@ public class Parser implements IParser
 
     private List<Object> new246() /* reduce ANonTerminal$TokenDef */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10288,7 +9781,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10296,8 +9789,6 @@ public class Parser implements IParser
 
     private List<Object> new247() /* reduce ATerminal$StateListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10313,7 +9804,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10321,8 +9812,6 @@ public class Parser implements IParser
 
     private List<Object> new248() /* reduce ANonTerminal$StateListTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10349,7 +9838,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10357,8 +9846,6 @@ public class Parser implements IParser
 
     private List<Object> new249() /* reduce ATerminal$RegExpTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$RegExpTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10374,7 +9861,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10382,8 +9869,6 @@ public class Parser implements IParser
 
     private List<Object> new250() /* reduce ANonTerminal$RegExpTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$RegExpTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10410,7 +9895,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10418,8 +9903,6 @@ public class Parser implements IParser
 
     private List<Object> new251() /* reduce ATerminal$UnExp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$UnExp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10435,7 +9918,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10443,8 +9926,6 @@ public class Parser implements IParser
 
     private List<Object> new252() /* reduce ANonTerminal$UnExp */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$UnExp");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10471,7 +9952,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10479,8 +9960,6 @@ public class Parser implements IParser
 
     private List<Object> new253() /* reduce ATerminal$Prod */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Prod");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10496,7 +9975,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10504,8 +9983,6 @@ public class Parser implements IParser
 
     private List<Object> new254() /* reduce ANonTerminal$Prod */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Prod");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10532,7 +10009,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10540,8 +10017,6 @@ public class Parser implements IParser
 
     private List<Object> new255() /* reduce ATerminal$Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10557,7 +10032,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10565,8 +10040,6 @@ public class Parser implements IParser
 
     private List<Object> new256() /* reduce ANonTerminal$Elem */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Elem");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10593,7 +10066,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10601,8 +10074,6 @@ public class Parser implements IParser
 
     private List<Object> new257() /* reduce ATerminal$AltsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AltsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10618,7 +10089,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10626,8 +10097,6 @@ public class Parser implements IParser
 
     private List<Object> new258() /* reduce ANonTerminal$AltsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AltsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10654,7 +10123,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10662,8 +10131,6 @@ public class Parser implements IParser
 
     private List<Object> new259() /* reduce ATerminal$Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10679,7 +10146,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10687,8 +10154,6 @@ public class Parser implements IParser
 
     private List<Object> new260() /* reduce ANonTerminal$Term */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Term");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10715,7 +10180,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10723,8 +10188,6 @@ public class Parser implements IParser
 
     private List<Object> new261() /* reduce ATerminal$ListTermTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$ListTermTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10740,7 +10203,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10748,8 +10211,6 @@ public class Parser implements IParser
 
     private List<Object> new262() /* reduce ANonTerminal$ListTermTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$ListTermTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10776,7 +10237,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10784,8 +10245,6 @@ public class Parser implements IParser
 
     private List<Object> new263() /* reduce ATerminal$ParamsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$ParamsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10801,7 +10260,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10809,8 +10268,6 @@ public class Parser implements IParser
 
     private List<Object> new264() /* reduce ANonTerminal$ParamsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$ParamsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10837,7 +10294,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10845,8 +10302,6 @@ public class Parser implements IParser
 
     private List<Object> new265() /* reduce ATerminal$AstProd */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AstProd");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10862,7 +10317,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10870,8 +10325,6 @@ public class Parser implements IParser
 
     private List<Object> new266() /* reduce ANonTerminal$AstProd */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AstProd");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10898,7 +10351,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
@@ -10906,8 +10359,6 @@ public class Parser implements IParser
 
     private List<Object> new267() /* reduce ATerminal$AstAltsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AstAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10923,7 +10374,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
     }
 
@@ -10931,8 +10382,6 @@ public class Parser implements IParser
 
     private List<Object> new268() /* reduce ANonTerminal$AstAltsTail */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AstAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
@@ -10959,7 +10408,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
     }
 
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index f57dcf6d9ef0c975d6cd8018226072f08d432ea4..6719a6735ac79c549e52e5bae145687ceff1d0df 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -39,9 +39,6 @@ public class Parser implements IParser
     private final static int ACCEPT = 2;
     private final static int ERROR = 3;
 
-    private List<Object> firstPopped = null;
-    private List<Object> lastPopped = null;
-
     public Parser(Lexer lexer)
     {
         this.lexer = lexer;
@@ -252,13 +249,7 @@ Macro:ParserCommon
 
     private List<Object> pop()
     {
-        List<Object> list = this.stack.previous().nodes;
-        if (this.firstPopped == null) {
-            this.firstPopped = list;
-        } else {
-            this.lastPopped = list;
-        }
-        return list;
+        return this.stack.previous().nodes;
     }
 
     private int index(Switchable token)
@@ -375,8 +366,6 @@ Macro:ParserNewHeader
 
     private List<Object> new$0$() /* reduce $1$ */
     {
-        this.firstPopped = null;
-        this.lastPopped = null;
         final boolean addElementsToNewList = addElementsFromListToNewList("$1$");
         List<Object> nodeList = new ArrayList<>();
 
@@ -470,8 +459,12 @@ Macro:ParserNewBodyListAdd
 
 $
 
+Macro:ParserNewCheck
+        checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList$0$);
+
+$
+
 Macro:ParserNewTail
-        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }