diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index e5579f04d09cef127e0264a8808c07b63cd5b8e7..f5bb945d227e5a2ceff2a8e7024809b0c73c2638 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -44,9 +44,9 @@ public class Parser implements IParser
     @Override
     public Map<PositionedNode, SourcecodeRange> getMapping() { return this.mapping; }
 
-    private void checkResult(Object elementToCheck) {
+    private void checkResult(Object elementToCheck, List<Object> beginNode, List<Object> endNode) {
         // nodes with no tokens or sub nodes at all may exist
-        if (this.firstPopped == null) {
+        if (endNode == null) {
             return;
         }
 
@@ -70,12 +70,12 @@ public class Parser implements IParser
 
         if (!this.getMapping().containsKey(node)) {
             // dealing with a one-token element
-            if (this.lastPopped == null) {
-                this.lastPopped = this.firstPopped;
+            if (beginNode == null) {
+                beginNode = endNode;
             }
 
-            final int begin = findBeginPos(this.lastPopped, node);
-            int end = findEndPos(this.firstPopped);
+            final int begin = findBeginPos(beginNode, node);
+            int end = findEndPos(endNode);
             if (end == -1) end = begin;
             final SourcecodeRange range = new SourcecodeRange(begin, end);
 
@@ -1943,7 +1943,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -1978,7 +1978,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2005,7 +2005,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2043,7 +2043,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2070,7 +2070,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2108,7 +2108,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2138,7 +2138,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2179,7 +2179,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2206,7 +2206,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2244,7 +2244,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2274,7 +2274,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2315,7 +2315,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2345,7 +2345,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2386,7 +2386,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2419,7 +2419,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2463,7 +2463,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2490,7 +2490,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2528,7 +2528,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2558,7 +2558,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2599,7 +2599,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2629,7 +2629,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2670,7 +2670,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2703,7 +2703,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2747,7 +2747,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2777,7 +2777,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2818,7 +2818,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2851,7 +2851,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2895,7 +2895,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2928,7 +2928,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -2972,7 +2972,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3008,7 +3008,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3055,7 +3055,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3082,7 +3082,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3120,7 +3120,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3150,7 +3150,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3191,7 +3191,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3221,7 +3221,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3262,7 +3262,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3295,7 +3295,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3339,7 +3339,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3369,7 +3369,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3410,7 +3410,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3443,7 +3443,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3487,7 +3487,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3520,7 +3520,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3564,7 +3564,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3600,7 +3600,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3647,7 +3647,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3677,7 +3677,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3718,7 +3718,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3751,7 +3751,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3795,7 +3795,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3828,7 +3828,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3872,7 +3872,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3908,7 +3908,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3955,7 +3955,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -3988,7 +3988,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4032,7 +4032,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4068,7 +4068,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4115,7 +4115,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4151,7 +4151,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4198,7 +4198,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4237,7 +4237,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4287,7 +4287,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4314,7 +4314,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4352,7 +4352,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4382,7 +4382,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4423,7 +4423,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4453,7 +4453,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4494,7 +4494,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4527,7 +4527,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4571,7 +4571,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4601,7 +4601,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4642,7 +4642,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4675,7 +4675,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4719,7 +4719,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4752,7 +4752,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4796,7 +4796,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4832,7 +4832,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4879,7 +4879,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4909,7 +4909,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4950,7 +4950,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -4983,7 +4983,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5027,7 +5027,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5060,7 +5060,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5104,7 +5104,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5140,7 +5140,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5187,7 +5187,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5220,7 +5220,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5264,7 +5264,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5300,7 +5300,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5347,7 +5347,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5383,7 +5383,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5430,7 +5430,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5469,7 +5469,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5519,7 +5519,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5549,7 +5549,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5590,7 +5590,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5623,7 +5623,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5667,7 +5667,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5700,7 +5700,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5744,7 +5744,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5780,7 +5780,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5827,7 +5827,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5860,7 +5860,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5904,7 +5904,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5940,7 +5940,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -5987,7 +5987,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6023,7 +6023,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6070,7 +6070,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6109,7 +6109,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6159,7 +6159,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6192,7 +6192,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6236,7 +6236,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6272,7 +6272,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6319,7 +6319,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6355,7 +6355,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6402,7 +6402,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6441,7 +6441,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6491,7 +6491,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6527,7 +6527,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6574,7 +6574,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6613,7 +6613,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6663,7 +6663,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6702,7 +6702,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6752,7 +6752,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6794,7 +6794,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6847,7 +6847,7 @@ public class Parser implements IParser
         pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         }
         nodeList.add(pgrammarNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6877,7 +6877,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6903,7 +6903,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6940,7 +6940,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6958,7 +6958,7 @@ public class Parser implements IParser
         TPkgId tpkgidNode1;
         tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
         nodeList.add(tpkgidNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -6994,7 +6994,7 @@ public class Parser implements IParser
         phelpersNode1 = new AHelpers(listNode3);
         }
         nodeList.add(phelpersNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7022,7 +7022,7 @@ public class Parser implements IParser
         phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
         }
         nodeList.add(phelperdefNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7059,7 +7059,7 @@ public class Parser implements IParser
         pstatesNode1 = new AStates(listNode3);
         }
         nodeList.add(pstatesNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7084,7 +7084,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7120,7 +7120,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7138,7 +7138,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7174,7 +7174,7 @@ public class Parser implements IParser
         ptokensNode1 = new ATokens(listNode3);
         }
         nodeList.add(ptokensNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7202,7 +7202,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, null, null);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7233,7 +7233,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, null, null);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7266,7 +7266,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7302,7 +7302,7 @@ public class Parser implements IParser
         ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
         }
         nodeList.add(ptokendefNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7331,7 +7331,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, null, listNode4);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7363,7 +7363,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode4);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7403,7 +7403,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7446,7 +7446,7 @@ public class Parser implements IParser
         pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
         }
         nodeList.add(pstatelistNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7470,7 +7470,7 @@ public class Parser implements IParser
         pstatelisttailNode1 = new AStateListTail(tidNode2, null);
         }
         nodeList.add(pstatelisttailNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7497,7 +7497,7 @@ public class Parser implements IParser
         pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
         }
         nodeList.add(pstatelisttailNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7521,7 +7521,7 @@ public class Parser implements IParser
         ptransitionNode1 = new ATransition(tidNode2);
         }
         nodeList.add(ptransitionNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7548,7 +7548,7 @@ public class Parser implements IParser
         pigntokensNode1 = new AIgnTokens(listNode2);
         }
         nodeList.add(pigntokensNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7586,7 +7586,7 @@ public class Parser implements IParser
         pigntokensNode1 = new AIgnTokens(listNode3);
         }
         nodeList.add(pigntokensNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7607,7 +7607,7 @@ public class Parser implements IParser
         pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
         nodeList.add(tslashNode1);
         nodeList.add(pregexpNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7638,7 +7638,7 @@ public class Parser implements IParser
         pregexpNode1 = new ARegExp(listNode3);
         }
         nodeList.add(pregexpNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7680,7 +7680,7 @@ public class Parser implements IParser
         pregexpNode1 = new ARegExp(listNode4);
         }
         nodeList.add(pregexpNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7698,7 +7698,7 @@ public class Parser implements IParser
         PConcat pconcatNode1;
         pconcatNode1 = (PConcat)nodeArrayList2.get(0);
         nodeList.add(pconcatNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7722,7 +7722,7 @@ public class Parser implements IParser
         pconcatNode1 = new AConcat(listNode2);
         }
         nodeList.add(pconcatNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7757,7 +7757,7 @@ public class Parser implements IParser
         pconcatNode1 = new AConcat(listNode3);
         }
         nodeList.add(pconcatNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7780,7 +7780,7 @@ public class Parser implements IParser
         punexpNode1 = new AUnExp(pbasicNode2, null);
         }
         nodeList.add(punexpNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7806,7 +7806,7 @@ public class Parser implements IParser
         punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
         }
         nodeList.add(punexpNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7829,7 +7829,7 @@ public class Parser implements IParser
         pbasicNode1 = new ACharBasic(pcharNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7852,7 +7852,7 @@ public class Parser implements IParser
         pbasicNode1 = new ASetBasic(psetNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7875,7 +7875,7 @@ public class Parser implements IParser
         pbasicNode1 = new AStringBasic(tstringNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7898,7 +7898,7 @@ public class Parser implements IParser
         pbasicNode1 = new AIdBasic(tidNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7923,7 +7923,7 @@ public class Parser implements IParser
         pbasicNode1 = new ARegExpBasic(pregexpNode2);
         }
         nodeList.add(pbasicNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7946,7 +7946,7 @@ public class Parser implements IParser
         pcharNode1 = new ACharChar(tcharNode2);
         }
         nodeList.add(pcharNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7969,7 +7969,7 @@ public class Parser implements IParser
         pcharNode1 = new ADecChar(tdeccharNode2);
         }
         nodeList.add(pcharNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -7992,7 +7992,7 @@ public class Parser implements IParser
         pcharNode1 = new AHexChar(thexcharNode2);
         }
         nodeList.add(pcharNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8023,7 +8023,7 @@ public class Parser implements IParser
         psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
         }
         nodeList.add(psetNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8052,7 +8052,7 @@ public class Parser implements IParser
         psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
         }
         nodeList.add(psetNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8075,7 +8075,7 @@ public class Parser implements IParser
         punopNode1 = new AStarUnOp(tstarNode2);
         }
         nodeList.add(punopNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8098,7 +8098,7 @@ public class Parser implements IParser
         punopNode1 = new AQMarkUnOp(tqmarkNode2);
         }
         nodeList.add(punopNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8121,7 +8121,7 @@ public class Parser implements IParser
         punopNode1 = new APlusUnOp(tplusNode2);
         }
         nodeList.add(punopNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8142,7 +8142,7 @@ public class Parser implements IParser
         pbinopNode1 = new APlusBinOp();
         }
         nodeList.add(pbinopNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8163,7 +8163,7 @@ public class Parser implements IParser
         pbinopNode1 = new AMinusBinOp();
         }
         nodeList.add(pbinopNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8199,7 +8199,7 @@ public class Parser implements IParser
         pproductionsNode1 = new AProductions(listNode3);
         }
         nodeList.add(pproductionsNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8243,7 +8243,7 @@ public class Parser implements IParser
         pprodNode1 = new AProd(tidNode2, null, listNode4, listNode6);
         }
         nodeList.add(pprodNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8300,7 +8300,7 @@ public class Parser implements IParser
         pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
         }
         nodeList.add(pprodNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8324,7 +8324,7 @@ public class Parser implements IParser
         }
         nodeList.add(tarrowNode1);
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8359,7 +8359,7 @@ public class Parser implements IParser
         }
         nodeList.add(tarrowNode1);
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8384,7 +8384,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8420,7 +8420,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8438,7 +8438,7 @@ public class Parser implements IParser
         PAlt paltNode1;
         paltNode1 = (PAlt)nodeArrayList2.get(0);
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8462,7 +8462,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode3, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8489,7 +8489,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode3, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8524,7 +8524,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode4, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8562,7 +8562,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode4, null);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8589,7 +8589,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode3, palttransformNode4);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8619,7 +8619,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode3, palttransformNode4);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8657,7 +8657,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(null, listNode4, palttransformNode5);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8698,7 +8698,7 @@ public class Parser implements IParser
         paltNode1 = new AAlt(tidNode2, listNode4, palttransformNode5);
         }
         nodeList.add(paltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8729,7 +8729,7 @@ public class Parser implements IParser
         palttransformNode1 = new AAltTransform(tlbraceNode2, listNode3, trbraceNode4);
         }
         nodeList.add(palttransformNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8771,7 +8771,7 @@ public class Parser implements IParser
         palttransformNode1 = new AAltTransform(tlbraceNode2, listNode4, trbraceNode5);
         }
         nodeList.add(palttransformNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8803,7 +8803,7 @@ public class Parser implements IParser
         ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8846,7 +8846,7 @@ public class Parser implements IParser
         ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8874,7 +8874,7 @@ public class Parser implements IParser
         ptermNode1 = new AListTerm(tlbktNode2, listNode3);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8913,7 +8913,7 @@ public class Parser implements IParser
         ptermNode1 = new AListTerm(tlbktNode2, listNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8936,7 +8936,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(null, tidNode3, null);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8962,7 +8962,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -8988,7 +8988,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(null, tidNode3, tidNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9017,7 +9017,7 @@ public class Parser implements IParser
         ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, tidNode4);
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9038,7 +9038,7 @@ public class Parser implements IParser
         ptermNode1 = new ANullTerm();
         }
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9063,7 +9063,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9099,7 +9099,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9131,7 +9131,7 @@ public class Parser implements IParser
         plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode4);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9174,7 +9174,7 @@ public class Parser implements IParser
         plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9197,7 +9197,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9223,7 +9223,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9249,7 +9249,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(null, tidNode3, tidNode4);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9278,7 +9278,7 @@ public class Parser implements IParser
         plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, tidNode4);
         }
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9296,7 +9296,7 @@ public class Parser implements IParser
         PListTerm plisttermNode1;
         plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
         nodeList.add(plisttermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9314,7 +9314,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9337,7 +9337,7 @@ public class Parser implements IParser
         pprodnameNode1 = new AProdName(tidNode2, null);
         }
         nodeList.add(pprodnameNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9363,7 +9363,7 @@ public class Parser implements IParser
         pprodnameNode1 = new AProdName(tidNode2, tidNode3);
         }
         nodeList.add(pprodnameNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9381,7 +9381,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9406,7 +9406,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9442,7 +9442,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9460,7 +9460,7 @@ public class Parser implements IParser
         PTerm ptermNode1;
         ptermNode1 = (PTerm)nodeArrayList2.get(0);
         nodeList.add(ptermNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9479,7 +9479,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9502,7 +9502,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, null, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9528,7 +9528,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, null, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9554,7 +9554,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9583,7 +9583,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, null);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9609,7 +9609,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, null, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9638,7 +9638,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, null, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9667,7 +9667,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9699,7 +9699,7 @@ public class Parser implements IParser
         pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, punopNode5);
         }
         nodeList.add(pelemNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9719,7 +9719,7 @@ public class Parser implements IParser
         TId tidNode1;
         tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9741,7 +9741,7 @@ public class Parser implements IParser
         pspecifierNode1 = new ATokenSpecifier();
         }
         nodeList.add(pspecifierNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9763,7 +9763,7 @@ public class Parser implements IParser
         pspecifierNode1 = new AProductionSpecifier();
         }
         nodeList.add(pspecifierNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9801,7 +9801,7 @@ public class Parser implements IParser
         pastNode1 = new AAst(listNode3);
         }
         nodeList.add(pastNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9841,7 +9841,7 @@ public class Parser implements IParser
         pastprodNode1 = new AAstProd(tidNode2, listNode4);
         }
         nodeList.add(pastprodNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9866,7 +9866,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9902,7 +9902,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9920,7 +9920,7 @@ public class Parser implements IParser
         PAstAlt pastaltNode1;
         pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9944,7 +9944,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(null, listNode3);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -9971,7 +9971,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(tidNode2, listNode3);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10006,7 +10006,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(null, listNode4);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10044,7 +10044,7 @@ public class Parser implements IParser
         pastaltNode1 = new AAstAlt(tidNode2, listNode4);
         }
         nodeList.add(pastaltNode1);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10069,7 +10069,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10105,7 +10105,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10130,7 +10130,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10166,7 +10166,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10191,7 +10191,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10227,7 +10227,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10252,7 +10252,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10288,7 +10288,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10313,7 +10313,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10349,7 +10349,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10374,7 +10374,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10410,7 +10410,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10435,7 +10435,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10471,7 +10471,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10496,7 +10496,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10532,7 +10532,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10557,7 +10557,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10593,7 +10593,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10618,7 +10618,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10654,7 +10654,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10679,7 +10679,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10715,7 +10715,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10740,7 +10740,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10776,7 +10776,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10801,7 +10801,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10837,7 +10837,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10862,7 +10862,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10898,7 +10898,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10923,7 +10923,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode2);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
@@ -10959,7 +10959,7 @@ public class Parser implements IParser
         }
         }
         nodeList.add(listNode3);
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }
 
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 2feb3020a3a48cba1e65fb1ed9c3eb5543287644..f57dcf6d9ef0c975d6cd8018226072f08d432ea4 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -52,9 +52,9 @@ public class Parser implements IParser
     @Override
     public Map<PositionedNode, SourcecodeRange> getMapping() { return this.mapping; }
 
-    private void checkResult(Object elementToCheck) {
+    private void checkResult(Object elementToCheck, List<Object> beginNode, List<Object> endNode) {
         // nodes with no tokens or sub nodes at all may exist
-        if (this.firstPopped == null) {
+        if (endNode == null) {
             return;
         }
 
@@ -78,12 +78,12 @@ public class Parser implements IParser
 
         if (!this.getMapping().containsKey(node)) {
             // dealing with a one-token element
-            if (this.lastPopped == null) {
-                this.lastPopped = this.firstPopped;
+            if (beginNode == null) {
+                beginNode = endNode;
             }
 
-            final int begin = findBeginPos(this.lastPopped, node);
-            int end = findEndPos(this.firstPopped);
+            final int begin = findBeginPos(beginNode, node);
+            int end = findEndPos(endNode);
             if (end == -1) end = begin;
             final SourcecodeRange range = new SourcecodeRange(begin, end);
 
@@ -471,7 +471,7 @@ Macro:ParserNewBodyListAdd
 $
 
 Macro:ParserNewTail
-        checkResult(nodeList.get(0));
+        checkResult(nodeList.get(0), this.lastPopped, this.firstPopped);
         return nodeList;
     }