diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index 8c16b431149469f142c3ca2ef8150266c4f42cf6..190c343a82cc3fbc5b015c1df1fbb070b1b91b51 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -116,7 +116,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
       }
       else
       {
-        return "LinkedList<" + elementTypeName + ">";
+        return "List<" + elementTypeName + ">";
       }
     }
     else
diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index bf13d5b26d134f96303d6f23fb599e67db47cf88..cddfe0fb50f58d7dbd6c654e0309e1acd8711ce9 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -1884,11 +1884,11 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -1940,12 +1940,12 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -1998,12 +1998,12 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2060,13 +2060,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2120,12 +2120,12 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2182,13 +2182,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2246,13 +2246,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2314,14 +2314,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2376,12 +2376,12 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2438,13 +2438,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2502,13 +2502,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2570,14 +2570,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2636,13 +2636,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2704,14 +2704,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2774,14 +2774,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2848,15 +2848,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2912,12 +2912,12 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -2974,13 +2974,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3038,13 +3038,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3106,14 +3106,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3172,13 +3172,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3240,14 +3240,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3310,14 +3310,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3384,15 +3384,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3452,13 +3452,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3520,14 +3520,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3590,14 +3590,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3664,15 +3664,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3736,14 +3736,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3810,15 +3810,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3886,15 +3886,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -3966,7 +3966,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
@@ -3974,8 +3974,8 @@ public class Parser implements IParser
         PProductions pproductionsNode8;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4032,12 +4032,12 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4094,13 +4094,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4158,13 +4158,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4226,14 +4226,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4292,13 +4292,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4360,14 +4360,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4430,14 +4430,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4504,15 +4504,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4572,13 +4572,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4640,14 +4640,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4710,14 +4710,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4784,15 +4784,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4856,14 +4856,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -4930,15 +4930,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5006,15 +5006,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5086,7 +5086,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
@@ -5094,8 +5094,8 @@ public class Parser implements IParser
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5156,13 +5156,13 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5224,14 +5224,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5294,14 +5294,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5368,15 +5368,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5440,14 +5440,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5514,15 +5514,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5590,15 +5590,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5670,7 +5670,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
@@ -5678,8 +5678,8 @@ public class Parser implements IParser
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5744,14 +5744,14 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5818,15 +5818,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5894,15 +5894,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -5974,7 +5974,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PIgnTokens pigntokensNode7;
@@ -5982,8 +5982,8 @@ public class Parser implements IParser
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6052,15 +6052,15 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
         PProductions pproductionsNode8;
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6132,7 +6132,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
@@ -6140,8 +6140,8 @@ public class Parser implements IParser
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6214,7 +6214,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PStates pstatesNode5;
         PTokens ptokensNode6;
         PIgnTokens pigntokensNode7;
@@ -6222,8 +6222,8 @@ public class Parser implements IParser
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6300,7 +6300,7 @@ public class Parser implements IParser
         PGrammar pgrammarNode1;
         {
             // Block
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         PHelpers phelpersNode4;
         PStates pstatesNode5;
         PTokens ptokensNode6;
@@ -6309,8 +6309,8 @@ public class Parser implements IParser
         PAst pastNode9;
         {
             // Block
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6342,11 +6342,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
+        List<TPkgId> listNode2 = new LinkedList<>();
         {
             // Block
-        LinkedList<TPkgId> listNode1 = new LinkedList<>();
-        listNode1 = (LinkedList<TPkgId>)nodeArrayList2.get(0);
+        List<TPkgId> listNode1 = new LinkedList<>();
+        listNode1 = (List<TPkgId>)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
             if(!listNode2.isEmpty()){
@@ -6369,7 +6369,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
+        List<TPkgId> listNode2 = new LinkedList<>();
         {
             // Block
         TPkgId tpkgidNode1;
@@ -6393,13 +6393,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         {
             // Block
         TPkgId tpkgidNode1;
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
+        List<TPkgId> listNode2 = new LinkedList<>();
         tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
-        listNode2 = (LinkedList<TPkgId>)nodeArrayList2.get(0);
+        listNode2 = (List<TPkgId>)nodeArrayList2.get(0);
         if(tpkgidNode1 != null)
         {
             listNode3.add(tpkgidNode1);
@@ -6444,11 +6444,11 @@ public class Parser implements IParser
         PHelpers phelpersNode1;
         {
             // Block
-        LinkedList<PHelperDef> listNode3 = new LinkedList<>();
+        List<PHelperDef> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PHelperDef> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<PHelperDef>)nodeArrayList2.get(0);
+        List<PHelperDef> listNode2 = new LinkedList<>();
+        listNode2 = (List<PHelperDef>)nodeArrayList2.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6503,11 +6503,11 @@ public class Parser implements IParser
         PStates pstatesNode1;
         {
             // Block
-        LinkedList<TId> listNode3 = new LinkedList<>();
+        List<TId> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<TId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TId>)nodeArrayList2.get(0);
+        List<TId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TId>)nodeArrayList2.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6532,7 +6532,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TId> listNode2 = new LinkedList<>();
+        List<TId> listNode2 = new LinkedList<>();
         {
             // Block
         TId tidNode1;
@@ -6555,13 +6555,13 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TId> listNode3 = new LinkedList<>();
+        List<TId> listNode3 = new LinkedList<>();
         {
             // Block
         TId tidNode1;
-        LinkedList<TId> listNode2 = new LinkedList<>();
+        List<TId> listNode2 = new LinkedList<>();
         tidNode1 = (TId)nodeArrayList1.get(0);
-        listNode2 = (LinkedList<TId>)nodeArrayList2.get(0);
+        listNode2 = (List<TId>)nodeArrayList2.get(0);
         if(tidNode1 != null)
         {
             listNode3.add(tidNode1);
@@ -6606,11 +6606,11 @@ public class Parser implements IParser
         PTokens ptokensNode1;
         {
             // Block
-        LinkedList<PTokenDef> listNode3 = new LinkedList<>();
+        List<PTokenDef> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PTokenDef> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<PTokenDef>)nodeArrayList2.get(0);
+        List<PTokenDef> listNode2 = new LinkedList<>();
+        listNode2 = (List<PTokenDef>)nodeArrayList2.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -6811,12 +6811,12 @@ public class Parser implements IParser
         {
             // Block
         TId tidNode2;
-        LinkedList<PStateListTail> listNode5 = new LinkedList<>();
+        List<PStateListTail> listNode5 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList2.get(0);
         {
             // Block
-        LinkedList<PStateListTail> listNode4 = new LinkedList<>();
-        listNode4 = (LinkedList<PStateListTail>)nodeArrayList3.get(0);
+        List<PStateListTail> listNode4 = new LinkedList<>();
+        listNode4 = (List<PStateListTail>)nodeArrayList3.get(0);
         if(listNode4 != null)
         {
             if(!listNode5.isEmpty()){
@@ -6850,13 +6850,13 @@ public class Parser implements IParser
             // Block
         TId tidNode2;
         PTransition ptransitionNode3;
-        LinkedList<PStateListTail> listNode5 = new LinkedList<>();
+        List<PStateListTail> listNode5 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList2.get(0);
         ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
         {
             // Block
-        LinkedList<PStateListTail> listNode4 = new LinkedList<>();
-        listNode4 = (LinkedList<PStateListTail>)nodeArrayList4.get(0);
+        List<PStateListTail> listNode4 = new LinkedList<>();
+        listNode4 = (List<PStateListTail>)nodeArrayList4.get(0);
         if(listNode4 != null)
         {
             if(!listNode5.isEmpty()){
@@ -6976,11 +6976,11 @@ public class Parser implements IParser
         PIgnTokens pigntokensNode1;
         {
             // Block
-        LinkedList<TId> listNode3 = new LinkedList<>();
+        List<TId> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<TId> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<TId>)nodeArrayList3.get(0);
+        List<TId> listNode2 = new LinkedList<>();
+        listNode2 = (List<TId>)nodeArrayList3.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -7026,7 +7026,7 @@ public class Parser implements IParser
         PRegExp pregexpNode1;
         {
             // Block
-        LinkedList<PConcat> listNode3 = new LinkedList<>();
+        List<PConcat> listNode3 = new LinkedList<>();
         {
             // Block
         PConcat pconcatNode2;
@@ -7055,13 +7055,13 @@ public class Parser implements IParser
         PRegExp pregexpNode1;
         {
             // Block
-        LinkedList<PConcat> listNode4 = new LinkedList<>();
+        List<PConcat> listNode4 = new LinkedList<>();
         {
             // Block
         PConcat pconcatNode2;
-        LinkedList<PConcat> listNode3 = new LinkedList<>();
+        List<PConcat> listNode3 = new LinkedList<>();
         pconcatNode2 = (PConcat)nodeArrayList1.get(0);
-        listNode3 = (LinkedList<PConcat>)nodeArrayList2.get(0);
+        listNode3 = (List<PConcat>)nodeArrayList2.get(0);
         if(pconcatNode2 != null)
         {
             listNode4.add(pconcatNode2);
@@ -7127,11 +7127,11 @@ public class Parser implements IParser
         PConcat pconcatNode1;
         {
             // Block
-        LinkedList<PUnExp> listNode3 = new LinkedList<>();
+        List<PUnExp> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PUnExp> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<PUnExp>)nodeArrayList1.get(0);
+        List<PUnExp> listNode2 = new LinkedList<>();
+        listNode2 = (List<PUnExp>)nodeArrayList1.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -7515,11 +7515,11 @@ public class Parser implements IParser
         PProductions pproductionsNode1;
         {
             // Block
-        LinkedList<PProd> listNode3 = new LinkedList<>();
+        List<PProd> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PProd> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<PProd>)nodeArrayList2.get(0);
+        List<PProd> listNode2 = new LinkedList<>();
+        listNode2 = (List<PProd>)nodeArrayList2.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -7551,15 +7551,15 @@ public class Parser implements IParser
         {
             // Block
         TId tidNode2;
-        LinkedList<PAlt> listNode6 = new LinkedList<>();
+        List<PAlt> listNode6 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList1.get(0);
         {
             // Block
         }
         {
             // Block
-        LinkedList<PAlt> listNode5 = new LinkedList<>();
-        listNode5 = (LinkedList<PAlt>)nodeArrayList3.get(0);
+        List<PAlt> listNode5 = new LinkedList<>();
+        listNode5 = (List<PAlt>)nodeArrayList3.get(0);
         if(listNode5 != null)
         {
             if(!listNode6.isEmpty()){
@@ -7593,14 +7593,14 @@ public class Parser implements IParser
             // Block
         TId tidNode2;
         TArrow tarrowNode3;
-        LinkedList<PElem> listNode5 = new LinkedList<>();
-        LinkedList<PAlt> listNode7 = new LinkedList<>();
+        List<PElem> listNode5 = new LinkedList<>();
+        List<PAlt> listNode7 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList1.get(0);
         tarrowNode3 = (TArrow)nodeArrayList2.get(0);
         {
             // Block
-        LinkedList<PElem> listNode4 = new LinkedList<>();
-        listNode4 = (LinkedList<PElem>)nodeArrayList2.get(1);
+        List<PElem> listNode4 = new LinkedList<>();
+        listNode4 = (List<PElem>)nodeArrayList2.get(1);
         if(listNode4 != null)
         {
             if(!listNode5.isEmpty()){
@@ -7612,8 +7612,8 @@ public class Parser implements IParser
         }
         {
             // Block
-        LinkedList<PAlt> listNode6 = new LinkedList<>();
-        listNode6 = (LinkedList<PAlt>)nodeArrayList4.get(0);
+        List<PAlt> listNode6 = new LinkedList<>();
+        listNode6 = (List<PAlt>)nodeArrayList4.get(0);
         if(listNode6 != null)
         {
             if(!listNode7.isEmpty()){
@@ -7662,12 +7662,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
         TArrow tarrowNode1;
-        LinkedList<PElem> listNode3 = new LinkedList<>();
+        List<PElem> listNode3 = new LinkedList<>();
         tarrowNode1 = (TArrow)nodeArrayList2.get(0);
         {
             // Block
-        LinkedList<PElem> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<PElem>)nodeArrayList3.get(0);
+        List<PElem> listNode2 = new LinkedList<>();
+        listNode2 = (List<PElem>)nodeArrayList3.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -7690,7 +7690,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAlt> listNode2 = new LinkedList<>();
+        List<PAlt> listNode2 = new LinkedList<>();
         {
             // Block
         PAlt paltNode1;
@@ -7713,13 +7713,13 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAlt> listNode3 = new LinkedList<>();
+        List<PAlt> listNode3 = new LinkedList<>();
         {
             // Block
         PAlt paltNode1;
-        LinkedList<PAlt> listNode2 = new LinkedList<>();
+        List<PAlt> listNode2 = new LinkedList<>();
         paltNode1 = (PAlt)nodeArrayList1.get(0);
-        listNode2 = (LinkedList<PAlt>)nodeArrayList2.get(0);
+        listNode2 = (List<PAlt>)nodeArrayList2.get(0);
         if(paltNode1 != null)
         {
             listNode3.add(paltNode1);
@@ -7805,11 +7805,11 @@ public class Parser implements IParser
         PAlt paltNode1;
         {
             // Block
-        LinkedList<PElem> listNode4 = new LinkedList<>();
+        List<PElem> listNode4 = new LinkedList<>();
         {
             // Block
-        LinkedList<PElem> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PElem>)nodeArrayList1.get(0);
+        List<PElem> listNode3 = new LinkedList<>();
+        listNode3 = (List<PElem>)nodeArrayList1.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -7839,12 +7839,12 @@ public class Parser implements IParser
         {
             // Block
         TId tidNode2;
-        LinkedList<PElem> listNode4 = new LinkedList<>();
+        List<PElem> listNode4 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList1.get(0);
         {
             // Block
-        LinkedList<PElem> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PElem>)nodeArrayList2.get(0);
+        List<PElem> listNode3 = new LinkedList<>();
+        listNode3 = (List<PElem>)nodeArrayList2.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -7922,12 +7922,12 @@ public class Parser implements IParser
         PAlt paltNode1;
         {
             // Block
-        LinkedList<PElem> listNode4 = new LinkedList<>();
+        List<PElem> listNode4 = new LinkedList<>();
         PAltTransform palttransformNode5;
         {
             // Block
-        LinkedList<PElem> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PElem>)nodeArrayList1.get(0);
+        List<PElem> listNode3 = new LinkedList<>();
+        listNode3 = (List<PElem>)nodeArrayList1.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -7959,13 +7959,13 @@ public class Parser implements IParser
         {
             // Block
         TId tidNode2;
-        LinkedList<PElem> listNode4 = new LinkedList<>();
+        List<PElem> listNode4 = new LinkedList<>();
         PAltTransform palttransformNode5;
         tidNode2 = (TId)nodeArrayList1.get(0);
         {
             // Block
-        LinkedList<PElem> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PElem>)nodeArrayList2.get(0);
+        List<PElem> listNode3 = new LinkedList<>();
+        listNode3 = (List<PElem>)nodeArrayList2.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -8025,13 +8025,13 @@ public class Parser implements IParser
         {
             // Block
         TLBrace tlbraceNode2;
-        LinkedList<PTerm> listNode4 = new LinkedList<>();
+        List<PTerm> listNode4 = new LinkedList<>();
         TRBrace trbraceNode5;
         tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
         {
             // Block
-        LinkedList<PTerm> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PTerm>)nodeArrayList3.get(0);
+        List<PTerm> listNode3 = new LinkedList<>();
+        listNode3 = (List<PTerm>)nodeArrayList3.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -8094,13 +8094,13 @@ public class Parser implements IParser
             // Block
         PProdName pprodnameNode2;
         TLPar tlparNode3;
-        LinkedList<PTerm> listNode5 = new LinkedList<>();
+        List<PTerm> listNode5 = new LinkedList<>();
         pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
         tlparNode3 = (TLPar)nodeArrayList3.get(0);
         {
             // Block
-        LinkedList<PTerm> listNode4 = new LinkedList<>();
-        listNode4 = (LinkedList<PTerm>)nodeArrayList4.get(0);
+        List<PTerm> listNode4 = new LinkedList<>();
+        listNode4 = (List<PTerm>)nodeArrayList4.get(0);
         if(listNode4 != null)
         {
             if(!listNode5.isEmpty()){
@@ -8155,12 +8155,12 @@ public class Parser implements IParser
         {
             // Block
         TLBkt tlbktNode2;
-        LinkedList<PListTerm> listNode4 = new LinkedList<>();
+        List<PListTerm> listNode4 = new LinkedList<>();
         tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
         {
             // Block
-        LinkedList<PListTerm> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PListTerm>)nodeArrayList2.get(0);
+        List<PListTerm> listNode3 = new LinkedList<>();
+        listNode3 = (List<PListTerm>)nodeArrayList2.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -8295,7 +8295,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PListTerm> listNode2 = new LinkedList<>();
+        List<PListTerm> listNode2 = new LinkedList<>();
         {
             // Block
         PListTerm plisttermNode1;
@@ -8318,13 +8318,13 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PListTerm> listNode3 = new LinkedList<>();
+        List<PListTerm> listNode3 = new LinkedList<>();
         {
             // Block
         PListTerm plisttermNode1;
-        LinkedList<PListTerm> listNode2 = new LinkedList<>();
+        List<PListTerm> listNode2 = new LinkedList<>();
         plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
-        listNode2 = (LinkedList<PListTerm>)nodeArrayList2.get(0);
+        listNode2 = (List<PListTerm>)nodeArrayList2.get(0);
         if(plisttermNode1 != null)
         {
             listNode3.add(plisttermNode1);
@@ -8387,13 +8387,13 @@ public class Parser implements IParser
             // Block
         PProdName pprodnameNode2;
         TLPar tlparNode3;
-        LinkedList<PTerm> listNode5 = new LinkedList<>();
+        List<PTerm> listNode5 = new LinkedList<>();
         pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
         tlparNode3 = (TLPar)nodeArrayList3.get(0);
         {
             // Block
-        LinkedList<PTerm> listNode4 = new LinkedList<>();
-        listNode4 = (LinkedList<PTerm>)nodeArrayList4.get(0);
+        List<PTerm> listNode4 = new LinkedList<>();
+        listNode4 = (List<PTerm>)nodeArrayList4.get(0);
         if(listNode4 != null)
         {
             if(!listNode5.isEmpty()){
@@ -8598,7 +8598,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTerm> listNode2 = new LinkedList<>();
+        List<PTerm> listNode2 = new LinkedList<>();
         {
             // Block
         PTerm ptermNode1;
@@ -8621,13 +8621,13 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTerm> listNode3 = new LinkedList<>();
+        List<PTerm> listNode3 = new LinkedList<>();
         {
             // Block
         PTerm ptermNode1;
-        LinkedList<PTerm> listNode2 = new LinkedList<>();
+        List<PTerm> listNode2 = new LinkedList<>();
         ptermNode1 = (PTerm)nodeArrayList1.get(0);
-        listNode2 = (LinkedList<PTerm>)nodeArrayList2.get(0);
+        listNode2 = (List<PTerm>)nodeArrayList2.get(0);
         if(ptermNode1 != null)
         {
             listNode3.add(ptermNode1);
@@ -8941,11 +8941,11 @@ public class Parser implements IParser
         PAst pastNode1;
         {
             // Block
-        LinkedList<PAstProd> listNode3 = new LinkedList<>();
+        List<PAstProd> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PAstProd> listNode2 = new LinkedList<>();
-        listNode2 = (LinkedList<PAstProd>)nodeArrayList4.get(0);
+        List<PAstProd> listNode2 = new LinkedList<>();
+        listNode2 = (List<PAstProd>)nodeArrayList4.get(0);
         if(listNode2 != null)
         {
             if(!listNode3.isEmpty()){
@@ -8977,12 +8977,12 @@ public class Parser implements IParser
         {
             // Block
         TId tidNode2;
-        LinkedList<PAstAlt> listNode4 = new LinkedList<>();
+        List<PAstAlt> listNode4 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList1.get(0);
         {
             // Block
-        LinkedList<PAstAlt> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PAstAlt>)nodeArrayList3.get(0);
+        List<PAstAlt> listNode3 = new LinkedList<>();
+        listNode3 = (List<PAstAlt>)nodeArrayList3.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -9007,7 +9007,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAstAlt> listNode2 = new LinkedList<>();
+        List<PAstAlt> listNode2 = new LinkedList<>();
         {
             // Block
         PAstAlt pastaltNode1;
@@ -9030,13 +9030,13 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAstAlt> listNode3 = new LinkedList<>();
+        List<PAstAlt> listNode3 = new LinkedList<>();
         {
             // Block
         PAstAlt pastaltNode1;
-        LinkedList<PAstAlt> listNode2 = new LinkedList<>();
+        List<PAstAlt> listNode2 = new LinkedList<>();
         pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
-        listNode2 = (LinkedList<PAstAlt>)nodeArrayList2.get(0);
+        listNode2 = (List<PAstAlt>)nodeArrayList2.get(0);
         if(pastaltNode1 != null)
         {
             listNode3.add(pastaltNode1);
@@ -9122,11 +9122,11 @@ public class Parser implements IParser
         PAstAlt pastaltNode1;
         {
             // Block
-        LinkedList<PElem> listNode4 = new LinkedList<>();
+        List<PElem> listNode4 = new LinkedList<>();
         {
             // Block
-        LinkedList<PElem> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PElem>)nodeArrayList1.get(0);
+        List<PElem> listNode3 = new LinkedList<>();
+        listNode3 = (List<PElem>)nodeArrayList1.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -9156,12 +9156,12 @@ public class Parser implements IParser
         {
             // Block
         TId tidNode2;
-        LinkedList<PElem> listNode4 = new LinkedList<>();
+        List<PElem> listNode4 = new LinkedList<>();
         tidNode2 = (TId)nodeArrayList1.get(0);
         {
             // Block
-        LinkedList<PElem> listNode3 = new LinkedList<>();
-        listNode3 = (LinkedList<PElem>)nodeArrayList2.get(0);
+        List<PElem> listNode3 = new LinkedList<>();
+        listNode3 = (List<PElem>)nodeArrayList2.get(0);
         if(listNode3 != null)
         {
             if(!listNode4.isEmpty()){
@@ -9186,7 +9186,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TPkgId> listNode2 = new LinkedList<>();
+        List<TPkgId> listNode2 = new LinkedList<>();
         {
             // Block
         TPkgId tpkgidNode1;
@@ -9209,12 +9209,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TPkgId> listNode3 = new LinkedList<>();
+        List<TPkgId> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<TPkgId> listNode1 = new LinkedList<>();
+        List<TPkgId> listNode1 = new LinkedList<>();
         TPkgId tpkgidNode2;
-        listNode1 = (LinkedList<TPkgId>)nodeArrayList1.get(0);
+        listNode1 = (List<TPkgId>)nodeArrayList1.get(0);
         tpkgidNode2 = (TPkgId)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9241,7 +9241,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PHelperDef> listNode2 = new LinkedList<>();
+        List<PHelperDef> listNode2 = new LinkedList<>();
         {
             // Block
         PHelperDef phelperdefNode1;
@@ -9264,12 +9264,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PHelperDef> listNode3 = new LinkedList<>();
+        List<PHelperDef> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PHelperDef> listNode1 = new LinkedList<>();
+        List<PHelperDef> listNode1 = new LinkedList<>();
         PHelperDef phelperdefNode2;
-        listNode1 = (LinkedList<PHelperDef>)nodeArrayList1.get(0);
+        listNode1 = (List<PHelperDef>)nodeArrayList1.get(0);
         phelperdefNode2 = (PHelperDef)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9296,7 +9296,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TId> listNode2 = new LinkedList<>();
+        List<TId> listNode2 = new LinkedList<>();
         {
             // Block
         TId tidNode1;
@@ -9319,12 +9319,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<TId> listNode3 = new LinkedList<>();
+        List<TId> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<TId> listNode1 = new LinkedList<>();
+        List<TId> listNode1 = new LinkedList<>();
         TId tidNode2;
-        listNode1 = (LinkedList<TId>)nodeArrayList1.get(0);
+        listNode1 = (List<TId>)nodeArrayList1.get(0);
         tidNode2 = (TId)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9351,7 +9351,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTokenDef> listNode2 = new LinkedList<>();
+        List<PTokenDef> listNode2 = new LinkedList<>();
         {
             // Block
         PTokenDef ptokendefNode1;
@@ -9374,12 +9374,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTokenDef> listNode3 = new LinkedList<>();
+        List<PTokenDef> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PTokenDef> listNode1 = new LinkedList<>();
+        List<PTokenDef> listNode1 = new LinkedList<>();
         PTokenDef ptokendefNode2;
-        listNode1 = (LinkedList<PTokenDef>)nodeArrayList1.get(0);
+        listNode1 = (List<PTokenDef>)nodeArrayList1.get(0);
         ptokendefNode2 = (PTokenDef)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9406,7 +9406,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PStateListTail> listNode2 = new LinkedList<>();
+        List<PStateListTail> listNode2 = new LinkedList<>();
         {
             // Block
         PStateListTail pstatelisttailNode1;
@@ -9429,12 +9429,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PStateListTail> listNode3 = new LinkedList<>();
+        List<PStateListTail> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PStateListTail> listNode1 = new LinkedList<>();
+        List<PStateListTail> listNode1 = new LinkedList<>();
         PStateListTail pstatelisttailNode2;
-        listNode1 = (LinkedList<PStateListTail>)nodeArrayList1.get(0);
+        listNode1 = (List<PStateListTail>)nodeArrayList1.get(0);
         pstatelisttailNode2 = (PStateListTail)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9461,7 +9461,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PConcat> listNode2 = new LinkedList<>();
+        List<PConcat> listNode2 = new LinkedList<>();
         {
             // Block
         PConcat pconcatNode1;
@@ -9484,12 +9484,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PConcat> listNode3 = new LinkedList<>();
+        List<PConcat> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PConcat> listNode1 = new LinkedList<>();
+        List<PConcat> listNode1 = new LinkedList<>();
         PConcat pconcatNode2;
-        listNode1 = (LinkedList<PConcat>)nodeArrayList1.get(0);
+        listNode1 = (List<PConcat>)nodeArrayList1.get(0);
         pconcatNode2 = (PConcat)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9516,7 +9516,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PUnExp> listNode2 = new LinkedList<>();
+        List<PUnExp> listNode2 = new LinkedList<>();
         {
             // Block
         PUnExp punexpNode1;
@@ -9539,12 +9539,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PUnExp> listNode3 = new LinkedList<>();
+        List<PUnExp> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PUnExp> listNode1 = new LinkedList<>();
+        List<PUnExp> listNode1 = new LinkedList<>();
         PUnExp punexpNode2;
-        listNode1 = (LinkedList<PUnExp>)nodeArrayList1.get(0);
+        listNode1 = (List<PUnExp>)nodeArrayList1.get(0);
         punexpNode2 = (PUnExp)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9571,7 +9571,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PProd> listNode2 = new LinkedList<>();
+        List<PProd> listNode2 = new LinkedList<>();
         {
             // Block
         PProd pprodNode1;
@@ -9594,12 +9594,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PProd> listNode3 = new LinkedList<>();
+        List<PProd> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PProd> listNode1 = new LinkedList<>();
+        List<PProd> listNode1 = new LinkedList<>();
         PProd pprodNode2;
-        listNode1 = (LinkedList<PProd>)nodeArrayList1.get(0);
+        listNode1 = (List<PProd>)nodeArrayList1.get(0);
         pprodNode2 = (PProd)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9626,7 +9626,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PElem> listNode2 = new LinkedList<>();
+        List<PElem> listNode2 = new LinkedList<>();
         {
             // Block
         PElem pelemNode1;
@@ -9649,12 +9649,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PElem> listNode3 = new LinkedList<>();
+        List<PElem> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PElem> listNode1 = new LinkedList<>();
+        List<PElem> listNode1 = new LinkedList<>();
         PElem pelemNode2;
-        listNode1 = (LinkedList<PElem>)nodeArrayList1.get(0);
+        listNode1 = (List<PElem>)nodeArrayList1.get(0);
         pelemNode2 = (PElem)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9681,7 +9681,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAlt> listNode2 = new LinkedList<>();
+        List<PAlt> listNode2 = new LinkedList<>();
         {
             // Block
         PAlt paltNode1;
@@ -9704,12 +9704,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAlt> listNode3 = new LinkedList<>();
+        List<PAlt> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PAlt> listNode1 = new LinkedList<>();
+        List<PAlt> listNode1 = new LinkedList<>();
         PAlt paltNode2;
-        listNode1 = (LinkedList<PAlt>)nodeArrayList1.get(0);
+        listNode1 = (List<PAlt>)nodeArrayList1.get(0);
         paltNode2 = (PAlt)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9736,7 +9736,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTerm> listNode2 = new LinkedList<>();
+        List<PTerm> listNode2 = new LinkedList<>();
         {
             // Block
         PTerm ptermNode1;
@@ -9759,12 +9759,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTerm> listNode3 = new LinkedList<>();
+        List<PTerm> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PTerm> listNode1 = new LinkedList<>();
+        List<PTerm> listNode1 = new LinkedList<>();
         PTerm ptermNode2;
-        listNode1 = (LinkedList<PTerm>)nodeArrayList1.get(0);
+        listNode1 = (List<PTerm>)nodeArrayList1.get(0);
         ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9791,7 +9791,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PListTerm> listNode2 = new LinkedList<>();
+        List<PListTerm> listNode2 = new LinkedList<>();
         {
             // Block
         PListTerm plisttermNode1;
@@ -9814,12 +9814,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PListTerm> listNode3 = new LinkedList<>();
+        List<PListTerm> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PListTerm> listNode1 = new LinkedList<>();
+        List<PListTerm> listNode1 = new LinkedList<>();
         PListTerm plisttermNode2;
-        listNode1 = (LinkedList<PListTerm>)nodeArrayList1.get(0);
+        listNode1 = (List<PListTerm>)nodeArrayList1.get(0);
         plisttermNode2 = (PListTerm)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9846,7 +9846,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTerm> listNode2 = new LinkedList<>();
+        List<PTerm> listNode2 = new LinkedList<>();
         {
             // Block
         PTerm ptermNode1;
@@ -9869,12 +9869,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PTerm> listNode3 = new LinkedList<>();
+        List<PTerm> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PTerm> listNode1 = new LinkedList<>();
+        List<PTerm> listNode1 = new LinkedList<>();
         PTerm ptermNode2;
-        listNode1 = (LinkedList<PTerm>)nodeArrayList1.get(0);
+        listNode1 = (List<PTerm>)nodeArrayList1.get(0);
         ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9901,7 +9901,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAstProd> listNode2 = new LinkedList<>();
+        List<PAstProd> listNode2 = new LinkedList<>();
         {
             // Block
         PAstProd pastprodNode1;
@@ -9924,12 +9924,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAstProd> listNode3 = new LinkedList<>();
+        List<PAstProd> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PAstProd> listNode1 = new LinkedList<>();
+        List<PAstProd> listNode1 = new LinkedList<>();
         PAstProd pastprodNode2;
-        listNode1 = (LinkedList<PAstProd>)nodeArrayList1.get(0);
+        listNode1 = (List<PAstProd>)nodeArrayList1.get(0);
         pastprodNode2 = (PAstProd)nodeArrayList2.get(0);
         if(listNode1 != null)
         {
@@ -9956,7 +9956,7 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAstAlt> listNode2 = new LinkedList<>();
+        List<PAstAlt> listNode2 = new LinkedList<>();
         {
             // Block
         PAstAlt pastaltNode1;
@@ -9979,12 +9979,12 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        LinkedList<PAstAlt> listNode3 = new LinkedList<>();
+        List<PAstAlt> listNode3 = new LinkedList<>();
         {
             // Block
-        LinkedList<PAstAlt> listNode1 = new LinkedList<>();
+        List<PAstAlt> listNode1 = new LinkedList<>();
         PAstAlt pastaltNode2;
-        listNode1 = (LinkedList<PAstAlt>)nodeArrayList1.get(0);
+        listNode1 = (List<PAstAlt>)nodeArrayList1.get(0);
         pastaltNode2 = (PAstAlt)nodeArrayList2.get(0);
         if(listNode1 != null)
         {