diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index 510cc4ca568b5c914ad6f2f73dfba2b2244e0fd7..b7a36e5b1ae96b070f1199be34f8c968dc37eacd 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -130,20 +130,32 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
   {
     try
     {
-      PTerm firstTerm = null;
-      for(PTerm term : node.getTerms())
+      if(node.getTerms().isEmpty())
       {
-        if(firstTerm == null)
+        macros.apply(file, "ParserNewTailEmpty", null);
+      }
+      else
+      {
+        PTerm firstTerm = node.getTerms().get(0);
+        if (popCount > 0) {
+          // The nodeArrayList variables are numbered starting at 1, so the first popped variable has the number popCount and not popCount-1.
+          macros.apply(file, "ParserNewCheck", new String[] {getVariableName(firstTerm), String.valueOf(popCount)});
+        }
+
+        if(node.getTerms().size() == 1)
         {
-          firstTerm = term;
+          macros.apply(file, "ParserNewTailSingle", new String[] {getVariableName(firstTerm)});
+        }
+        else
+        {
+          macros.apply(file, "ParserNewTailMultiHead");
+          for(PTerm term : node.getTerms())
+          {
+            macros.apply(file, "ParserNewTailMultiElement", new String[] {getVariableName(term)});
+          }
+          macros.apply(file, "ParserNewTailMultiTail");
         }
-        macros.apply(file, "ParserNewBodyListAdd", new String[] {getVariableName(term)});
-      }
-      if (firstTerm != null && popCount > 0) {
-        // The nodeArrayList variables are numbered starting at 1, so the first popped variable has the number popCount and not popCount-1.
-        macros.apply(file, "ParserNewCheck", new String[] {getVariableName(firstTerm), String.valueOf(popCount)});
       }
-      macros.apply(file, "ParserNewTail");
     }
     catch(IOException e)
     {
diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index 0dd7ee340f3447eaa69718921000471fa2feae20..280defd9cf18483e57ae4e8c16fc72e40bdfb0e0 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -7,6 +7,7 @@ import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -1857,45 +1858,34 @@ public class Parser implements IParser
 
     private List<Object> new0() /* reduce AAgrammar1Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new1() /* reduce AAgrammar2Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         List<TPkgId> listNode3 = listNode2;
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new2() /* reduce AAgrammar3Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new3() /* reduce AAgrammar4Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -1903,28 +1893,22 @@ public class Parser implements IParser
         PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new4() /* reduce AAgrammar5Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new5() /* reduce AAgrammar6Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -1932,30 +1916,24 @@ public class Parser implements IParser
         PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new6() /* reduce AAgrammar7Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
         PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new7() /* reduce AAgrammar8Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -1965,28 +1943,22 @@ public class Parser implements IParser
         PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new8() /* reduce AAgrammar9Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new9() /* reduce AAgrammar10Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -1994,30 +1966,24 @@ public class Parser implements IParser
         PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new10() /* reduce AAgrammar11Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
         PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new11() /* reduce AAgrammar12Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2027,30 +1993,24 @@ public class Parser implements IParser
         PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new12() /* reduce AAgrammar13Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
         PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new13() /* reduce AAgrammar14Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2060,15 +2020,12 @@ public class Parser implements IParser
         PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new14() /* reduce AAgrammar15Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2077,15 +2034,12 @@ public class Parser implements IParser
         PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new15() /* reduce AAgrammar16Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2097,28 +2051,22 @@ public class Parser implements IParser
         PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new16() /* reduce AAgrammar17Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new17() /* reduce AAgrammar18Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -2126,30 +2074,24 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new18() /* reduce AAgrammar19Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new19() /* reduce AAgrammar20Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2159,30 +2101,24 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new20() /* reduce AAgrammar21Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new21() /* reduce AAgrammar22Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2192,15 +2128,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new22() /* reduce AAgrammar23Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2209,15 +2142,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new23() /* reduce AAgrammar24Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2229,30 +2159,24 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new24() /* reduce AAgrammar25Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new25() /* reduce AAgrammar26Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2262,15 +2186,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new26() /* reduce AAgrammar27Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2279,15 +2200,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new27() /* reduce AAgrammar28Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2299,15 +2217,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new28() /* reduce AAgrammar29Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2316,15 +2231,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new29() /* reduce AAgrammar30Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2336,15 +2248,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new30() /* reduce AAgrammar31Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2355,15 +2264,12 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new31() /* reduce AAgrammar32Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -2377,28 +2283,22 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new32() /* reduce AAgrammar33Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PProductions pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new33() /* reduce AAgrammar34Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -2406,30 +2306,24 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new34() /* reduce AAgrammar35Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
         PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new35() /* reduce AAgrammar36Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2439,30 +2333,24 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new36() /* reduce AAgrammar37Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
         PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new37() /* reduce AAgrammar38Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2472,15 +2360,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new38() /* reduce AAgrammar39Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2489,15 +2374,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new39() /* reduce AAgrammar40Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2509,30 +2391,24 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new40() /* reduce AAgrammar41Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
         PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new41() /* reduce AAgrammar42Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2542,15 +2418,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new42() /* reduce AAgrammar43Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2559,15 +2432,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new43() /* reduce AAgrammar44Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2579,15 +2449,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new44() /* reduce AAgrammar45Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2596,15 +2463,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new45() /* reduce AAgrammar46Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2616,15 +2480,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new46() /* reduce AAgrammar47Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2635,15 +2496,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new47() /* reduce AAgrammar48Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -2657,30 +2515,24 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new48() /* reduce AAgrammar49Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
         PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new49() /* reduce AAgrammar50Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2690,15 +2542,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new50() /* reduce AAgrammar51Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2707,15 +2556,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new51() /* reduce AAgrammar52Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2727,15 +2573,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new52() /* reduce AAgrammar53Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2744,15 +2587,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new53() /* reduce AAgrammar54Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2764,15 +2604,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new54() /* reduce AAgrammar55Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2783,15 +2620,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new55() /* reduce AAgrammar56Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -2805,15 +2639,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new56() /* reduce AAgrammar57Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -2822,15 +2653,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new57() /* reduce AAgrammar58Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2842,15 +2670,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new58() /* reduce AAgrammar59Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2861,15 +2686,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new59() /* reduce AAgrammar60Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -2883,15 +2705,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new60() /* reduce AAgrammar61Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -2902,15 +2721,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new61() /* reduce AAgrammar62Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -2924,15 +2740,12 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new62() /* reduce AAgrammar63Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -2945,15 +2758,12 @@ public class Parser implements IParser
         PProductions pproductionsNode7 = (PProductions)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new63() /* reduce AAgrammar64Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -2969,28 +2779,22 @@ public class Parser implements IParser
         PProductions pproductionsNode8 = (PProductions)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new64() /* reduce AAgrammar65Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAst pastNode8 = (PAst)nodeArrayList1.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new65() /* reduce AAgrammar66Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -2998,30 +2802,24 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new66() /* reduce AAgrammar67Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
         PAst pastNode8 = (PAst)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new67() /* reduce AAgrammar68Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3031,30 +2829,24 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new68() /* reduce AAgrammar69Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
         PAst pastNode8 = (PAst)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new69() /* reduce AAgrammar70Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3064,15 +2856,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new70() /* reduce AAgrammar71Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3081,15 +2870,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new71() /* reduce AAgrammar72Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3101,30 +2887,24 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new72() /* reduce AAgrammar73Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
         PAst pastNode8 = (PAst)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new73() /* reduce AAgrammar74Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3134,15 +2914,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new74() /* reduce AAgrammar75Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3151,15 +2928,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new75() /* reduce AAgrammar76Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3171,15 +2945,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new76() /* reduce AAgrammar77Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3188,15 +2959,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new77() /* reduce AAgrammar78Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3208,15 +2976,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new78() /* reduce AAgrammar79Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3227,15 +2992,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new79() /* reduce AAgrammar80Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3249,30 +3011,24 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new80() /* reduce AAgrammar81Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
         PAst pastNode8 = (PAst)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new81() /* reduce AAgrammar82Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3282,15 +3038,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new82() /* reduce AAgrammar83Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3299,15 +3052,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new83() /* reduce AAgrammar84Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3319,15 +3069,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new84() /* reduce AAgrammar85Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3336,15 +3083,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new85() /* reduce AAgrammar86Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3356,15 +3100,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new86() /* reduce AAgrammar87Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3375,15 +3116,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new87() /* reduce AAgrammar88Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3397,15 +3135,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new88() /* reduce AAgrammar89Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3414,15 +3149,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new89() /* reduce AAgrammar90Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3434,15 +3166,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new90() /* reduce AAgrammar91Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3453,15 +3182,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new91() /* reduce AAgrammar92Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3475,15 +3201,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new92() /* reduce AAgrammar93Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3494,15 +3217,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new93() /* reduce AAgrammar94Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3516,15 +3236,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new94() /* reduce AAgrammar95Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3537,15 +3254,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new95() /* reduce AAgrammar96Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -3561,30 +3275,24 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new96() /* reduce AAgrammar97Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PProductions pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
         PAst pastNode8 = (PAst)nodeArrayList2.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new97() /* reduce AAgrammar98Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3594,15 +3302,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new98() /* reduce AAgrammar99Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3611,15 +3316,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new99() /* reduce AAgrammar100Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3631,15 +3333,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new100() /* reduce AAgrammar101Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3648,15 +3347,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new101() /* reduce AAgrammar102Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3668,15 +3364,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new102() /* reduce AAgrammar103Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3687,15 +3380,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new103() /* reduce AAgrammar104Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3709,15 +3399,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new104() /* reduce AAgrammar105Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3726,15 +3413,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new105() /* reduce AAgrammar106Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3746,15 +3430,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new106() /* reduce AAgrammar107Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3765,15 +3446,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new107() /* reduce AAgrammar108Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3787,15 +3465,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new108() /* reduce AAgrammar109Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3806,15 +3481,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new109() /* reduce AAgrammar110Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3828,15 +3500,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new110() /* reduce AAgrammar111Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3849,15 +3518,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new111() /* reduce AAgrammar112Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -3873,15 +3539,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new112() /* reduce AAgrammar113Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -3890,15 +3553,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList3.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new113() /* reduce AAgrammar114Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3910,15 +3570,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new114() /* reduce AAgrammar115Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3929,15 +3586,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new115() /* reduce AAgrammar116Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3951,15 +3605,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new116() /* reduce AAgrammar117Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -3970,15 +3621,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new117() /* reduce AAgrammar118Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -3992,15 +3640,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new118() /* reduce AAgrammar119Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4013,15 +3658,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new119() /* reduce AAgrammar120Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -4037,15 +3679,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new120() /* reduce AAgrammar121Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4056,15 +3695,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList4.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new121() /* reduce AAgrammar122Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4078,15 +3714,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new122() /* reduce AAgrammar123Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4099,15 +3732,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new123() /* reduce AAgrammar124Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -4123,15 +3753,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new124() /* reduce AAgrammar125Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4144,15 +3771,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList5.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new125() /* reduce AAgrammar126Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -4168,15 +3792,12 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new126() /* reduce AAgrammar127Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -4191,15 +3812,12 @@ public class Parser implements IParser
         PAst pastNode8 = (PAst)nodeArrayList6.get(0);
         AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new127() /* reduce AAgrammar128Grammar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList7 = pop();
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
@@ -4217,28 +3835,22 @@ public class Parser implements IParser
         PAst pastNode9 = (PAst)nodeArrayList7.get(0);
         AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
 
-        nodeList.add(pgrammarNode1);
         checkResult(pgrammarNode1, nodeArrayList1, nodeArrayList7);
-        return nodeList;
+        return Collections.<Object>singletonList(pgrammarNode1);
     }
 
     private List<Object> new128() /* reduce APackage */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode1 = (List<TPkgId>)nodeArrayList2.get(0);
         List<TPkgId> listNode2 = listNode1;
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new129() /* reduce AApkgname1PkgName */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TPkgId tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
@@ -4248,15 +3860,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new130() /* reduce AApkgname2PkgName */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -4272,42 +3881,33 @@ public class Parser implements IParser
         } else {
             listNode3.addAll(listNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new131() /* reduce APkgNameTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TPkgId tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
-        nodeList.add(tpkgidNode1);
         checkResult(tpkgidNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(tpkgidNode1);
     }
 
     private List<Object> new132() /* reduce AHelpers */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PHelperDef> listNode2 = (List<PHelperDef>)nodeArrayList2.get(0);
         List<PHelperDef> listNode3 = listNode2;
         AHelpers phelpersNode1 = new AHelpers(listNode3);
 
-        nodeList.add(phelpersNode1);
         checkResult(phelpersNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(phelpersNode1);
     }
 
     private List<Object> new133() /* reduce AHelperDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4316,15 +3916,12 @@ public class Parser implements IParser
         PRegExp pregexpNode3 = (PRegExp)nodeArrayList3.get(0);
         AHelperDef phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
 
-        nodeList.add(phelperdefNode1);
         checkResult(phelperdefNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(phelperdefNode1);
     }
 
     private List<Object> new134() /* reduce AStates */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -4332,15 +3929,12 @@ public class Parser implements IParser
         List<TId> listNode3 = listNode2;
         AStates pstatesNode1 = new AStates(listNode3);
 
-        nodeList.add(pstatesNode1);
         checkResult(pstatesNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatesNode1);
     }
 
     private List<Object> new135() /* reduce AAidlist1IdList */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList1.get(0);
         List<TId> listNode2;
@@ -4349,15 +3943,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new136() /* reduce AAidlist2IdList */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList1.get(0);
@@ -4372,42 +3963,33 @@ public class Parser implements IParser
         } else {
             listNode3.addAll(listNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new137() /* reduce AIdListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList2.get(0);
-        nodeList.add(tidNode1);
         checkResult(tidNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(tidNode1);
     }
 
     private List<Object> new138() /* reduce ATokens */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PTokenDef> listNode2 = (List<PTokenDef>)nodeArrayList2.get(0);
         List<PTokenDef> listNode3 = listNode2;
         ATokens ptokensNode1 = new ATokens(listNode3);
 
-        nodeList.add(ptokensNode1);
         checkResult(ptokensNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(ptokensNode1);
     }
 
     private List<Object> new139() /* reduce AAtokendef1TokenDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4416,15 +3998,12 @@ public class Parser implements IParser
         PRegExp pregexpNode4 = (PRegExp)nodeArrayList3.get(0);
         ATokenDef ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, null, null);
 
-        nodeList.add(ptokendefNode1);
         checkResult(ptokendefNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(ptokendefNode1);
     }
 
     private List<Object> new140() /* reduce AAtokendef2TokenDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4435,15 +4014,12 @@ public class Parser implements IParser
         PRegExp pregexpNode4 = (PRegExp)nodeArrayList4.get(0);
         ATokenDef ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, null, null);
 
-        nodeList.add(ptokendefNode1);
         checkResult(ptokendefNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(ptokendefNode1);
     }
 
     private List<Object> new141() /* reduce AAtokendef3TokenDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4455,15 +4031,12 @@ public class Parser implements IParser
         PRegExp pregexpNode6 = (PRegExp)nodeArrayList4.get(1);
         ATokenDef ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
 
-        nodeList.add(ptokendefNode1);
         checkResult(ptokendefNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(ptokendefNode1);
     }
 
     private List<Object> new142() /* reduce AAtokendef4TokenDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList6 = pop();
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
@@ -4477,30 +4050,24 @@ public class Parser implements IParser
         PRegExp pregexpNode6 = (PRegExp)nodeArrayList5.get(1);
         ATokenDef ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
 
-        nodeList.add(ptokendefNode1);
         checkResult(ptokendefNode1, nodeArrayList1, nodeArrayList6);
-        return nodeList;
+        return Collections.<Object>singletonList(ptokendefNode1);
     }
 
     private List<Object> new143() /* reduce AAstatelist1StateList */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList2.get(0);
         AStateList pstatelistNode1 = new AStateList(tidNode2, null, Collections.EMPTY_LIST);
 
-        nodeList.add(pstatelistNode1);
         checkResult(pstatelistNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatelistNode1);
     }
 
     private List<Object> new144() /* reduce AAstatelist2StateList */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4509,15 +4076,12 @@ public class Parser implements IParser
         PTransition ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
         AStateList pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, Collections.EMPTY_LIST);
 
-        nodeList.add(pstatelistNode1);
         checkResult(pstatelistNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatelistNode1);
     }
 
     private List<Object> new145() /* reduce AAstatelist3StateList */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4527,15 +4091,12 @@ public class Parser implements IParser
         List<PStateListTail> listNode5 = listNode4;
         AStateList pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
 
-        nodeList.add(pstatelistNode1);
         checkResult(pstatelistNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatelistNode1);
     }
 
     private List<Object> new146() /* reduce AAstatelist4StateList */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4547,29 +4108,23 @@ public class Parser implements IParser
         List<PStateListTail> listNode5 = listNode4;
         AStateList pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
 
-        nodeList.add(pstatelistNode1);
         checkResult(pstatelistNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatelistNode1);
     }
 
     private List<Object> new147() /* reduce AAstatelisttail1StateListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList2.get(0);
         AStateListTail pstatelisttailNode1 = new AStateListTail(tidNode2, null);
 
-        nodeList.add(pstatelisttailNode1);
         checkResult(pstatelisttailNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatelisttailNode1);
     }
 
     private List<Object> new148() /* reduce AAstatelisttail2StateListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -4577,43 +4132,34 @@ public class Parser implements IParser
         PTransition ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
         AStateListTail pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
 
-        nodeList.add(pstatelisttailNode1);
         checkResult(pstatelisttailNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pstatelisttailNode1);
     }
 
     private List<Object> new149() /* reduce ATransition */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList2.get(0);
         ATransition ptransitionNode1 = new ATransition(tidNode2);
 
-        nodeList.add(ptransitionNode1);
         checkResult(ptransitionNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(ptransitionNode1);
     }
 
     private List<Object> new150() /* reduce AAigntokens1IgnTokens */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         AIgnTokens pigntokensNode1 = new AIgnTokens(Collections.EMPTY_LIST);
 
-        nodeList.add(pigntokensNode1);
         checkResult(pigntokensNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pigntokensNode1);
     }
 
     private List<Object> new151() /* reduce AAigntokens2IgnTokens */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4622,29 +4168,25 @@ public class Parser implements IParser
         List<TId> listNode3 = listNode2;
         AIgnTokens pigntokensNode1 = new AIgnTokens(listNode3);
 
-        nodeList.add(pigntokensNode1);
         checkResult(pigntokensNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pigntokensNode1);
     }
 
     private List<Object> new152() /* reduce ALookAhead */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TSlash tslashNode1 = (TSlash)nodeArrayList1.get(0);
         PRegExp pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
-        nodeList.add(tslashNode1);
-        nodeList.add(pregexpNode2);
         checkResult(tslashNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Arrays.asList(new Object[] {
+            tslashNode1,
+            pregexpNode2,
+        });
     }
 
     private List<Object> new153() /* reduce AAregexp1RegExp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PConcat pconcatNode2 = (PConcat)nodeArrayList1.get(0);
         List<PConcat> listNode3;
@@ -4655,15 +4197,12 @@ public class Parser implements IParser
         }
         ARegExp pregexpNode1 = new ARegExp(listNode3);
 
-        nodeList.add(pregexpNode1);
         checkResult(pregexpNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pregexpNode1);
     }
 
     private List<Object> new154() /* reduce AAregexp2RegExp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PConcat pconcatNode2 = (PConcat)nodeArrayList1.get(0);
@@ -4680,185 +4219,143 @@ public class Parser implements IParser
         }
         ARegExp pregexpNode1 = new ARegExp(listNode4);
 
-        nodeList.add(pregexpNode1);
         checkResult(pregexpNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pregexpNode1);
     }
 
     private List<Object> new155() /* reduce ARegExpTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PConcat pconcatNode1 = (PConcat)nodeArrayList2.get(0);
-        nodeList.add(pconcatNode1);
         checkResult(pconcatNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pconcatNode1);
     }
 
     private List<Object> new156() /* reduce AAconcat1Concat */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         AConcat pconcatNode1 = new AConcat(Collections.EMPTY_LIST);
 
-        nodeList.add(pconcatNode1);
-        return nodeList;
+        return Collections.<Object>singletonList(pconcatNode1);
     }
 
     private List<Object> new157() /* reduce AAconcat2Concat */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         List<PUnExp> listNode2 = (List<PUnExp>)nodeArrayList1.get(0);
         List<PUnExp> listNode3 = listNode2;
         AConcat pconcatNode1 = new AConcat(listNode3);
 
-        nodeList.add(pconcatNode1);
         checkResult(pconcatNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pconcatNode1);
     }
 
     private List<Object> new158() /* reduce AAunexp1UnExp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode2 = (PBasic)nodeArrayList1.get(0);
         AUnExp punexpNode1 = new AUnExp(pbasicNode2, null);
 
-        nodeList.add(punexpNode1);
         checkResult(punexpNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(punexpNode1);
     }
 
     private List<Object> new159() /* reduce AAunexp2UnExp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PBasic pbasicNode2 = (PBasic)nodeArrayList1.get(0);
         PUnOp punopNode3 = (PUnOp)nodeArrayList2.get(0);
         AUnExp punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
 
-        nodeList.add(punexpNode1);
         checkResult(punexpNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(punexpNode1);
     }
 
     private List<Object> new160() /* reduce ACharBasic */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PChar pcharNode2 = (PChar)nodeArrayList1.get(0);
         ACharBasic pbasicNode1 = new ACharBasic(pcharNode2);
 
-        nodeList.add(pbasicNode1);
         checkResult(pbasicNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pbasicNode1);
     }
 
     private List<Object> new161() /* reduce ASetBasic */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PSet psetNode2 = (PSet)nodeArrayList1.get(0);
         ASetBasic pbasicNode1 = new ASetBasic(psetNode2);
 
-        nodeList.add(pbasicNode1);
         checkResult(pbasicNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pbasicNode1);
     }
 
     private List<Object> new162() /* reduce AStringBasic */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TString tstringNode2 = (TString)nodeArrayList1.get(0);
         AStringBasic pbasicNode1 = new AStringBasic(tstringNode2);
 
-        nodeList.add(pbasicNode1);
         checkResult(pbasicNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pbasicNode1);
     }
 
     private List<Object> new163() /* reduce AIdBasic */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         AIdBasic pbasicNode1 = new AIdBasic(tidNode2);
 
-        nodeList.add(pbasicNode1);
         checkResult(pbasicNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pbasicNode1);
     }
 
     private List<Object> new164() /* reduce ARegExpBasic */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PRegExp pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
         ARegExpBasic pbasicNode1 = new ARegExpBasic(pregexpNode2);
 
-        nodeList.add(pbasicNode1);
         checkResult(pbasicNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pbasicNode1);
     }
 
     private List<Object> new165() /* reduce ACharChar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TChar tcharNode2 = (TChar)nodeArrayList1.get(0);
         ACharChar pcharNode1 = new ACharChar(tcharNode2);
 
-        nodeList.add(pcharNode1);
         checkResult(pcharNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pcharNode1);
     }
 
     private List<Object> new166() /* reduce ADecChar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TDecChar tdeccharNode2 = (TDecChar)nodeArrayList1.get(0);
         ADecChar pcharNode1 = new ADecChar(tdeccharNode2);
 
-        nodeList.add(pcharNode1);
         checkResult(pcharNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pcharNode1);
     }
 
     private List<Object> new167() /* reduce AHexChar */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         THexChar thexcharNode2 = (THexChar)nodeArrayList1.get(0);
         AHexChar pcharNode1 = new AHexChar(thexcharNode2);
 
-        nodeList.add(pcharNode1);
         checkResult(pcharNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pcharNode1);
     }
 
     private List<Object> new168() /* reduce AOperationSet */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4869,15 +4366,12 @@ public class Parser implements IParser
         PBasic pbasicNode4 = (PBasic)nodeArrayList4.get(0);
         AOperationSet psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
 
-        nodeList.add(psetNode1);
         checkResult(psetNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(psetNode1);
     }
 
     private List<Object> new169() /* reduce AIntervalSet */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -4887,93 +4381,72 @@ public class Parser implements IParser
         PChar pcharNode3 = (PChar)nodeArrayList4.get(0);
         AIntervalSet psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
 
-        nodeList.add(psetNode1);
         checkResult(psetNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(psetNode1);
     }
 
     private List<Object> new170() /* reduce AStarUnOp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TStar tstarNode2 = (TStar)nodeArrayList1.get(0);
         AStarUnOp punopNode1 = new AStarUnOp(tstarNode2);
 
-        nodeList.add(punopNode1);
         checkResult(punopNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(punopNode1);
     }
 
     private List<Object> new171() /* reduce AQMarkUnOp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TQMark tqmarkNode2 = (TQMark)nodeArrayList1.get(0);
         AQMarkUnOp punopNode1 = new AQMarkUnOp(tqmarkNode2);
 
-        nodeList.add(punopNode1);
         checkResult(punopNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(punopNode1);
     }
 
     private List<Object> new172() /* reduce APlusUnOp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TPlus tplusNode2 = (TPlus)nodeArrayList1.get(0);
         APlusUnOp punopNode1 = new APlusUnOp(tplusNode2);
 
-        nodeList.add(punopNode1);
         checkResult(punopNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(punopNode1);
     }
 
     private List<Object> new173() /* reduce APlusBinOp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         APlusBinOp pbinopNode1 = new APlusBinOp();
 
-        nodeList.add(pbinopNode1);
         checkResult(pbinopNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pbinopNode1);
     }
 
     private List<Object> new174() /* reduce AMinusBinOp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         AMinusBinOp pbinopNode1 = new AMinusBinOp();
 
-        nodeList.add(pbinopNode1);
         checkResult(pbinopNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pbinopNode1);
     }
 
     private List<Object> new175() /* reduce AProductions */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PProd> listNode2 = (List<PProd>)nodeArrayList2.get(0);
         List<PProd> listNode3 = listNode2;
         AProductions pproductionsNode1 = new AProductions(listNode3);
 
-        nodeList.add(pproductionsNode1);
         checkResult(pproductionsNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pproductionsNode1);
     }
 
     private List<Object> new176() /* reduce AAprod1Prod */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -4983,15 +4456,12 @@ public class Parser implements IParser
         List<PAlt> listNode6 = listNode5;
         AProd pprodNode1 = new AProd(tidNode2, null, Collections.EMPTY_LIST, listNode6);
 
-        nodeList.add(pprodNode1);
         checkResult(pprodNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pprodNode1);
     }
 
     private List<Object> new177() /* reduce AAprod2Prod */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -5005,29 +4475,25 @@ public class Parser implements IParser
         List<PAlt> listNode7 = listNode6;
         AProd pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
 
-        nodeList.add(pprodNode1);
         checkResult(pprodNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(pprodNode1);
     }
 
     private List<Object> new178() /* reduce AAprodtransform1ProdTransform */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TArrow tarrowNode1 = (TArrow)nodeArrayList2.get(0);
-        nodeList.add(tarrowNode1);
-        nodeList.add(Collections.EMPTY_LIST);
         checkResult(tarrowNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Arrays.asList(new Object[] {
+            tarrowNode1,
+            Collections.EMPTY_LIST,
+        });
     }
 
     private List<Object> new179() /* reduce AAprodtransform2ProdTransform */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5035,16 +4501,15 @@ public class Parser implements IParser
         TArrow tarrowNode1 = (TArrow)nodeArrayList2.get(0);
         List<PElem> listNode2 = (List<PElem>)nodeArrayList3.get(0);
         List<PElem> listNode3 = listNode2;
-        nodeList.add(tarrowNode1);
-        nodeList.add(listNode3);
         checkResult(tarrowNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Arrays.asList(new Object[] {
+            tarrowNode1,
+            listNode3,
+        });
     }
 
     private List<Object> new180() /* reduce AAalts1Alts */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAlt paltNode1 = (PAlt)nodeArrayList1.get(0);
         List<PAlt> listNode2;
@@ -5053,15 +4518,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new181() /* reduce AAalts2Alts */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PAlt paltNode1 = (PAlt)nodeArrayList1.get(0);
@@ -5076,64 +4538,49 @@ public class Parser implements IParser
         } else {
             listNode3.addAll(listNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new182() /* reduce AAltsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PAlt paltNode1 = (PAlt)nodeArrayList2.get(0);
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new183() /* reduce AAalt1Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         AAlt paltNode1 = new AAlt(null, Collections.EMPTY_LIST, null);
 
-        nodeList.add(paltNode1);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new184() /* reduce AAalt2Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         AAlt paltNode1 = new AAlt(tidNode2, Collections.EMPTY_LIST, null);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new185() /* reduce AAalt3Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         List<PElem> listNode3 = (List<PElem>)nodeArrayList1.get(0);
         List<PElem> listNode4 = listNode3;
         AAlt paltNode1 = new AAlt(null, listNode4, null);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new186() /* reduce AAalt4Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
@@ -5141,43 +4588,34 @@ public class Parser implements IParser
         List<PElem> listNode4 = listNode3;
         AAlt paltNode1 = new AAlt(tidNode2, listNode4, null);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new187() /* reduce AAalt5Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAltTransform palttransformNode4 = (PAltTransform)nodeArrayList1.get(0);
         AAlt paltNode1 = new AAlt(null, Collections.EMPTY_LIST, palttransformNode4);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new188() /* reduce AAalt6Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         PAltTransform palttransformNode4 = (PAltTransform)nodeArrayList2.get(0);
         AAlt paltNode1 = new AAlt(tidNode2, Collections.EMPTY_LIST, palttransformNode4);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new189() /* reduce AAalt7Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PElem> listNode3 = (List<PElem>)nodeArrayList1.get(0);
@@ -5185,15 +4623,12 @@ public class Parser implements IParser
         PAltTransform palttransformNode5 = (PAltTransform)nodeArrayList2.get(0);
         AAlt paltNode1 = new AAlt(null, listNode4, palttransformNode5);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new190() /* reduce AAalt8Alt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5203,15 +4638,12 @@ public class Parser implements IParser
         PAltTransform palttransformNode5 = (PAltTransform)nodeArrayList3.get(0);
         AAlt paltNode1 = new AAlt(tidNode2, listNode4, palttransformNode5);
 
-        nodeList.add(paltNode1);
         checkResult(paltNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(paltNode1);
     }
 
     private List<Object> new191() /* reduce AAalttransform1AltTransform */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5219,15 +4651,12 @@ public class Parser implements IParser
         TRBrace trbraceNode4 = (TRBrace)nodeArrayList3.get(0);
         AAltTransform palttransformNode1 = new AAltTransform(tlbraceNode2, Collections.EMPTY_LIST, trbraceNode4);
 
-        nodeList.add(palttransformNode1);
         checkResult(palttransformNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(palttransformNode1);
     }
 
     private List<Object> new192() /* reduce AAalttransform2AltTransform */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5238,15 +4667,12 @@ public class Parser implements IParser
         TRBrace trbraceNode5 = (TRBrace)nodeArrayList4.get(0);
         AAltTransform palttransformNode1 = new AAltTransform(tlbraceNode2, listNode4, trbraceNode5);
 
-        nodeList.add(palttransformNode1);
         checkResult(palttransformNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(palttransformNode1);
     }
 
     private List<Object> new193() /* reduce AAnewterm1Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5255,15 +4681,12 @@ public class Parser implements IParser
         TLPar tlparNode3 = (TLPar)nodeArrayList3.get(0);
         ANewTerm ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, Collections.EMPTY_LIST);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new194() /* reduce AAnewterm2Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -5275,29 +4698,23 @@ public class Parser implements IParser
         List<PTerm> listNode5 = listNode4;
         ANewTerm ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new195() /* reduce AAlistterm1Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TLBkt tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
         AListTerm ptermNode1 = new AListTerm(tlbktNode2, Collections.EMPTY_LIST);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new196() /* reduce AAlistterm2Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5306,58 +4723,46 @@ public class Parser implements IParser
         List<PListTerm> listNode4 = listNode3;
         AListTerm ptermNode1 = new AListTerm(tlbktNode2, listNode4);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new197() /* reduce AAsimpleterm1Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode3 = (TId)nodeArrayList1.get(0);
         ASimpleTerm ptermNode1 = new ASimpleTerm(null, tidNode3, null);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new198() /* reduce AAsimpleterm2Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PSpecifier pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
         TId tidNode3 = (TId)nodeArrayList2.get(0);
         ASimpleTerm ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new199() /* reduce AAsimpleterm3Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode3 = (TId)nodeArrayList1.get(0);
         TId tidNode4 = (TId)nodeArrayList2.get(0);
         ASimpleTerm ptermNode1 = new ASimpleTerm(null, tidNode3, tidNode4);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new200() /* reduce AAsimpleterm4Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5366,27 +4771,21 @@ public class Parser implements IParser
         TId tidNode4 = (TId)nodeArrayList3.get(0);
         ASimpleTerm ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, tidNode4);
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new201() /* reduce ANullTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         ANullTerm ptermNode1 = new ANullTerm();
 
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new202() /* reduce AAlistoflistterm1ListOfListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
         List<PListTerm> listNode2;
@@ -5395,15 +4794,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new203() /* reduce AAlistoflistterm2ListOfListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
@@ -5418,15 +4814,12 @@ public class Parser implements IParser
         } else {
             listNode3.addAll(listNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new204() /* reduce AAnewlistterm1ListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5435,15 +4828,12 @@ public class Parser implements IParser
         TLPar tlparNode3 = (TLPar)nodeArrayList3.get(0);
         ANewListTerm plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, Collections.EMPTY_LIST);
 
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new205() /* reduce AAnewlistterm2ListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList5 = pop();
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
@@ -5455,58 +4845,46 @@ public class Parser implements IParser
         List<PTerm> listNode5 = listNode4;
         ANewListTerm plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
 
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList5);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new206() /* reduce AAsimplelistterm1ListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode3 = (TId)nodeArrayList1.get(0);
         ASimpleListTerm plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
 
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new207() /* reduce AAsimplelistterm2ListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PSpecifier pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
         TId tidNode3 = (TId)nodeArrayList2.get(0);
         ASimpleListTerm plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
 
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new208() /* reduce AAsimplelistterm3ListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode3 = (TId)nodeArrayList1.get(0);
         TId tidNode4 = (TId)nodeArrayList2.get(0);
         ASimpleListTerm plisttermNode1 = new ASimpleListTerm(null, tidNode3, tidNode4);
 
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new209() /* reduce AAsimplelistterm4ListTerm */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5515,79 +4893,61 @@ public class Parser implements IParser
         TId tidNode4 = (TId)nodeArrayList3.get(0);
         ASimpleListTerm plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, tidNode4);
 
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new210() /* reduce AListTermTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
-        nodeList.add(plisttermNode1);
         checkResult(plisttermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(plisttermNode1);
     }
 
     private List<Object> new211() /* reduce ASimpleTermTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList2.get(0);
-        nodeList.add(tidNode1);
         checkResult(tidNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(tidNode1);
     }
 
     private List<Object> new212() /* reduce AAprodname1ProdName */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         AProdName pprodnameNode1 = new AProdName(tidNode2, null);
 
-        nodeList.add(pprodnameNode1);
         checkResult(pprodnameNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pprodnameNode1);
     }
 
     private List<Object> new213() /* reduce AAprodname2ProdName */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         TId tidNode3 = (TId)nodeArrayList2.get(0);
         AProdName pprodnameNode1 = new AProdName(tidNode2, tidNode3);
 
-        nodeList.add(pprodnameNode1);
         checkResult(pprodnameNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pprodnameNode1);
     }
 
     private List<Object> new214() /* reduce AProdNameTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList2.get(0);
-        nodeList.add(tidNode1);
         checkResult(tidNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(tidNode1);
     }
 
     private List<Object> new215() /* reduce AAparams1Params */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
         List<PTerm> listNode2;
@@ -5596,15 +4956,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new216() /* reduce AAparams2Params */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
@@ -5619,83 +4976,65 @@ public class Parser implements IParser
         } else {
             listNode3.addAll(listNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new217() /* reduce AParamsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1 = (PTerm)nodeArrayList2.get(0);
-        nodeList.add(ptermNode1);
         checkResult(ptermNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(ptermNode1);
     }
 
     private List<Object> new218() /* reduce AAltName */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList2.get(0);
-        nodeList.add(tidNode1);
         checkResult(tidNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(tidNode1);
     }
 
     private List<Object> new219() /* reduce AAelem1Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode4 = (TId)nodeArrayList1.get(0);
         AElem pelemNode1 = new AElem(null, null, tidNode4, null);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new220() /* reduce AAelem2Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         TId tidNode4 = (TId)nodeArrayList2.get(0);
         AElem pelemNode1 = new AElem(tidNode2, null, tidNode4, null);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new221() /* reduce AAelem3Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PSpecifier pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
         TId tidNode4 = (TId)nodeArrayList2.get(0);
         AElem pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, null);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new222() /* reduce AAelem4Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5704,30 +5043,24 @@ public class Parser implements IParser
         TId tidNode4 = (TId)nodeArrayList3.get(0);
         AElem pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, null);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new223() /* reduce AAelem5Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode4 = (TId)nodeArrayList1.get(0);
         PUnOp punopNode5 = (PUnOp)nodeArrayList2.get(0);
         AElem pelemNode1 = new AElem(null, null, tidNode4, punopNode5);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new224() /* reduce AAelem6Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5736,15 +5069,12 @@ public class Parser implements IParser
         PUnOp punopNode5 = (PUnOp)nodeArrayList3.get(0);
         AElem pelemNode1 = new AElem(tidNode2, null, tidNode4, punopNode5);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new225() /* reduce AAelem7Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
@@ -5753,15 +5083,12 @@ public class Parser implements IParser
         PUnOp punopNode5 = (PUnOp)nodeArrayList3.get(0);
         AElem pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, punopNode5);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList3);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new226() /* reduce AAelem8Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5772,55 +5099,43 @@ public class Parser implements IParser
         PUnOp punopNode5 = (PUnOp)nodeArrayList4.get(0);
         AElem pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, punopNode5);
 
-        nodeList.add(pelemNode1);
         checkResult(pelemNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pelemNode1);
     }
 
     private List<Object> new227() /* reduce AElemName */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList2.get(0);
-        nodeList.add(tidNode1);
         checkResult(tidNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(tidNode1);
     }
 
     private List<Object> new228() /* reduce ATokenSpecifier */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         ATokenSpecifier pspecifierNode1 = new ATokenSpecifier();
 
-        nodeList.add(pspecifierNode1);
         checkResult(pspecifierNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pspecifierNode1);
     }
 
     private List<Object> new229() /* reduce AProductionSpecifier */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         AProductionSpecifier pspecifierNode1 = new AProductionSpecifier();
 
-        nodeList.add(pspecifierNode1);
         checkResult(pspecifierNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pspecifierNode1);
     }
 
     private List<Object> new230() /* reduce AAst */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5829,15 +5144,12 @@ public class Parser implements IParser
         List<PAstProd> listNode3 = listNode2;
         AAst pastNode1 = new AAst(listNode3);
 
-        nodeList.add(pastNode1);
         checkResult(pastNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pastNode1);
     }
 
     private List<Object> new231() /* reduce AAstProd */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList4 = pop();
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
@@ -5847,15 +5159,12 @@ public class Parser implements IParser
         List<PAstAlt> listNode4 = listNode3;
         AAstProd pastprodNode1 = new AAstProd(tidNode2, listNode4);
 
-        nodeList.add(pastprodNode1);
         checkResult(pastprodNode1, nodeArrayList1, nodeArrayList4);
-        return nodeList;
+        return Collections.<Object>singletonList(pastprodNode1);
     }
 
     private List<Object> new232() /* reduce AAastalts1AstAlts */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
         List<PAstAlt> listNode2;
@@ -5864,15 +5173,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new233() /* reduce AAastalts2AstAlts */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
@@ -5887,64 +5193,49 @@ public class Parser implements IParser
         } else {
             listNode3.addAll(listNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new234() /* reduce AAstAltsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
-        nodeList.add(pastaltNode1);
         checkResult(pastaltNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pastaltNode1);
     }
 
     private List<Object> new235() /* reduce AAastalt1AstAlt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         AAstAlt pastaltNode1 = new AAstAlt(null, Collections.EMPTY_LIST);
 
-        nodeList.add(pastaltNode1);
-        return nodeList;
+        return Collections.<Object>singletonList(pastaltNode1);
     }
 
     private List<Object> new236() /* reduce AAastalt2AstAlt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
         AAstAlt pastaltNode1 = new AAstAlt(tidNode2, Collections.EMPTY_LIST);
 
-        nodeList.add(pastaltNode1);
         checkResult(pastaltNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pastaltNode1);
     }
 
     private List<Object> new237() /* reduce AAastalt3AstAlt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         List<PElem> listNode3 = (List<PElem>)nodeArrayList1.get(0);
         List<PElem> listNode4 = listNode3;
         AAstAlt pastaltNode1 = new AAstAlt(null, listNode4);
 
-        nodeList.add(pastaltNode1);
         checkResult(pastaltNode1, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(pastaltNode1);
     }
 
     private List<Object> new238() /* reduce AAastalt4AstAlt */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TId tidNode2 = (TId)nodeArrayList1.get(0);
@@ -5952,15 +5243,12 @@ public class Parser implements IParser
         List<PElem> listNode4 = listNode3;
         AAstAlt pastaltNode1 = new AAstAlt(tidNode2, listNode4);
 
-        nodeList.add(pastaltNode1);
         checkResult(pastaltNode1, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(pastaltNode1);
     }
 
     private List<Object> new239() /* reduce ATerminal$PkgNameTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TPkgId tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
         List<TPkgId> listNode2;
@@ -5969,15 +5257,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new240() /* reduce ANonTerminal$PkgNameTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TPkgId> listNode1 = (List<TPkgId>)nodeArrayList1.get(0);
@@ -5992,15 +5277,12 @@ public class Parser implements IParser
         {
             listNode3.add(tpkgidNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new241() /* reduce ATerminal$HelperDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PHelperDef phelperdefNode1 = (PHelperDef)nodeArrayList1.get(0);
         List<PHelperDef> listNode2;
@@ -6009,15 +5291,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new242() /* reduce ANonTerminal$HelperDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PHelperDef> listNode1 = (List<PHelperDef>)nodeArrayList1.get(0);
@@ -6032,15 +5311,12 @@ public class Parser implements IParser
         {
             listNode3.add(phelperdefNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new243() /* reduce ATerminal$IdListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         TId tidNode1 = (TId)nodeArrayList1.get(0);
         List<TId> listNode2;
@@ -6049,15 +5325,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new244() /* reduce ANonTerminal$IdListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<TId> listNode1 = (List<TId>)nodeArrayList1.get(0);
@@ -6072,15 +5345,12 @@ public class Parser implements IParser
         {
             listNode3.add(tidNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new245() /* reduce ATerminal$TokenDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PTokenDef ptokendefNode1 = (PTokenDef)nodeArrayList1.get(0);
         List<PTokenDef> listNode2;
@@ -6089,15 +5359,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new246() /* reduce ANonTerminal$TokenDef */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PTokenDef> listNode1 = (List<PTokenDef>)nodeArrayList1.get(0);
@@ -6112,15 +5379,12 @@ public class Parser implements IParser
         {
             listNode3.add(ptokendefNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new247() /* reduce ATerminal$StateListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PStateListTail pstatelisttailNode1 = (PStateListTail)nodeArrayList1.get(0);
         List<PStateListTail> listNode2;
@@ -6129,15 +5393,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new248() /* reduce ANonTerminal$StateListTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PStateListTail> listNode1 = (List<PStateListTail>)nodeArrayList1.get(0);
@@ -6152,15 +5413,12 @@ public class Parser implements IParser
         {
             listNode3.add(pstatelisttailNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new249() /* reduce ATerminal$RegExpTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PConcat pconcatNode1 = (PConcat)nodeArrayList1.get(0);
         List<PConcat> listNode2;
@@ -6169,15 +5427,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new250() /* reduce ANonTerminal$RegExpTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PConcat> listNode1 = (List<PConcat>)nodeArrayList1.get(0);
@@ -6192,15 +5447,12 @@ public class Parser implements IParser
         {
             listNode3.add(pconcatNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new251() /* reduce ATerminal$UnExp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PUnExp punexpNode1 = (PUnExp)nodeArrayList1.get(0);
         List<PUnExp> listNode2;
@@ -6209,15 +5461,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new252() /* reduce ANonTerminal$UnExp */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PUnExp> listNode1 = (List<PUnExp>)nodeArrayList1.get(0);
@@ -6232,15 +5481,12 @@ public class Parser implements IParser
         {
             listNode3.add(punexpNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new253() /* reduce ATerminal$Prod */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PProd pprodNode1 = (PProd)nodeArrayList1.get(0);
         List<PProd> listNode2;
@@ -6249,15 +5495,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new254() /* reduce ANonTerminal$Prod */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PProd> listNode1 = (List<PProd>)nodeArrayList1.get(0);
@@ -6272,15 +5515,12 @@ public class Parser implements IParser
         {
             listNode3.add(pprodNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new255() /* reduce ATerminal$Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PElem pelemNode1 = (PElem)nodeArrayList1.get(0);
         List<PElem> listNode2;
@@ -6289,15 +5529,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new256() /* reduce ANonTerminal$Elem */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PElem> listNode1 = (List<PElem>)nodeArrayList1.get(0);
@@ -6312,15 +5549,12 @@ public class Parser implements IParser
         {
             listNode3.add(pelemNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new257() /* reduce ATerminal$AltsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAlt paltNode1 = (PAlt)nodeArrayList1.get(0);
         List<PAlt> listNode2;
@@ -6329,15 +5563,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new258() /* reduce ANonTerminal$AltsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PAlt> listNode1 = (List<PAlt>)nodeArrayList1.get(0);
@@ -6352,15 +5583,12 @@ public class Parser implements IParser
         {
             listNode3.add(paltNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new259() /* reduce ATerminal$Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
         List<PTerm> listNode2;
@@ -6369,15 +5597,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new260() /* reduce ANonTerminal$Term */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PTerm> listNode1 = (List<PTerm>)nodeArrayList1.get(0);
@@ -6392,15 +5617,12 @@ public class Parser implements IParser
         {
             listNode3.add(ptermNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new261() /* reduce ATerminal$ListTermTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PListTerm plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
         List<PListTerm> listNode2;
@@ -6409,15 +5631,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new262() /* reduce ANonTerminal$ListTermTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PListTerm> listNode1 = (List<PListTerm>)nodeArrayList1.get(0);
@@ -6432,15 +5651,12 @@ public class Parser implements IParser
         {
             listNode3.add(plisttermNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new263() /* reduce ATerminal$ParamsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
         List<PTerm> listNode2;
@@ -6449,15 +5665,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new264() /* reduce ANonTerminal$ParamsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PTerm> listNode1 = (List<PTerm>)nodeArrayList1.get(0);
@@ -6472,15 +5685,12 @@ public class Parser implements IParser
         {
             listNode3.add(ptermNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new265() /* reduce ATerminal$AstProd */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAstProd pastprodNode1 = (PAstProd)nodeArrayList1.get(0);
         List<PAstProd> listNode2;
@@ -6489,15 +5699,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new266() /* reduce ANonTerminal$AstProd */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PAstProd> listNode1 = (List<PAstProd>)nodeArrayList1.get(0);
@@ -6512,15 +5719,12 @@ public class Parser implements IParser
         {
             listNode3.add(pastprodNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
     private List<Object> new267() /* reduce ATerminal$AstAltsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList1 = pop();
         PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
         List<PAstAlt> listNode2;
@@ -6529,15 +5733,12 @@ public class Parser implements IParser
         } else {
             listNode2 = Collections.emptyList();
         }
-        nodeList.add(listNode2);
         checkResult(listNode2, nodeArrayList1, nodeArrayList1);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode2);
     }
 
     private List<Object> new268() /* reduce ANonTerminal$AstAltsTail */
     {
-        List<Object> nodeList = new ArrayList<>();
-
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         List<PAstAlt> listNode1 = (List<PAstAlt>)nodeArrayList1.get(0);
@@ -6552,9 +5753,8 @@ public class Parser implements IParser
         {
             listNode3.add(pastaltNode2);
         }
-        nodeList.add(listNode3);
         checkResult(listNode3, nodeArrayList1, nodeArrayList2);
-        return nodeList;
+        return Collections.<Object>singletonList(listNode3);
     }
 
 
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 1b50dc8626c4665ae6d447a31a7c301ae7522795..b1e815435563ac795d94fdb0d10e2e6cae750b5e 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -15,6 +15,7 @@ import java.io.BufferedInputStream;
 import java.io.InputStream;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
@@ -314,8 +315,6 @@ Macro:ParserNewHeader
 
     private List<Object> new$0$() /* reduce $1$ */
     {
-        List<Object> nodeList = new ArrayList<>();
-
 
 $
 
@@ -390,18 +389,35 @@ Macro:ParserTypedLinkedListAddAll
 
 $
 
-Macro:ParserNewBodyListAdd
-        nodeList.add($0$);
+Macro:ParserNewCheck
+        checkResult($0$, nodeArrayList1, nodeArrayList$1$);
 
 $
 
-Macro:ParserNewCheck
-        checkResult($0$, nodeArrayList1, nodeArrayList$1$);
+Macro:ParserNewTailEmpty
+        return Collections.emptyList();
+    }
+
+$
+
+Macro:ParserNewTailSingle
+        return Collections.<Object>singletonList($0$);
+    }
+
+$
+
+Macro:ParserNewTailMultiHead
+        return Arrays.asList(new Object[] {
+
+$
+
+Macro:ParserNewTailMultiElement
+            $0$,
 
 $
 
-Macro:ParserNewTail
-        return nodeList;
+Macro:ParserNewTailMultiTail
+        });
     }
 
 $