diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index 7db8e679ed44edf0210f5fedfbc086079777941a..0cc5d2c29a36eca5ec4a4246d31371ff84ae5f9f 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -148,6 +148,10 @@ public class Parser implements IParser
             + token.getText().length());
     }
 
+    /**
+     * @deprecated Overriding this method no longer has any effect. This optimization is now applied automatically iff it is safe.
+     */
+    @Deprecated
     protected boolean addElementsFromListToNewList(String productionRuleAsString) {
         return true;
     }
@@ -1908,7 +1912,6 @@ public class Parser implements IParser
 
     private List<Object> new0() /* reduce AAgrammar1Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar1Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         PGrammar pgrammarNode1;
@@ -1929,7 +1932,6 @@ public class Parser implements IParser
 
     private List<Object> new1() /* reduce AAgrammar2Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar2Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -1943,7 +1945,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -1962,7 +1964,6 @@ public class Parser implements IParser
 
     private List<Object> new2() /* reduce AAgrammar3Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar3Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -1987,7 +1988,6 @@ public class Parser implements IParser
 
     private List<Object> new3() /* reduce AAgrammar4Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar4Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2003,7 +2003,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2023,7 +2023,6 @@ public class Parser implements IParser
 
     private List<Object> new4() /* reduce AAgrammar5Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar5Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -2048,7 +2047,6 @@ public class Parser implements IParser
 
     private List<Object> new5() /* reduce AAgrammar6Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar6Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2064,7 +2062,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2084,7 +2082,6 @@ public class Parser implements IParser
 
     private List<Object> new6() /* reduce AAgrammar7Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar7Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2112,7 +2109,6 @@ public class Parser implements IParser
 
     private List<Object> new7() /* reduce AAgrammar8Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar8Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2130,7 +2126,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2151,7 +2147,6 @@ public class Parser implements IParser
 
     private List<Object> new8() /* reduce AAgrammar9Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar9Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -2176,7 +2171,6 @@ public class Parser implements IParser
 
     private List<Object> new9() /* reduce AAgrammar10Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar10Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2192,7 +2186,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2212,7 +2206,6 @@ public class Parser implements IParser
 
     private List<Object> new10() /* reduce AAgrammar11Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar11Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2240,7 +2233,6 @@ public class Parser implements IParser
 
     private List<Object> new11() /* reduce AAgrammar12Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar12Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2258,7 +2250,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2279,7 +2271,6 @@ public class Parser implements IParser
 
     private List<Object> new12() /* reduce AAgrammar13Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar13Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2307,7 +2298,6 @@ public class Parser implements IParser
 
     private List<Object> new13() /* reduce AAgrammar14Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar14Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2325,7 +2315,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2346,7 +2336,6 @@ public class Parser implements IParser
 
     private List<Object> new14() /* reduce AAgrammar15Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar15Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2377,7 +2366,6 @@ public class Parser implements IParser
 
     private List<Object> new15() /* reduce AAgrammar16Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar16Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -2397,7 +2385,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2419,7 +2407,6 @@ public class Parser implements IParser
 
     private List<Object> new16() /* reduce AAgrammar17Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar17Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -2444,7 +2431,6 @@ public class Parser implements IParser
 
     private List<Object> new17() /* reduce AAgrammar18Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar18Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2460,7 +2446,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2480,7 +2466,6 @@ public class Parser implements IParser
 
     private List<Object> new18() /* reduce AAgrammar19Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar19Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2508,7 +2493,6 @@ public class Parser implements IParser
 
     private List<Object> new19() /* reduce AAgrammar20Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar20Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2526,7 +2510,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2547,7 +2531,6 @@ public class Parser implements IParser
 
     private List<Object> new20() /* reduce AAgrammar21Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar21Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2575,7 +2558,6 @@ public class Parser implements IParser
 
     private List<Object> new21() /* reduce AAgrammar22Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar22Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2593,7 +2575,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2614,7 +2596,6 @@ public class Parser implements IParser
 
     private List<Object> new22() /* reduce AAgrammar23Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar23Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2645,7 +2626,6 @@ public class Parser implements IParser
 
     private List<Object> new23() /* reduce AAgrammar24Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar24Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -2665,7 +2645,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2687,7 +2667,6 @@ public class Parser implements IParser
 
     private List<Object> new24() /* reduce AAgrammar25Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar25Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -2715,7 +2694,6 @@ public class Parser implements IParser
 
     private List<Object> new25() /* reduce AAgrammar26Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar26Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2733,7 +2711,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2754,7 +2732,6 @@ public class Parser implements IParser
 
     private List<Object> new26() /* reduce AAgrammar27Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar27Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2785,7 +2762,6 @@ public class Parser implements IParser
 
     private List<Object> new27() /* reduce AAgrammar28Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar28Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -2805,7 +2781,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2827,7 +2803,6 @@ public class Parser implements IParser
 
     private List<Object> new28() /* reduce AAgrammar29Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar29Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -2858,7 +2833,6 @@ public class Parser implements IParser
 
     private List<Object> new29() /* reduce AAgrammar30Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar30Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -2878,7 +2852,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2900,7 +2874,6 @@ public class Parser implements IParser
 
     private List<Object> new30() /* reduce AAgrammar31Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar31Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -2934,7 +2907,6 @@ public class Parser implements IParser
 
     private List<Object> new31() /* reduce AAgrammar32Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar32Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -2956,7 +2928,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -2979,7 +2951,6 @@ public class Parser implements IParser
 
     private List<Object> new32() /* reduce AAgrammar33Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar33Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -3004,7 +2975,6 @@ public class Parser implements IParser
 
     private List<Object> new33() /* reduce AAgrammar34Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar34Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -3020,7 +2990,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3040,7 +3010,6 @@ public class Parser implements IParser
 
     private List<Object> new34() /* reduce AAgrammar35Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar35Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -3068,7 +3037,6 @@ public class Parser implements IParser
 
     private List<Object> new35() /* reduce AAgrammar36Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar36Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3086,7 +3054,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3107,7 +3075,6 @@ public class Parser implements IParser
 
     private List<Object> new36() /* reduce AAgrammar37Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar37Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -3135,7 +3102,6 @@ public class Parser implements IParser
 
     private List<Object> new37() /* reduce AAgrammar38Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar38Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3153,7 +3119,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3174,7 +3140,6 @@ public class Parser implements IParser
 
     private List<Object> new38() /* reduce AAgrammar39Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar39Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3205,7 +3170,6 @@ public class Parser implements IParser
 
     private List<Object> new39() /* reduce AAgrammar40Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar40Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3225,7 +3189,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3247,7 +3211,6 @@ public class Parser implements IParser
 
     private List<Object> new40() /* reduce AAgrammar41Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar41Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -3275,7 +3238,6 @@ public class Parser implements IParser
 
     private List<Object> new41() /* reduce AAgrammar42Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar42Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3293,7 +3255,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3314,7 +3276,6 @@ public class Parser implements IParser
 
     private List<Object> new42() /* reduce AAgrammar43Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar43Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3345,7 +3306,6 @@ public class Parser implements IParser
 
     private List<Object> new43() /* reduce AAgrammar44Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar44Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3365,7 +3325,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3387,7 +3347,6 @@ public class Parser implements IParser
 
     private List<Object> new44() /* reduce AAgrammar45Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar45Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3418,7 +3377,6 @@ public class Parser implements IParser
 
     private List<Object> new45() /* reduce AAgrammar46Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar46Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3438,7 +3396,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3460,7 +3418,6 @@ public class Parser implements IParser
 
     private List<Object> new46() /* reduce AAgrammar47Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar47Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3494,7 +3451,6 @@ public class Parser implements IParser
 
     private List<Object> new47() /* reduce AAgrammar48Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar48Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -3516,7 +3472,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3539,7 +3495,6 @@ public class Parser implements IParser
 
     private List<Object> new48() /* reduce AAgrammar49Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar49Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -3567,7 +3522,6 @@ public class Parser implements IParser
 
     private List<Object> new49() /* reduce AAgrammar50Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar50Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3585,7 +3539,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3606,7 +3560,6 @@ public class Parser implements IParser
 
     private List<Object> new50() /* reduce AAgrammar51Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar51Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3637,7 +3590,6 @@ public class Parser implements IParser
 
     private List<Object> new51() /* reduce AAgrammar52Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar52Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3657,7 +3609,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3679,7 +3631,6 @@ public class Parser implements IParser
 
     private List<Object> new52() /* reduce AAgrammar53Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar53Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3710,7 +3661,6 @@ public class Parser implements IParser
 
     private List<Object> new53() /* reduce AAgrammar54Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar54Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3730,7 +3680,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3752,7 +3702,6 @@ public class Parser implements IParser
 
     private List<Object> new54() /* reduce AAgrammar55Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar55Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3786,7 +3735,6 @@ public class Parser implements IParser
 
     private List<Object> new55() /* reduce AAgrammar56Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar56Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -3808,7 +3756,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3831,7 +3779,6 @@ public class Parser implements IParser
 
     private List<Object> new56() /* reduce AAgrammar57Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar57Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -3862,7 +3809,6 @@ public class Parser implements IParser
 
     private List<Object> new57() /* reduce AAgrammar58Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar58Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3882,7 +3828,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3904,7 +3850,6 @@ public class Parser implements IParser
 
     private List<Object> new58() /* reduce AAgrammar59Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar59Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -3938,7 +3883,6 @@ public class Parser implements IParser
 
     private List<Object> new59() /* reduce AAgrammar60Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar60Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -3960,7 +3904,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -3983,7 +3927,6 @@ public class Parser implements IParser
 
     private List<Object> new60() /* reduce AAgrammar61Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar61Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4017,7 +3960,6 @@ public class Parser implements IParser
 
     private List<Object> new61() /* reduce AAgrammar62Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar62Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -4039,7 +3981,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4062,7 +4004,6 @@ public class Parser implements IParser
 
     private List<Object> new62() /* reduce AAgrammar63Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar63Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -4099,7 +4040,6 @@ public class Parser implements IParser
 
     private List<Object> new63() /* reduce AAgrammar64Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar64Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -4123,7 +4063,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4147,7 +4087,6 @@ public class Parser implements IParser
 
     private List<Object> new64() /* reduce AAgrammar65Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar65Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -4172,7 +4111,6 @@ public class Parser implements IParser
 
     private List<Object> new65() /* reduce AAgrammar66Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar66Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -4188,7 +4126,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4208,7 +4146,6 @@ public class Parser implements IParser
 
     private List<Object> new66() /* reduce AAgrammar67Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar67Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -4236,7 +4173,6 @@ public class Parser implements IParser
 
     private List<Object> new67() /* reduce AAgrammar68Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar68Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4254,7 +4190,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4275,7 +4211,6 @@ public class Parser implements IParser
 
     private List<Object> new68() /* reduce AAgrammar69Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar69Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -4303,7 +4238,6 @@ public class Parser implements IParser
 
     private List<Object> new69() /* reduce AAgrammar70Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar70Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4321,7 +4255,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4342,7 +4276,6 @@ public class Parser implements IParser
 
     private List<Object> new70() /* reduce AAgrammar71Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar71Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4373,7 +4306,6 @@ public class Parser implements IParser
 
     private List<Object> new71() /* reduce AAgrammar72Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar72Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4393,7 +4325,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4415,7 +4347,6 @@ public class Parser implements IParser
 
     private List<Object> new72() /* reduce AAgrammar73Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar73Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -4443,7 +4374,6 @@ public class Parser implements IParser
 
     private List<Object> new73() /* reduce AAgrammar74Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar74Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4461,7 +4391,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4482,7 +4412,6 @@ public class Parser implements IParser
 
     private List<Object> new74() /* reduce AAgrammar75Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar75Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4513,7 +4442,6 @@ public class Parser implements IParser
 
     private List<Object> new75() /* reduce AAgrammar76Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar76Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4533,7 +4461,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4555,7 +4483,6 @@ public class Parser implements IParser
 
     private List<Object> new76() /* reduce AAgrammar77Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar77Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4586,7 +4513,6 @@ public class Parser implements IParser
 
     private List<Object> new77() /* reduce AAgrammar78Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar78Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4606,7 +4532,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4628,7 +4554,6 @@ public class Parser implements IParser
 
     private List<Object> new78() /* reduce AAgrammar79Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar79Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4662,7 +4587,6 @@ public class Parser implements IParser
 
     private List<Object> new79() /* reduce AAgrammar80Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar80Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -4684,7 +4608,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4707,7 +4631,6 @@ public class Parser implements IParser
 
     private List<Object> new80() /* reduce AAgrammar81Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar81Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -4735,7 +4658,6 @@ public class Parser implements IParser
 
     private List<Object> new81() /* reduce AAgrammar82Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar82Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4753,7 +4675,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4774,7 +4696,6 @@ public class Parser implements IParser
 
     private List<Object> new82() /* reduce AAgrammar83Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar83Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4805,7 +4726,6 @@ public class Parser implements IParser
 
     private List<Object> new83() /* reduce AAgrammar84Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar84Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4825,7 +4745,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4847,7 +4767,6 @@ public class Parser implements IParser
 
     private List<Object> new84() /* reduce AAgrammar85Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar85Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -4878,7 +4797,6 @@ public class Parser implements IParser
 
     private List<Object> new85() /* reduce AAgrammar86Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar86Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4898,7 +4816,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4920,7 +4838,6 @@ public class Parser implements IParser
 
     private List<Object> new86() /* reduce AAgrammar87Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar87Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -4954,7 +4871,6 @@ public class Parser implements IParser
 
     private List<Object> new87() /* reduce AAgrammar88Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar88Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -4976,7 +4892,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -4999,7 +4915,6 @@ public class Parser implements IParser
 
     private List<Object> new88() /* reduce AAgrammar89Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar89Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -5030,7 +4945,6 @@ public class Parser implements IParser
 
     private List<Object> new89() /* reduce AAgrammar90Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar90Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5050,7 +4964,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5072,7 +4986,6 @@ public class Parser implements IParser
 
     private List<Object> new90() /* reduce AAgrammar91Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar91Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5106,7 +5019,6 @@ public class Parser implements IParser
 
     private List<Object> new91() /* reduce AAgrammar92Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar92Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5128,7 +5040,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5151,7 +5063,6 @@ public class Parser implements IParser
 
     private List<Object> new92() /* reduce AAgrammar93Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar93Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5185,7 +5096,6 @@ public class Parser implements IParser
 
     private List<Object> new93() /* reduce AAgrammar94Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar94Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5207,7 +5117,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5230,7 +5140,6 @@ public class Parser implements IParser
 
     private List<Object> new94() /* reduce AAgrammar95Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar95Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5267,7 +5176,6 @@ public class Parser implements IParser
 
     private List<Object> new95() /* reduce AAgrammar96Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar96Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -5291,7 +5199,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5315,7 +5223,6 @@ public class Parser implements IParser
 
     private List<Object> new96() /* reduce AAgrammar97Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar97Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -5343,7 +5250,6 @@ public class Parser implements IParser
 
     private List<Object> new97() /* reduce AAgrammar98Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar98Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -5361,7 +5267,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5382,7 +5288,6 @@ public class Parser implements IParser
 
     private List<Object> new98() /* reduce AAgrammar99Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar99Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -5413,7 +5318,6 @@ public class Parser implements IParser
 
     private List<Object> new99() /* reduce AAgrammar100Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar100Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5433,7 +5337,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5455,7 +5359,6 @@ public class Parser implements IParser
 
     private List<Object> new100() /* reduce AAgrammar101Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar101Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -5486,7 +5389,6 @@ public class Parser implements IParser
 
     private List<Object> new101() /* reduce AAgrammar102Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar102Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5506,7 +5408,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5528,7 +5430,6 @@ public class Parser implements IParser
 
     private List<Object> new102() /* reduce AAgrammar103Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar103Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5562,7 +5463,6 @@ public class Parser implements IParser
 
     private List<Object> new103() /* reduce AAgrammar104Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar104Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5584,7 +5484,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5607,7 +5507,6 @@ public class Parser implements IParser
 
     private List<Object> new104() /* reduce AAgrammar105Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar105Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -5638,7 +5537,6 @@ public class Parser implements IParser
 
     private List<Object> new105() /* reduce AAgrammar106Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar106Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5658,7 +5556,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5680,7 +5578,6 @@ public class Parser implements IParser
 
     private List<Object> new106() /* reduce AAgrammar107Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar107Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5714,7 +5611,6 @@ public class Parser implements IParser
 
     private List<Object> new107() /* reduce AAgrammar108Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar108Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5736,7 +5632,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5759,7 +5655,6 @@ public class Parser implements IParser
 
     private List<Object> new108() /* reduce AAgrammar109Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar109Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5793,7 +5688,6 @@ public class Parser implements IParser
 
     private List<Object> new109() /* reduce AAgrammar110Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar110Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5815,7 +5709,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5838,7 +5732,6 @@ public class Parser implements IParser
 
     private List<Object> new110() /* reduce AAgrammar111Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar111Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -5875,7 +5768,6 @@ public class Parser implements IParser
 
     private List<Object> new111() /* reduce AAgrammar112Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar112Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -5899,7 +5791,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5923,7 +5815,6 @@ public class Parser implements IParser
 
     private List<Object> new112() /* reduce AAgrammar113Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar113Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -5954,7 +5845,6 @@ public class Parser implements IParser
 
     private List<Object> new113() /* reduce AAgrammar114Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar114Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -5974,7 +5864,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -5996,7 +5886,6 @@ public class Parser implements IParser
 
     private List<Object> new114() /* reduce AAgrammar115Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar115Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -6030,7 +5919,6 @@ public class Parser implements IParser
 
     private List<Object> new115() /* reduce AAgrammar116Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar116Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6052,7 +5940,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6075,7 +5963,6 @@ public class Parser implements IParser
 
     private List<Object> new116() /* reduce AAgrammar117Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar117Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -6109,7 +5996,6 @@ public class Parser implements IParser
 
     private List<Object> new117() /* reduce AAgrammar118Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar118Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6131,7 +6017,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6154,7 +6040,6 @@ public class Parser implements IParser
 
     private List<Object> new118() /* reduce AAgrammar119Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar119Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6191,7 +6076,6 @@ public class Parser implements IParser
 
     private List<Object> new119() /* reduce AAgrammar120Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar120Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -6215,7 +6099,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6239,7 +6123,6 @@ public class Parser implements IParser
 
     private List<Object> new120() /* reduce AAgrammar121Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar121Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -6273,7 +6156,6 @@ public class Parser implements IParser
 
     private List<Object> new121() /* reduce AAgrammar122Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar122Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6295,7 +6177,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6318,7 +6200,6 @@ public class Parser implements IParser
 
     private List<Object> new122() /* reduce AAgrammar123Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar123Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6355,7 +6236,6 @@ public class Parser implements IParser
 
     private List<Object> new123() /* reduce AAgrammar124Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar124Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -6379,7 +6259,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6403,7 +6283,6 @@ public class Parser implements IParser
 
     private List<Object> new124() /* reduce AAgrammar125Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar125Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6440,7 +6319,6 @@ public class Parser implements IParser
 
     private List<Object> new125() /* reduce AAgrammar126Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar126Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -6464,7 +6342,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6488,7 +6366,6 @@ public class Parser implements IParser
 
     private List<Object> new126() /* reduce AAgrammar127Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar127Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -6528,7 +6405,6 @@ public class Parser implements IParser
 
     private List<Object> new127() /* reduce AAgrammar128Grammar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAgrammar128Grammar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList7 = pop();
@@ -6554,7 +6430,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6579,7 +6455,6 @@ public class Parser implements IParser
 
     private List<Object> new128() /* reduce APackage */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("APackage");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6591,7 +6466,7 @@ public class Parser implements IParser
         listNode1 = (LinkedList)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode2.isEmpty()){
                 listNode2.addAll(listNode1);
             }else{
                 listNode2 = listNode1;
@@ -6607,7 +6482,6 @@ public class Parser implements IParser
 
     private List<Object> new129() /* reduce AApkgname1PkgName */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AApkgname1PkgName");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6631,7 +6505,6 @@ public class Parser implements IParser
 
     private List<Object> new130() /* reduce AApkgname2PkgName */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AApkgname2PkgName");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -6650,7 +6523,7 @@ public class Parser implements IParser
         }
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6666,7 +6539,6 @@ public class Parser implements IParser
 
     private List<Object> new131() /* reduce APkgNameTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("APkgNameTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6682,7 +6554,6 @@ public class Parser implements IParser
 
     private List<Object> new132() /* reduce AHelpers */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AHelpers");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6697,7 +6568,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList2.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6716,7 +6587,6 @@ public class Parser implements IParser
 
     private List<Object> new133() /* reduce AHelperDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AHelperDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -6742,7 +6612,6 @@ public class Parser implements IParser
 
     private List<Object> new134() /* reduce AStates */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AStates");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -6758,7 +6627,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList2.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6777,7 +6646,6 @@ public class Parser implements IParser
 
     private List<Object> new135() /* reduce AAidlist1IdList */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAidlist1IdList");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -6800,7 +6668,6 @@ public class Parser implements IParser
 
     private List<Object> new136() /* reduce AAidlist2IdList */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAidlist2IdList");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6818,7 +6685,7 @@ public class Parser implements IParser
         }
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6834,7 +6701,6 @@ public class Parser implements IParser
 
     private List<Object> new137() /* reduce AIdListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AIdListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6850,7 +6716,6 @@ public class Parser implements IParser
 
     private List<Object> new138() /* reduce ATokens */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATokens");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -6865,7 +6730,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList2.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -6884,7 +6749,6 @@ public class Parser implements IParser
 
     private List<Object> new139() /* reduce AAtokendef1TokenDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef1TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -6910,7 +6774,6 @@ public class Parser implements IParser
 
     private List<Object> new140() /* reduce AAtokendef2TokenDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef2TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6939,7 +6802,6 @@ public class Parser implements IParser
 
     private List<Object> new141() /* reduce AAtokendef3TokenDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef3TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -6970,7 +6832,6 @@ public class Parser implements IParser
 
     private List<Object> new142() /* reduce AAtokendef4TokenDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAtokendef4TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList6 = pop();
@@ -7004,7 +6865,6 @@ public class Parser implements IParser
 
     private List<Object> new143() /* reduce AAstatelist1StateList */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist1StateList");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -7031,7 +6891,6 @@ public class Parser implements IParser
 
     private List<Object> new144() /* reduce AAstatelist2StateList */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist2StateList");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -7061,7 +6920,6 @@ public class Parser implements IParser
 
     private List<Object> new145() /* reduce AAstatelist3StateList */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist3StateList");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -7080,7 +6938,7 @@ public class Parser implements IParser
         listNode4 = (LinkedList)nodeArrayList3.get(0);
         if(listNode4 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode5.isEmpty()){
                 listNode5.addAll(listNode4);
             }else{
                 listNode5 = listNode4;
@@ -7099,7 +6957,6 @@ public class Parser implements IParser
 
     private List<Object> new146() /* reduce AAstatelist4StateList */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelist4StateList");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -7121,7 +6978,7 @@ public class Parser implements IParser
         listNode4 = (LinkedList)nodeArrayList4.get(0);
         if(listNode4 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode5.isEmpty()){
                 listNode5.addAll(listNode4);
             }else{
                 listNode5 = listNode4;
@@ -7140,7 +6997,6 @@ public class Parser implements IParser
 
     private List<Object> new147() /* reduce AAstatelisttail1StateListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelisttail1StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7162,7 +7018,6 @@ public class Parser implements IParser
 
     private List<Object> new148() /* reduce AAstatelisttail2StateListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstatelisttail2StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -7187,7 +7042,6 @@ public class Parser implements IParser
 
     private List<Object> new149() /* reduce ATransition */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATransition");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7209,7 +7063,6 @@ public class Parser implements IParser
 
     private List<Object> new150() /* reduce AAigntokens1IgnTokens */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAigntokens1IgnTokens");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -7234,7 +7087,6 @@ public class Parser implements IParser
 
     private List<Object> new151() /* reduce AAigntokens2IgnTokens */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAigntokens2IgnTokens");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -7251,7 +7103,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList3.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -7270,7 +7122,6 @@ public class Parser implements IParser
 
     private List<Object> new152() /* reduce ALookAhead */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ALookAhead");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7289,7 +7140,6 @@ public class Parser implements IParser
 
     private List<Object> new153() /* reduce AAregexp1RegExp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAregexp1RegExp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7318,7 +7168,6 @@ public class Parser implements IParser
 
     private List<Object> new154() /* reduce AAregexp2RegExp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAregexp2RegExp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7339,7 +7188,7 @@ public class Parser implements IParser
         }
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -7358,7 +7207,6 @@ public class Parser implements IParser
 
     private List<Object> new155() /* reduce ARegExpTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ARegExpTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7374,7 +7222,6 @@ public class Parser implements IParser
 
     private List<Object> new156() /* reduce AAconcat1Concat */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAconcat1Concat");
         List<Object> nodeList = new ArrayList<>();
 
         PConcat pconcatNode1;
@@ -7395,7 +7242,6 @@ public class Parser implements IParser
 
     private List<Object> new157() /* reduce AAconcat2Concat */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAconcat2Concat");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7409,7 +7255,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList1.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -7428,7 +7274,6 @@ public class Parser implements IParser
 
     private List<Object> new158() /* reduce AAunexp1UnExp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAunexp1UnExp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7449,7 +7294,6 @@ public class Parser implements IParser
 
     private List<Object> new159() /* reduce AAunexp2UnExp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAunexp2UnExp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7473,7 +7317,6 @@ public class Parser implements IParser
 
     private List<Object> new160() /* reduce ACharBasic */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ACharBasic");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7494,7 +7337,6 @@ public class Parser implements IParser
 
     private List<Object> new161() /* reduce ASetBasic */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ASetBasic");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7515,7 +7357,6 @@ public class Parser implements IParser
 
     private List<Object> new162() /* reduce AStringBasic */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AStringBasic");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7536,7 +7377,6 @@ public class Parser implements IParser
 
     private List<Object> new163() /* reduce AIdBasic */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AIdBasic");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7557,7 +7397,6 @@ public class Parser implements IParser
 
     private List<Object> new164() /* reduce ARegExpBasic */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ARegExpBasic");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -7580,7 +7419,6 @@ public class Parser implements IParser
 
     private List<Object> new165() /* reduce ACharChar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ACharChar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7601,7 +7439,6 @@ public class Parser implements IParser
 
     private List<Object> new166() /* reduce ADecChar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ADecChar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7622,7 +7459,6 @@ public class Parser implements IParser
 
     private List<Object> new167() /* reduce AHexChar */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AHexChar");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7643,7 +7479,6 @@ public class Parser implements IParser
 
     private List<Object> new168() /* reduce AOperationSet */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AOperationSet");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -7672,7 +7507,6 @@ public class Parser implements IParser
 
     private List<Object> new169() /* reduce AIntervalSet */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AIntervalSet");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -7699,7 +7533,6 @@ public class Parser implements IParser
 
     private List<Object> new170() /* reduce AStarUnOp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AStarUnOp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7720,7 +7553,6 @@ public class Parser implements IParser
 
     private List<Object> new171() /* reduce AQMarkUnOp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AQMarkUnOp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7741,7 +7573,6 @@ public class Parser implements IParser
 
     private List<Object> new172() /* reduce APlusUnOp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("APlusUnOp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7762,7 +7593,6 @@ public class Parser implements IParser
 
     private List<Object> new173() /* reduce APlusBinOp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("APlusBinOp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7781,7 +7611,6 @@ public class Parser implements IParser
 
     private List<Object> new174() /* reduce AMinusBinOp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AMinusBinOp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -7800,7 +7629,6 @@ public class Parser implements IParser
 
     private List<Object> new175() /* reduce AProductions */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AProductions");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -7815,7 +7643,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList2.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -7834,7 +7662,6 @@ public class Parser implements IParser
 
     private List<Object> new176() /* reduce AAprod1Prod */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAprod1Prod");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -7857,7 +7684,7 @@ public class Parser implements IParser
         listNode5 = (LinkedList)nodeArrayList3.get(0);
         if(listNode5 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode6.isEmpty()){
                 listNode6.addAll(listNode5);
             }else{
                 listNode6 = listNode5;
@@ -7876,7 +7703,6 @@ public class Parser implements IParser
 
     private List<Object> new177() /* reduce AAprod2Prod */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAprod2Prod");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -7899,7 +7725,7 @@ public class Parser implements IParser
         listNode4 = (LinkedList)nodeArrayList2.get(1);
         if(listNode4 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode5.isEmpty()){
                 listNode5.addAll(listNode4);
             }else{
                 listNode5 = listNode4;
@@ -7912,7 +7738,7 @@ public class Parser implements IParser
         listNode6 = (LinkedList)nodeArrayList4.get(0);
         if(listNode6 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode7.isEmpty()){
                 listNode7.addAll(listNode6);
             }else{
                 listNode7 = listNode6;
@@ -7931,7 +7757,6 @@ public class Parser implements IParser
 
     private List<Object> new178() /* reduce AAprodtransform1ProdTransform */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAprodtransform1ProdTransform");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -7953,7 +7778,6 @@ public class Parser implements IParser
 
     private List<Object> new179() /* reduce AAprodtransform2ProdTransform */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAprodtransform2ProdTransform");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -7969,7 +7793,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList3.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -7986,7 +7810,6 @@ public class Parser implements IParser
 
     private List<Object> new180() /* reduce AAalts1Alts */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalts1Alts");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8009,7 +7832,6 @@ public class Parser implements IParser
 
     private List<Object> new181() /* reduce AAalts2Alts */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalts2Alts");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8027,7 +7849,7 @@ public class Parser implements IParser
         }
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -8043,7 +7865,6 @@ public class Parser implements IParser
 
     private List<Object> new182() /* reduce AAltsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8059,7 +7880,6 @@ public class Parser implements IParser
 
     private List<Object> new183() /* reduce AAalt1Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt1Alt");
         List<Object> nodeList = new ArrayList<>();
 
         PAlt paltNode1;
@@ -8080,7 +7900,6 @@ public class Parser implements IParser
 
     private List<Object> new184() /* reduce AAalt2Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt2Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8105,7 +7924,6 @@ public class Parser implements IParser
 
     private List<Object> new185() /* reduce AAalt3Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt3Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8119,7 +7937,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList1.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -8138,7 +7956,6 @@ public class Parser implements IParser
 
     private List<Object> new186() /* reduce AAalt4Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt4Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8155,7 +7972,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList2.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -8174,7 +7991,6 @@ public class Parser implements IParser
 
     private List<Object> new187() /* reduce AAalt5Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt5Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8199,7 +8015,6 @@ public class Parser implements IParser
 
     private List<Object> new188() /* reduce AAalt6Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt6Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8227,7 +8042,6 @@ public class Parser implements IParser
 
     private List<Object> new189() /* reduce AAalt7Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt7Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8243,7 +8057,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList1.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -8263,7 +8077,6 @@ public class Parser implements IParser
 
     private List<Object> new190() /* reduce AAalt8Alt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalt8Alt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -8282,7 +8095,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList2.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -8302,7 +8115,6 @@ public class Parser implements IParser
 
     private List<Object> new191() /* reduce AAalttransform1AltTransform */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalttransform1AltTransform");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -8331,7 +8143,6 @@ public class Parser implements IParser
 
     private List<Object> new192() /* reduce AAalttransform2AltTransform */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAalttransform2AltTransform");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -8351,7 +8162,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList3.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -8371,7 +8182,6 @@ public class Parser implements IParser
 
     private List<Object> new193() /* reduce AAnewterm1Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAnewterm1Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -8401,7 +8211,6 @@ public class Parser implements IParser
 
     private List<Object> new194() /* reduce AAnewterm2Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAnewterm2Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -8423,7 +8232,7 @@ public class Parser implements IParser
         listNode4 = (LinkedList)nodeArrayList4.get(0);
         if(listNode4 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode5.isEmpty()){
                 listNode5.addAll(listNode4);
             }else{
                 listNode5 = listNode4;
@@ -8442,7 +8251,6 @@ public class Parser implements IParser
 
     private List<Object> new195() /* reduce AAlistterm1Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAlistterm1Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8468,7 +8276,6 @@ public class Parser implements IParser
 
     private List<Object> new196() /* reduce AAlistterm2Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAlistterm2Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -8486,7 +8293,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList2.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -8505,7 +8312,6 @@ public class Parser implements IParser
 
     private List<Object> new197() /* reduce AAsimpleterm1Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm1Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8526,7 +8332,6 @@ public class Parser implements IParser
 
     private List<Object> new198() /* reduce AAsimpleterm2Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm2Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8550,7 +8355,6 @@ public class Parser implements IParser
 
     private List<Object> new199() /* reduce AAsimpleterm3Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm3Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8574,7 +8378,6 @@ public class Parser implements IParser
 
     private List<Object> new200() /* reduce AAsimpleterm4Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimpleterm4Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -8601,7 +8404,6 @@ public class Parser implements IParser
 
     private List<Object> new201() /* reduce ANullTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANullTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8620,7 +8422,6 @@ public class Parser implements IParser
 
     private List<Object> new202() /* reduce AAlistoflistterm1ListOfListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAlistoflistterm1ListOfListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8643,7 +8444,6 @@ public class Parser implements IParser
 
     private List<Object> new203() /* reduce AAlistoflistterm2ListOfListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAlistoflistterm2ListOfListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8661,7 +8461,7 @@ public class Parser implements IParser
         }
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -8677,7 +8477,6 @@ public class Parser implements IParser
 
     private List<Object> new204() /* reduce AAnewlistterm1ListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAnewlistterm1ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -8707,7 +8506,6 @@ public class Parser implements IParser
 
     private List<Object> new205() /* reduce AAnewlistterm2ListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAnewlistterm2ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList5 = pop();
@@ -8729,7 +8527,7 @@ public class Parser implements IParser
         listNode4 = (LinkedList)nodeArrayList4.get(0);
         if(listNode4 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode5.isEmpty()){
                 listNode5.addAll(listNode4);
             }else{
                 listNode5 = listNode4;
@@ -8748,7 +8546,6 @@ public class Parser implements IParser
 
     private List<Object> new206() /* reduce AAsimplelistterm1ListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm1ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8769,7 +8566,6 @@ public class Parser implements IParser
 
     private List<Object> new207() /* reduce AAsimplelistterm2ListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm2ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8793,7 +8589,6 @@ public class Parser implements IParser
 
     private List<Object> new208() /* reduce AAsimplelistterm3ListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm3ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8817,7 +8612,6 @@ public class Parser implements IParser
 
     private List<Object> new209() /* reduce AAsimplelistterm4ListTerm */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAsimplelistterm4ListTerm");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -8844,7 +8638,6 @@ public class Parser implements IParser
 
     private List<Object> new210() /* reduce AListTermTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AListTermTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8860,7 +8653,6 @@ public class Parser implements IParser
 
     private List<Object> new211() /* reduce ASimpleTermTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ASimpleTermTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8876,7 +8668,6 @@ public class Parser implements IParser
 
     private List<Object> new212() /* reduce AAprodname1ProdName */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAprodname1ProdName");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8897,7 +8688,6 @@ public class Parser implements IParser
 
     private List<Object> new213() /* reduce AAprodname2ProdName */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAprodname2ProdName");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8921,7 +8711,6 @@ public class Parser implements IParser
 
     private List<Object> new214() /* reduce AProdNameTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AProdNameTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8937,7 +8726,6 @@ public class Parser implements IParser
 
     private List<Object> new215() /* reduce AAparams1Params */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAparams1Params");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -8960,7 +8748,6 @@ public class Parser implements IParser
 
     private List<Object> new216() /* reduce AAparams2Params */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAparams2Params");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -8978,7 +8765,7 @@ public class Parser implements IParser
         }
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -8994,7 +8781,6 @@ public class Parser implements IParser
 
     private List<Object> new217() /* reduce AParamsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AParamsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9010,7 +8796,6 @@ public class Parser implements IParser
 
     private List<Object> new218() /* reduce AAltName */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAltName");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -9027,7 +8812,6 @@ public class Parser implements IParser
 
     private List<Object> new219() /* reduce AAelem1Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem1Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9048,7 +8832,6 @@ public class Parser implements IParser
 
     private List<Object> new220() /* reduce AAelem2Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem2Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9072,7 +8855,6 @@ public class Parser implements IParser
 
     private List<Object> new221() /* reduce AAelem3Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem3Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9096,7 +8878,6 @@ public class Parser implements IParser
 
     private List<Object> new222() /* reduce AAelem4Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem4Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -9123,7 +8904,6 @@ public class Parser implements IParser
 
     private List<Object> new223() /* reduce AAelem5Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem5Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9147,7 +8927,6 @@ public class Parser implements IParser
 
     private List<Object> new224() /* reduce AAelem6Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem6Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -9174,7 +8953,6 @@ public class Parser implements IParser
 
     private List<Object> new225() /* reduce AAelem7Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem7Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList3 = pop();
@@ -9201,7 +8979,6 @@ public class Parser implements IParser
 
     private List<Object> new226() /* reduce AAelem8Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAelem8Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -9231,7 +9008,6 @@ public class Parser implements IParser
 
     private List<Object> new227() /* reduce AElemName */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AElemName");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -9249,7 +9025,6 @@ public class Parser implements IParser
 
     private List<Object> new228() /* reduce ATokenSpecifier */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATokenSpecifier");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9269,7 +9044,6 @@ public class Parser implements IParser
 
     private List<Object> new229() /* reduce AProductionSpecifier */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AProductionSpecifier");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9289,7 +9063,6 @@ public class Parser implements IParser
 
     private List<Object> new230() /* reduce AAst */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAst");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -9306,7 +9079,7 @@ public class Parser implements IParser
         listNode2 = (LinkedList)nodeArrayList4.get(0);
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -9325,7 +9098,6 @@ public class Parser implements IParser
 
     private List<Object> new231() /* reduce AAstProd */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstProd");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList4 = pop();
@@ -9344,7 +9116,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList3.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -9363,7 +9135,6 @@ public class Parser implements IParser
 
     private List<Object> new232() /* reduce AAastalts1AstAlts */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAastalts1AstAlts");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9386,7 +9157,6 @@ public class Parser implements IParser
 
     private List<Object> new233() /* reduce AAastalts2AstAlts */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAastalts2AstAlts");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9404,7 +9174,7 @@ public class Parser implements IParser
         }
         if(listNode2 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode2);
             }else{
                 listNode3 = listNode2;
@@ -9420,7 +9190,6 @@ public class Parser implements IParser
 
     private List<Object> new234() /* reduce AAstAltsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAstAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9436,7 +9205,6 @@ public class Parser implements IParser
 
     private List<Object> new235() /* reduce AAastalt1AstAlt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt1AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
         PAstAlt pastaltNode1;
@@ -9457,7 +9225,6 @@ public class Parser implements IParser
 
     private List<Object> new236() /* reduce AAastalt2AstAlt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt2AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9482,7 +9249,6 @@ public class Parser implements IParser
 
     private List<Object> new237() /* reduce AAastalt3AstAlt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt3AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9496,7 +9262,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList1.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -9515,7 +9281,6 @@ public class Parser implements IParser
 
     private List<Object> new238() /* reduce AAastalt4AstAlt */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("AAastalt4AstAlt");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9532,7 +9297,7 @@ public class Parser implements IParser
         listNode3 = (LinkedList)nodeArrayList2.get(0);
         if(listNode3 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode4.isEmpty()){
                 listNode4.addAll(listNode3);
             }else{
                 listNode4 = listNode3;
@@ -9551,7 +9316,6 @@ public class Parser implements IParser
 
     private List<Object> new239() /* reduce ATerminal$PkgNameTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$PkgNameTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9574,7 +9338,6 @@ public class Parser implements IParser
 
     private List<Object> new240() /* reduce ANonTerminal$PkgNameTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$PkgNameTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9588,7 +9351,7 @@ public class Parser implements IParser
         tpkgidNode2 = (TPkgId)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9608,7 +9371,6 @@ public class Parser implements IParser
 
     private List<Object> new241() /* reduce ATerminal$HelperDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$HelperDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9631,7 +9393,6 @@ public class Parser implements IParser
 
     private List<Object> new242() /* reduce ANonTerminal$HelperDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$HelperDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9645,7 +9406,7 @@ public class Parser implements IParser
         phelperdefNode2 = (PHelperDef)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9665,7 +9426,6 @@ public class Parser implements IParser
 
     private List<Object> new243() /* reduce ATerminal$IdListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$IdListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9688,7 +9448,6 @@ public class Parser implements IParser
 
     private List<Object> new244() /* reduce ANonTerminal$IdListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$IdListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9702,7 +9461,7 @@ public class Parser implements IParser
         tidNode2 = (TId)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9722,7 +9481,6 @@ public class Parser implements IParser
 
     private List<Object> new245() /* reduce ATerminal$TokenDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9745,7 +9503,6 @@ public class Parser implements IParser
 
     private List<Object> new246() /* reduce ANonTerminal$TokenDef */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$TokenDef");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9759,7 +9516,7 @@ public class Parser implements IParser
         ptokendefNode2 = (PTokenDef)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9779,7 +9536,6 @@ public class Parser implements IParser
 
     private List<Object> new247() /* reduce ATerminal$StateListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9802,7 +9558,6 @@ public class Parser implements IParser
 
     private List<Object> new248() /* reduce ANonTerminal$StateListTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$StateListTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9816,7 +9571,7 @@ public class Parser implements IParser
         pstatelisttailNode2 = (PStateListTail)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9836,7 +9591,6 @@ public class Parser implements IParser
 
     private List<Object> new249() /* reduce ATerminal$RegExpTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$RegExpTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9859,7 +9613,6 @@ public class Parser implements IParser
 
     private List<Object> new250() /* reduce ANonTerminal$RegExpTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$RegExpTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9873,7 +9626,7 @@ public class Parser implements IParser
         pconcatNode2 = (PConcat)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9893,7 +9646,6 @@ public class Parser implements IParser
 
     private List<Object> new251() /* reduce ATerminal$UnExp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$UnExp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9916,7 +9668,6 @@ public class Parser implements IParser
 
     private List<Object> new252() /* reduce ANonTerminal$UnExp */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$UnExp");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9930,7 +9681,7 @@ public class Parser implements IParser
         punexpNode2 = (PUnExp)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -9950,7 +9701,6 @@ public class Parser implements IParser
 
     private List<Object> new253() /* reduce ATerminal$Prod */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Prod");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -9973,7 +9723,6 @@ public class Parser implements IParser
 
     private List<Object> new254() /* reduce ANonTerminal$Prod */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Prod");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -9987,7 +9736,7 @@ public class Parser implements IParser
         pprodNode2 = (PProd)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10007,7 +9756,6 @@ public class Parser implements IParser
 
     private List<Object> new255() /* reduce ATerminal$Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10030,7 +9778,6 @@ public class Parser implements IParser
 
     private List<Object> new256() /* reduce ANonTerminal$Elem */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Elem");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10044,7 +9791,7 @@ public class Parser implements IParser
         pelemNode2 = (PElem)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10064,7 +9811,6 @@ public class Parser implements IParser
 
     private List<Object> new257() /* reduce ATerminal$AltsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AltsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10087,7 +9833,6 @@ public class Parser implements IParser
 
     private List<Object> new258() /* reduce ANonTerminal$AltsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AltsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10101,7 +9846,7 @@ public class Parser implements IParser
         paltNode2 = (PAlt)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10121,7 +9866,6 @@ public class Parser implements IParser
 
     private List<Object> new259() /* reduce ATerminal$Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10144,7 +9888,6 @@ public class Parser implements IParser
 
     private List<Object> new260() /* reduce ANonTerminal$Term */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$Term");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10158,7 +9901,7 @@ public class Parser implements IParser
         ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10178,7 +9921,6 @@ public class Parser implements IParser
 
     private List<Object> new261() /* reduce ATerminal$ListTermTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$ListTermTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10201,7 +9943,6 @@ public class Parser implements IParser
 
     private List<Object> new262() /* reduce ANonTerminal$ListTermTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$ListTermTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10215,7 +9956,7 @@ public class Parser implements IParser
         plisttermNode2 = (PListTerm)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10235,7 +9976,6 @@ public class Parser implements IParser
 
     private List<Object> new263() /* reduce ATerminal$ParamsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$ParamsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10258,7 +9998,6 @@ public class Parser implements IParser
 
     private List<Object> new264() /* reduce ANonTerminal$ParamsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$ParamsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10272,7 +10011,7 @@ public class Parser implements IParser
         ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10292,7 +10031,6 @@ public class Parser implements IParser
 
     private List<Object> new265() /* reduce ATerminal$AstProd */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AstProd");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10315,7 +10053,6 @@ public class Parser implements IParser
 
     private List<Object> new266() /* reduce ANonTerminal$AstProd */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AstProd");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10329,7 +10066,7 @@ public class Parser implements IParser
         pastprodNode2 = (PAstProd)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
@@ -10349,7 +10086,6 @@ public class Parser implements IParser
 
     private List<Object> new267() /* reduce ATerminal$AstAltsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ATerminal$AstAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
@@ -10372,7 +10108,6 @@ public class Parser implements IParser
 
     private List<Object> new268() /* reduce ANonTerminal$AstAltsTail */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("ANonTerminal$AstAltsTail");
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList2 = pop();
@@ -10386,7 +10121,7 @@ public class Parser implements IParser
         pastaltNode2 = (PAstAlt)nodeArrayList2.get(0);
         if(listNode1 != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!listNode3.isEmpty()){
                 listNode3.addAll(listNode1);
             }else{
                 listNode3 = listNode1;
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 5b6c9a06767bd0516b5aea8d6c45a289aa245661..79ae4d25e3233eb243bb75c9d8418c89dbcb55f7 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -156,6 +156,10 @@ public class Parser implements IParser
             + token.getText().length());
     }
 
+    /**
+     * @deprecated Overriding this method no longer has any effect. This optimization is now applied automatically iff it is safe.
+     */
+    @Deprecated
     protected boolean addElementsFromListToNewList(String productionRuleAsString) {
         return true;
     }
@@ -356,7 +360,6 @@ Macro:ParserNewHeader
 
     private List<Object> new$0$() /* reduce $1$ */
     {
-        final boolean addElementsToNewList = addElementsFromListToNewList("$1$");
         List<Object> nodeList = new ArrayList<>();
 
 
@@ -427,7 +430,7 @@ $
 Macro:ParserTypedLinkedListAddAll
         if($2$Node$3$ != null) //Macro:ParserTypedLinkedListAddAll
         {
-            if(addElementsToNewList){
+            if(!$0$Node$1$.isEmpty()){
                 $0$Node$1$.addAll($2$Node$3$);
             }else{
                 $0$Node$1$ = $2$Node$3$;