diff --git a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index b5a4a696d15a494437e1e2c5df479556ab0231e4..2b10aac53f74a8fb194b35bf45600c0fde402ec8 100644
--- a/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/main/java/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -124,35 +124,6 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
       return typeName;
     }
   }
-  
-  private void generateVariableDeclaration(Node term) throws IOException {
-    String typeName = lookupInternalTypeName(term);
-
-    if("null".equals(typeName) || "Lnull".equals(typeName))
-    {
-      // No intermediate variable needed for null or empty list arguments
-      return;
-    }
-
-    macros.apply(file, "ParserVariableDeclaration", new String[] {variableTypeFromInternalType(typeName), getVariableName(term)});
-  }
-
-  @Override
-  public void inAAltTransform(AAltTransform node)
-  {
-    for(PTerm term : node.getTerms())
-    {
-      try
-      {
-        generateVariableDeclaration(term);
-      }
-      catch(IOException e)
-      {
-        throw new RuntimeException("An error occured while writing to " +
-                                   new File(pkgDir, "Parser.java").getAbsolutePath(), e);
-      }
-    }
-  }
 
   @Override
   public void outAAltTransform(AAltTransform node)
@@ -220,8 +191,9 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
 
       macros.apply(file, "ParserSimpleTerm", new String[]
                    {
+                     variableTypeFromInternalType(type_name),
                      getVariableName(node),
-                     variableTypeFromInternalType(type_name), ""+elemPosition, ""+positionMap
+                     ""+elemPosition, ""+positionMap
                    }
                   );
     }
@@ -257,7 +229,6 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     {
       for(PListTerm listTerm : node.getListTerms())
       {
-        generateVariableDeclaration(listTerm);
         listTerm.apply(this);
       }
 
@@ -287,15 +258,21 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
       assert firstNonNullListTerm != null;
       assert firstNonNullTypeName != null;
 
+      String destType = lookupInternalTypeName(node);
+
       if(nonNullTermsCount == 1)
       {
         if(firstNonNullTypeName.startsWith("L"))
         {
-          macros.apply(file, "ParserTypedListAssign", new String[] {getVariableName(node), getVariableName(firstNonNullListTerm)});
+          macros.apply(file, "ParserTypedListAssign", new String[] {
+            variableTypeFromInternalType(destType), getVariableName(node), getVariableName(firstNonNullListTerm),
+          });
         }
         else
         {
-          macros.apply(file, "ParserTypedSingleElementList", new String[] {getVariableName(node), getVariableName(firstNonNullListTerm)});
+          macros.apply(file, "ParserTypedSingleElementList", new String[] {
+            variableTypeFromInternalType(destType), getVariableName(node), getVariableName(firstNonNullListTerm),
+          });
         }
       }
       else
@@ -314,7 +291,9 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
           {
             if(first)
             {
-              macros.apply(file, "ParserTypedLinkedListInitAddAll", new String[] {getVariableName(node), getVariableName(listTerm)});
+              macros.apply(file, "ParserTypedLinkedListInitAddAll", new String[] {
+                variableTypeFromInternalType(destType), getVariableName(node), getVariableName(listTerm),
+              });
             }
             else
             {
@@ -325,7 +304,9 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
           {
             if(first)
             {
-              macros.apply(file, "ParserTypedLinkedListInit", new String[] {getVariableName(node)});
+              macros.apply(file, "ParserTypedLinkedListInit", new String[] {
+                variableTypeFromInternalType(destType), getVariableName(node),
+              });
             }
             macros.apply(file, "ParserTypedLinkedListAdd", new String[] {getVariableName(node), getVariableName(listTerm)});
           }
@@ -346,17 +327,12 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
 
     try
     {
-      for(PTerm term : params)
-      {
-        generateVariableDeclaration(term);
-      }
-      
       for(PTerm param : params)
       {
         param.apply(this);
       }
 
-      macros.apply(file, "ParserNewBodyNew", new String[] {getVariableName(node), newAltName});
+      macros.apply(file, "ParserNewBodyNew", new String[] {newAltName, getVariableName(node)});
 
       if(!params.isEmpty())
       {
diff --git a/src/main/java/org/sablecc/sablecc/parser/Parser.java b/src/main/java/org/sablecc/sablecc/parser/Parser.java
index a31f6a72ad5a79e5c7cdbfb9a95aff59a7aba82e..b54817913f6dc12d2907184aec1e91f2ce3d3b70 100644
--- a/src/main/java/org/sablecc/sablecc/parser/Parser.java
+++ b/src/main/java/org/sablecc/sablecc/parser/Parser.java
@@ -1861,9 +1861,8 @@ public class Parser implements IParser
     {
         List<Object> nodeList = new ArrayList<>();
 
-        PGrammar pgrammarNode1;
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, null, null);
         nodeList.add(pgrammarNode1);
         return nodeList;
     }
@@ -1875,13 +1874,10 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -1894,11 +1890,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -1912,15 +1906,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -1933,11 +1923,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -1951,15 +1939,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -1973,13 +1957,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -1994,17 +1975,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2017,11 +1993,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -2035,15 +2009,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2057,13 +2027,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2078,17 +2045,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2102,13 +2064,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2123,17 +2082,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2148,15 +2102,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2172,19 +2122,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2197,11 +2141,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PIgnTokens pigntokensNode6;
-        pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -2215,15 +2157,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2237,13 +2175,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PIgnTokens pigntokensNode6;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2258,17 +2193,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2282,13 +2212,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2303,17 +2230,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2328,15 +2250,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2352,19 +2270,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2378,13 +2290,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2399,17 +2308,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2424,15 +2328,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2448,19 +2348,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2475,15 +2369,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2499,19 +2389,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2527,17 +2411,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2554,21 +2433,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -2581,11 +2453,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PProductions pproductionsNode7;
-        pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -2599,15 +2469,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pproductionsNode8 = (PProductions)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2621,13 +2487,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2642,17 +2505,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2666,13 +2524,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PProductions pproductionsNode7;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2687,17 +2542,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2712,15 +2562,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2736,19 +2582,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2762,13 +2602,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2783,17 +2620,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2808,15 +2640,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2832,19 +2660,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2859,15 +2681,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -2883,19 +2701,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2911,17 +2723,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -2938,21 +2745,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -2966,13 +2766,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -2987,17 +2784,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3012,15 +2804,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3036,19 +2824,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3063,15 +2845,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3087,19 +2865,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3115,17 +2887,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3142,21 +2909,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -3171,15 +2931,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3195,19 +2951,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3223,17 +2973,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3250,21 +2995,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -3280,17 +3018,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3307,21 +3040,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -3338,19 +3064,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList5.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -3368,23 +3088,15 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList6.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -3397,11 +3109,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PAst pastNode8;
-        pastNode8 = (PAst)nodeArrayList1.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList1.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -3415,15 +3125,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pastNode9 = (PAst)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PAst pastNode9 = (PAst)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -3437,13 +3143,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pastNode8 = (PAst)nodeArrayList2.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -3458,17 +3161,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pastNode9 = (PAst)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3482,13 +3180,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pastNode8 = (PAst)nodeArrayList2.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -3503,17 +3198,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pastNode9 = (PAst)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3528,15 +3218,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3552,19 +3238,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3578,13 +3258,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PAst pastNode8;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pastNode8 = (PAst)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -3599,17 +3276,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pastNode9 = (PAst)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3624,15 +3296,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3648,19 +3316,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3675,15 +3337,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3699,19 +3357,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3727,17 +3379,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3754,21 +3401,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -3782,13 +3422,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
-        pastNode8 = (PAst)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -3803,17 +3440,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
-        pastNode9 = (PAst)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3828,15 +3460,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3852,19 +3480,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3879,15 +3501,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -3903,19 +3521,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3931,17 +3543,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -3958,21 +3565,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -3987,15 +3587,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -4011,19 +3607,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4039,17 +3629,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4066,21 +3651,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4096,17 +3674,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4123,21 +3696,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4154,19 +3720,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
-        pastNode8 = (PAst)nodeArrayList5.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4184,23 +3744,15 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
-        pastNode9 = (PAst)nodeArrayList6.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -4214,13 +3766,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
-        pastNode8 = (PAst)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList2.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -4235,17 +3784,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pproductionsNode8 = (PProductions)nodeArrayList2.get(0);
-        pastNode9 = (PAst)nodeArrayList3.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList2.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -4260,15 +3804,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -4284,19 +3824,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4311,15 +3845,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -4335,19 +3865,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4363,17 +3887,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4390,21 +3909,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4419,15 +3931,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -4443,19 +3951,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4471,17 +3973,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4498,21 +3995,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4528,17 +4018,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4555,21 +4040,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4586,19 +4064,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
-        pastNode8 = (PAst)nodeArrayList5.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4616,23 +4088,15 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
-        pastNode9 = (PAst)nodeArrayList6.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -4647,15 +4111,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
-        pastNode8 = (PAst)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList3.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -4671,19 +4131,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
-        pastNode9 = (PAst)nodeArrayList4.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4699,17 +4153,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4726,21 +4175,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4756,17 +4198,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4783,21 +4220,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4814,19 +4244,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
-        pastNode8 = (PAst)nodeArrayList5.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4844,23 +4268,15 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
-        pastNode9 = (PAst)nodeArrayList6.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -4876,17 +4292,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
-        pastNode8 = (PAst)nodeArrayList4.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList4.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -4903,21 +4314,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        ptokensNode6 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
-        pastNode9 = (PAst)nodeArrayList5.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PTokens ptokensNode6 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4934,19 +4338,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
-        pastNode8 = (PAst)nodeArrayList5.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -4964,23 +4362,15 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
-        pastNode9 = (PAst)nodeArrayList6.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -4997,19 +4387,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        pstatesNode4 = (PStates)nodeArrayList1.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList2.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
-        pastNode8 = (PAst)nodeArrayList5.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList1.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList2.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList4.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList5.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -5027,23 +4411,15 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        pstatesNode5 = (PStates)nodeArrayList2.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
-        pastNode9 = (PAst)nodeArrayList6.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PStates pstatesNode5 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList5.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -5061,21 +4437,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        PHelpers phelpersNode3;
-        PStates pstatesNode4;
-        PTokens ptokensNode5;
-        PIgnTokens pigntokensNode6;
-        PProductions pproductionsNode7;
-        PAst pastNode8;
-        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
-        pstatesNode4 = (PStates)nodeArrayList2.get(0);
-        ptokensNode5 = (PTokens)nodeArrayList3.get(0);
-        pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
-        pproductionsNode7 = (PProductions)nodeArrayList5.get(0);
-        pastNode8 = (PAst)nodeArrayList6.get(0);
+        PHelpers phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+        PStates pstatesNode4 = (PStates)nodeArrayList2.get(0);
+        PTokens ptokensNode5 = (PTokens)nodeArrayList3.get(0);
+        PIgnTokens pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);
+        PProductions pproductionsNode7 = (PProductions)nodeArrayList5.get(0);
+        PAst pastNode8 = (PAst)nodeArrayList6.get(0);
 
-        pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
+        AGrammar pgrammarNode1 = new AGrammar(Collections.EMPTY_LIST, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -5094,25 +4463,16 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PGrammar pgrammarNode1;
-        List<TPkgId> listNode3;
-        PHelpers phelpersNode4;
-        PStates pstatesNode5;
-        PTokens ptokensNode6;
-        PIgnTokens pigntokensNode7;
-        PProductions pproductionsNode8;
-        PAst pastNode9;
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
-        phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
-        pstatesNode5 = (PStates)nodeArrayList3.get(0);
-        ptokensNode6 = (PTokens)nodeArrayList4.get(0);
-        pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
-        pproductionsNode8 = (PProductions)nodeArrayList6.get(0);
-        pastNode9 = (PAst)nodeArrayList7.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList1.get(0);
+        List<TPkgId> listNode3 = listNode2;
+        PHelpers phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
+        PStates pstatesNode5 = (PStates)nodeArrayList3.get(0);
+        PTokens ptokensNode6 = (PTokens)nodeArrayList4.get(0);
+        PIgnTokens pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);
+        PProductions pproductionsNode8 = (PProductions)nodeArrayList6.get(0);
+        PAst pastNode9 = (PAst)nodeArrayList7.get(0);
 
-        pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
+        AGrammar pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
         nodeList.add(pgrammarNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList7);
         return nodeList;
@@ -5126,10 +4486,8 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<TPkgId> listNode2;
-        List<TPkgId> listNode1;
-        listNode1 = (List<TPkgId>)nodeArrayList2.get(0);
-        listNode2 = listNode1;
+        List<TPkgId> listNode1 = (List<TPkgId>)nodeArrayList2.get(0);
+        List<TPkgId> listNode2 = listNode1;
         nodeList.add(listNode2);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5143,9 +4501,8 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        TPkgId tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
         List<TPkgId> listNode2;
-        TPkgId tpkgidNode1;
-        tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
         if(tpkgidNode1 != null) {
             listNode2 = Collections.singletonList(tpkgidNode1);
         } else {
@@ -5165,12 +4522,9 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<TPkgId> listNode3;
-        TPkgId tpkgidNode1;
-        tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
-        List<TPkgId> listNode2;
-        listNode2 = (List<TPkgId>)nodeArrayList2.get(0);
-        listNode3 = new LinkedList<>();
+        TPkgId tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
+        List<TPkgId> listNode2 = (List<TPkgId>)nodeArrayList2.get(0);
+        List<TPkgId> listNode3 = new LinkedList<>();
         if(tpkgidNode1 != null)
         {
             listNode3.add(tpkgidNode1);
@@ -5193,8 +4547,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TPkgId tpkgidNode1;
-        tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
+        TPkgId tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
         nodeList.add(tpkgidNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5208,13 +4561,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PHelpers phelpersNode1;
-        List<PHelperDef> listNode3;
-        List<PHelperDef> listNode2;
-        listNode2 = (List<PHelperDef>)nodeArrayList2.get(0);
-        listNode3 = listNode2;
+        List<PHelperDef> listNode2 = (List<PHelperDef>)nodeArrayList2.get(0);
+        List<PHelperDef> listNode3 = listNode2;
 
-        phelpersNode1 = new AHelpers(listNode3);
+        AHelpers phelpersNode1 = new AHelpers(listNode3);
         nodeList.add(phelpersNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5230,13 +4580,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PHelperDef phelperdefNode1;
-        TId tidNode2;
-        PRegExp pregexpNode3;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        pregexpNode3 = (PRegExp)nodeArrayList3.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        PRegExp pregexpNode3 = (PRegExp)nodeArrayList3.get(0);
 
-        phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
+        AHelperDef phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
         nodeList.add(phelperdefNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -5251,13 +4598,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStates pstatesNode1;
-        List<TId> listNode3;
-        List<TId> listNode2;
-        listNode2 = (List<TId>)nodeArrayList2.get(0);
-        listNode3 = listNode2;
+        List<TId> listNode2 = (List<TId>)nodeArrayList2.get(0);
+        List<TId> listNode3 = listNode2;
 
-        pstatesNode1 = new AStates(listNode3);
+        AStates pstatesNode1 = new AStates(listNode3);
         nodeList.add(pstatesNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -5270,9 +4614,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        TId tidNode1 = (TId)nodeArrayList1.get(0);
         List<TId> listNode2;
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList1.get(0);
         if(tidNode1 != null) {
             listNode2 = Collections.singletonList(tidNode1);
         } else {
@@ -5291,12 +4634,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<TId> listNode3;
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList1.get(0);
-        List<TId> listNode2;
-        listNode2 = (List<TId>)nodeArrayList2.get(0);
-        listNode3 = new LinkedList<>();
+        TId tidNode1 = (TId)nodeArrayList1.get(0);
+        List<TId> listNode2 = (List<TId>)nodeArrayList2.get(0);
+        List<TId> listNode3 = new LinkedList<>();
         if(tidNode1 != null)
         {
             listNode3.add(tidNode1);
@@ -5319,8 +4659,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList2.get(0);
+        TId tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5334,13 +4673,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTokens ptokensNode1;
-        List<PTokenDef> listNode3;
-        List<PTokenDef> listNode2;
-        listNode2 = (List<PTokenDef>)nodeArrayList2.get(0);
-        listNode3 = listNode2;
+        List<PTokenDef> listNode2 = (List<PTokenDef>)nodeArrayList2.get(0);
+        List<PTokenDef> listNode3 = listNode2;
 
-        ptokensNode1 = new ATokens(listNode3);
+        ATokens ptokensNode1 = new ATokens(listNode3);
         nodeList.add(ptokensNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5356,13 +4692,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTokenDef ptokendefNode1;
-        TId tidNode3;
-        PRegExp pregexpNode4;
-        tidNode3 = (TId)nodeArrayList1.get(0);
-        pregexpNode4 = (PRegExp)nodeArrayList3.get(0);
+        TId tidNode3 = (TId)nodeArrayList1.get(0);
+        PRegExp pregexpNode4 = (PRegExp)nodeArrayList3.get(0);
 
-        ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, null, null);
+        ATokenDef ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, null, null);
         nodeList.add(ptokendefNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -5379,15 +4712,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTokenDef ptokendefNode1;
-        PStateList pstatelistNode2;
-        TId tidNode3;
-        PRegExp pregexpNode4;
-        pstatelistNode2 = (PStateList)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
-        pregexpNode4 = (PRegExp)nodeArrayList4.get(0);
+        PStateList pstatelistNode2 = (PStateList)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
+        PRegExp pregexpNode4 = (PRegExp)nodeArrayList4.get(0);
 
-        ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, null, null);
+        ATokenDef ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, null, null);
         nodeList.add(ptokendefNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -5404,17 +4733,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTokenDef ptokendefNode1;
-        TId tidNode3;
-        PRegExp pregexpNode4;
-        TSlash tslashNode5;
-        PRegExp pregexpNode6;
-        tidNode3 = (TId)nodeArrayList1.get(0);
-        pregexpNode4 = (PRegExp)nodeArrayList3.get(0);
-        tslashNode5 = (TSlash)nodeArrayList4.get(0);
-        pregexpNode6 = (PRegExp)nodeArrayList4.get(1);
+        TId tidNode3 = (TId)nodeArrayList1.get(0);
+        PRegExp pregexpNode4 = (PRegExp)nodeArrayList3.get(0);
+        TSlash tslashNode5 = (TSlash)nodeArrayList4.get(0);
+        PRegExp pregexpNode6 = (PRegExp)nodeArrayList4.get(1);
 
-        ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
+        ATokenDef ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
         nodeList.add(ptokendefNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -5432,19 +4756,13 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTokenDef ptokendefNode1;
-        PStateList pstatelistNode2;
-        TId tidNode3;
-        PRegExp pregexpNode4;
-        TSlash tslashNode5;
-        PRegExp pregexpNode6;
-        pstatelistNode2 = (PStateList)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
-        pregexpNode4 = (PRegExp)nodeArrayList4.get(0);
-        tslashNode5 = (TSlash)nodeArrayList5.get(0);
-        pregexpNode6 = (PRegExp)nodeArrayList5.get(1);
+        PStateList pstatelistNode2 = (PStateList)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
+        PRegExp pregexpNode4 = (PRegExp)nodeArrayList4.get(0);
+        TSlash tslashNode5 = (TSlash)nodeArrayList5.get(0);
+        PRegExp pregexpNode6 = (PRegExp)nodeArrayList5.get(1);
 
-        ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
+        ATokenDef ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
         nodeList.add(ptokendefNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList6);
         return nodeList;
@@ -5459,11 +4777,9 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStateList pstatelistNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList2.get(0);
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
 
-        pstatelistNode1 = new AStateList(tidNode2, null, Collections.EMPTY_LIST);
+        AStateList pstatelistNode1 = new AStateList(tidNode2, null, Collections.EMPTY_LIST);
         nodeList.add(pstatelistNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -5479,13 +4795,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStateList pstatelistNode1;
-        TId tidNode2;
-        PTransition ptransitionNode3;
-        tidNode2 = (TId)nodeArrayList2.get(0);
-        ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
+        PTransition ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
 
-        pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, Collections.EMPTY_LIST);
+        AStateList pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, Collections.EMPTY_LIST);
         nodeList.add(pstatelistNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -5501,15 +4814,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStateList pstatelistNode1;
-        TId tidNode2;
-        List<PStateListTail> listNode5;
-        tidNode2 = (TId)nodeArrayList2.get(0);
-        List<PStateListTail> listNode4;
-        listNode4 = (List<PStateListTail>)nodeArrayList3.get(0);
-        listNode5 = listNode4;
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
+        List<PStateListTail> listNode4 = (List<PStateListTail>)nodeArrayList3.get(0);
+        List<PStateListTail> listNode5 = listNode4;
 
-        pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
+        AStateList pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
         nodeList.add(pstatelistNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -5526,17 +4835,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStateList pstatelistNode1;
-        TId tidNode2;
-        PTransition ptransitionNode3;
-        List<PStateListTail> listNode5;
-        tidNode2 = (TId)nodeArrayList2.get(0);
-        ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
-        List<PStateListTail> listNode4;
-        listNode4 = (List<PStateListTail>)nodeArrayList4.get(0);
-        listNode5 = listNode4;
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
+        PTransition ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+        List<PStateListTail> listNode4 = (List<PStateListTail>)nodeArrayList4.get(0);
+        List<PStateListTail> listNode5 = listNode4;
 
-        pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
+        AStateList pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
         nodeList.add(pstatelistNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -5550,11 +4854,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStateListTail pstatelisttailNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList2.get(0);
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
 
-        pstatelisttailNode1 = new AStateListTail(tidNode2, null);
+        AStateListTail pstatelisttailNode1 = new AStateListTail(tidNode2, null);
         nodeList.add(pstatelisttailNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5569,13 +4871,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PStateListTail pstatelisttailNode1;
-        TId tidNode2;
-        PTransition ptransitionNode3;
-        tidNode2 = (TId)nodeArrayList2.get(0);
-        ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
+        PTransition ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
 
-        pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
+        AStateListTail pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
         nodeList.add(pstatelisttailNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -5589,11 +4888,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTransition ptransitionNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList2.get(0);
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
 
-        ptransitionNode1 = new ATransition(tidNode2);
+        ATransition ptransitionNode1 = new ATransition(tidNode2);
         nodeList.add(ptransitionNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5608,9 +4905,8 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PIgnTokens pigntokensNode1;
 
-        pigntokensNode1 = new AIgnTokens(Collections.EMPTY_LIST);
+        AIgnTokens pigntokensNode1 = new AIgnTokens(Collections.EMPTY_LIST);
         nodeList.add(pigntokensNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -5626,13 +4922,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PIgnTokens pigntokensNode1;
-        List<TId> listNode3;
-        List<TId> listNode2;
-        listNode2 = (List<TId>)nodeArrayList3.get(0);
-        listNode3 = listNode2;
+        List<TId> listNode2 = (List<TId>)nodeArrayList3.get(0);
+        List<TId> listNode3 = listNode2;
 
-        pigntokensNode1 = new AIgnTokens(listNode3);
+        AIgnTokens pigntokensNode1 = new AIgnTokens(listNode3);
         nodeList.add(pigntokensNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -5646,10 +4939,8 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TSlash tslashNode1;
-        PRegExp pregexpNode2;
-        tslashNode1 = (TSlash)nodeArrayList1.get(0);
-        pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
+        TSlash tslashNode1 = (TSlash)nodeArrayList1.get(0);
+        PRegExp pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
         nodeList.add(tslashNode1);
         nodeList.add(pregexpNode2);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
@@ -5663,17 +4954,15 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PRegExp pregexpNode1;
+        PConcat pconcatNode2 = (PConcat)nodeArrayList1.get(0);
         List<PConcat> listNode3;
-        PConcat pconcatNode2;
-        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
         if(pconcatNode2 != null) {
             listNode3 = Collections.singletonList(pconcatNode2);
         } else {
             listNode3 = Collections.emptyList();
         }
 
-        pregexpNode1 = new ARegExp(listNode3);
+        ARegExp pregexpNode1 = new ARegExp(listNode3);
         nodeList.add(pregexpNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5687,13 +4976,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PRegExp pregexpNode1;
-        List<PConcat> listNode4;
-        PConcat pconcatNode2;
-        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
-        List<PConcat> listNode3;
-        listNode3 = (List<PConcat>)nodeArrayList2.get(0);
-        listNode4 = new LinkedList<>();
+        PConcat pconcatNode2 = (PConcat)nodeArrayList1.get(0);
+        List<PConcat> listNode3 = (List<PConcat>)nodeArrayList2.get(0);
+        List<PConcat> listNode4 = new LinkedList<>();
         if(pconcatNode2 != null)
         {
             listNode4.add(pconcatNode2);
@@ -5704,7 +4989,7 @@ public class Parser implements IParser
             listNode4.addAll(listNode3);
         }
 
-        pregexpNode1 = new ARegExp(listNode4);
+        ARegExp pregexpNode1 = new ARegExp(listNode4);
         nodeList.add(pregexpNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5718,8 +5003,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PConcat pconcatNode1;
-        pconcatNode1 = (PConcat)nodeArrayList2.get(0);
+        PConcat pconcatNode1 = (PConcat)nodeArrayList2.get(0);
         nodeList.add(pconcatNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5731,9 +5015,8 @@ public class Parser implements IParser
     {
         List<Object> nodeList = new ArrayList<>();
 
-        PConcat pconcatNode1;
 
-        pconcatNode1 = new AConcat(Collections.EMPTY_LIST);
+        AConcat pconcatNode1 = new AConcat(Collections.EMPTY_LIST);
         nodeList.add(pconcatNode1);
         return nodeList;
     }
@@ -5745,13 +5028,10 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PConcat pconcatNode1;
-        List<PUnExp> listNode3;
-        List<PUnExp> listNode2;
-        listNode2 = (List<PUnExp>)nodeArrayList1.get(0);
-        listNode3 = listNode2;
+        List<PUnExp> listNode2 = (List<PUnExp>)nodeArrayList1.get(0);
+        List<PUnExp> listNode3 = listNode2;
 
-        pconcatNode1 = new AConcat(listNode3);
+        AConcat pconcatNode1 = new AConcat(listNode3);
         nodeList.add(pconcatNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5764,11 +5044,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PUnExp punexpNode1;
-        PBasic pbasicNode2;
-        pbasicNode2 = (PBasic)nodeArrayList1.get(0);
+        PBasic pbasicNode2 = (PBasic)nodeArrayList1.get(0);
 
-        punexpNode1 = new AUnExp(pbasicNode2, null);
+        AUnExp punexpNode1 = new AUnExp(pbasicNode2, null);
         nodeList.add(punexpNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5782,13 +5060,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PUnExp punexpNode1;
-        PBasic pbasicNode2;
-        PUnOp punopNode3;
-        pbasicNode2 = (PBasic)nodeArrayList1.get(0);
-        punopNode3 = (PUnOp)nodeArrayList2.get(0);
+        PBasic pbasicNode2 = (PBasic)nodeArrayList1.get(0);
+        PUnOp punopNode3 = (PUnOp)nodeArrayList2.get(0);
 
-        punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
+        AUnExp punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
         nodeList.add(punexpNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -5801,11 +5076,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PBasic pbasicNode1;
-        PChar pcharNode2;
-        pcharNode2 = (PChar)nodeArrayList1.get(0);
+        PChar pcharNode2 = (PChar)nodeArrayList1.get(0);
 
-        pbasicNode1 = new ACharBasic(pcharNode2);
+        ACharBasic pbasicNode1 = new ACharBasic(pcharNode2);
         nodeList.add(pbasicNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5818,11 +5091,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PBasic pbasicNode1;
-        PSet psetNode2;
-        psetNode2 = (PSet)nodeArrayList1.get(0);
+        PSet psetNode2 = (PSet)nodeArrayList1.get(0);
 
-        pbasicNode1 = new ASetBasic(psetNode2);
+        ASetBasic pbasicNode1 = new ASetBasic(psetNode2);
         nodeList.add(pbasicNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5835,11 +5106,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PBasic pbasicNode1;
-        TString tstringNode2;
-        tstringNode2 = (TString)nodeArrayList1.get(0);
+        TString tstringNode2 = (TString)nodeArrayList1.get(0);
 
-        pbasicNode1 = new AStringBasic(tstringNode2);
+        AStringBasic pbasicNode1 = new AStringBasic(tstringNode2);
         nodeList.add(pbasicNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5852,11 +5121,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PBasic pbasicNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
 
-        pbasicNode1 = new AIdBasic(tidNode2);
+        AIdBasic pbasicNode1 = new AIdBasic(tidNode2);
         nodeList.add(pbasicNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5871,11 +5138,9 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PBasic pbasicNode1;
-        PRegExp pregexpNode2;
-        pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
+        PRegExp pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
 
-        pbasicNode1 = new ARegExpBasic(pregexpNode2);
+        ARegExpBasic pbasicNode1 = new ARegExpBasic(pregexpNode2);
         nodeList.add(pbasicNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -5888,11 +5153,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PChar pcharNode1;
-        TChar tcharNode2;
-        tcharNode2 = (TChar)nodeArrayList1.get(0);
+        TChar tcharNode2 = (TChar)nodeArrayList1.get(0);
 
-        pcharNode1 = new ACharChar(tcharNode2);
+        ACharChar pcharNode1 = new ACharChar(tcharNode2);
         nodeList.add(pcharNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5905,11 +5168,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PChar pcharNode1;
-        TDecChar tdeccharNode2;
-        tdeccharNode2 = (TDecChar)nodeArrayList1.get(0);
+        TDecChar tdeccharNode2 = (TDecChar)nodeArrayList1.get(0);
 
-        pcharNode1 = new ADecChar(tdeccharNode2);
+        ADecChar pcharNode1 = new ADecChar(tdeccharNode2);
         nodeList.add(pcharNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5922,11 +5183,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PChar pcharNode1;
-        THexChar thexcharNode2;
-        thexcharNode2 = (THexChar)nodeArrayList1.get(0);
+        THexChar thexcharNode2 = (THexChar)nodeArrayList1.get(0);
 
-        pcharNode1 = new AHexChar(thexcharNode2);
+        AHexChar pcharNode1 = new AHexChar(thexcharNode2);
         nodeList.add(pcharNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -5943,15 +5202,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PSet psetNode1;
-        PBasic pbasicNode2;
-        PBinOp pbinopNode3;
-        PBasic pbasicNode4;
-        pbasicNode2 = (PBasic)nodeArrayList2.get(0);
-        pbinopNode3 = (PBinOp)nodeArrayList3.get(0);
-        pbasicNode4 = (PBasic)nodeArrayList4.get(0);
+        PBasic pbasicNode2 = (PBasic)nodeArrayList2.get(0);
+        PBinOp pbinopNode3 = (PBinOp)nodeArrayList3.get(0);
+        PBasic pbasicNode4 = (PBasic)nodeArrayList4.get(0);
 
-        psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
+        AOperationSet psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
         nodeList.add(psetNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -5968,13 +5223,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PSet psetNode1;
-        PChar pcharNode2;
-        PChar pcharNode3;
-        pcharNode2 = (PChar)nodeArrayList2.get(0);
-        pcharNode3 = (PChar)nodeArrayList4.get(0);
+        PChar pcharNode2 = (PChar)nodeArrayList2.get(0);
+        PChar pcharNode3 = (PChar)nodeArrayList4.get(0);
 
-        psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
+        AIntervalSet psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
         nodeList.add(psetNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -5987,11 +5239,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PUnOp punopNode1;
-        TStar tstarNode2;
-        tstarNode2 = (TStar)nodeArrayList1.get(0);
+        TStar tstarNode2 = (TStar)nodeArrayList1.get(0);
 
-        punopNode1 = new AStarUnOp(tstarNode2);
+        AStarUnOp punopNode1 = new AStarUnOp(tstarNode2);
         nodeList.add(punopNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6004,11 +5254,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PUnOp punopNode1;
-        TQMark tqmarkNode2;
-        tqmarkNode2 = (TQMark)nodeArrayList1.get(0);
+        TQMark tqmarkNode2 = (TQMark)nodeArrayList1.get(0);
 
-        punopNode1 = new AQMarkUnOp(tqmarkNode2);
+        AQMarkUnOp punopNode1 = new AQMarkUnOp(tqmarkNode2);
         nodeList.add(punopNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6021,11 +5269,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PUnOp punopNode1;
-        TPlus tplusNode2;
-        tplusNode2 = (TPlus)nodeArrayList1.get(0);
+        TPlus tplusNode2 = (TPlus)nodeArrayList1.get(0);
 
-        punopNode1 = new APlusUnOp(tplusNode2);
+        APlusUnOp punopNode1 = new APlusUnOp(tplusNode2);
         nodeList.add(punopNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6038,9 +5284,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PBinOp pbinopNode1;
 
-        pbinopNode1 = new APlusBinOp();
+        APlusBinOp pbinopNode1 = new APlusBinOp();
         nodeList.add(pbinopNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6053,9 +5298,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PBinOp pbinopNode1;
 
-        pbinopNode1 = new AMinusBinOp();
+        AMinusBinOp pbinopNode1 = new AMinusBinOp();
         nodeList.add(pbinopNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6069,13 +5313,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PProductions pproductionsNode1;
-        List<PProd> listNode3;
-        List<PProd> listNode2;
-        listNode2 = (List<PProd>)nodeArrayList2.get(0);
-        listNode3 = listNode2;
+        List<PProd> listNode2 = (List<PProd>)nodeArrayList2.get(0);
+        List<PProd> listNode3 = listNode2;
 
-        pproductionsNode1 = new AProductions(listNode3);
+        AProductions pproductionsNode1 = new AProductions(listNode3);
         nodeList.add(pproductionsNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6091,15 +5332,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PProd pprodNode1;
-        TId tidNode2;
-        List<PAlt> listNode6;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        List<PAlt> listNode5;
-        listNode5 = (List<PAlt>)nodeArrayList3.get(0);
-        listNode6 = listNode5;
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        List<PAlt> listNode5 = (List<PAlt>)nodeArrayList3.get(0);
+        List<PAlt> listNode6 = listNode5;
 
-        pprodNode1 = new AProd(tidNode2, null, Collections.EMPTY_LIST, listNode6);
+        AProd pprodNode1 = new AProd(tidNode2, null, Collections.EMPTY_LIST, listNode6);
         nodeList.add(pprodNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -6116,21 +5353,14 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PProd pprodNode1;
-        TId tidNode2;
-        TArrow tarrowNode3;
-        List<PElem> listNode5;
-        List<PAlt> listNode7;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        tarrowNode3 = (TArrow)nodeArrayList2.get(0);
-        List<PElem> listNode4;
-        listNode4 = (List<PElem>)nodeArrayList2.get(1);
-        listNode5 = listNode4;
-        List<PAlt> listNode6;
-        listNode6 = (List<PAlt>)nodeArrayList4.get(0);
-        listNode7 = listNode6;
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        TArrow tarrowNode3 = (TArrow)nodeArrayList2.get(0);
+        List<PElem> listNode4 = (List<PElem>)nodeArrayList2.get(1);
+        List<PElem> listNode5 = listNode4;
+        List<PAlt> listNode6 = (List<PAlt>)nodeArrayList4.get(0);
+        List<PAlt> listNode7 = listNode6;
 
-        pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
+        AProd pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
         nodeList.add(pprodNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -6145,8 +5375,7 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TArrow tarrowNode1;
-        tarrowNode1 = (TArrow)nodeArrayList2.get(0);
+        TArrow tarrowNode1 = (TArrow)nodeArrayList2.get(0);
         nodeList.add(tarrowNode1);
         nodeList.add(Collections.EMPTY_LIST);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
@@ -6163,12 +5392,9 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TArrow tarrowNode1;
-        List<PElem> listNode3;
-        tarrowNode1 = (TArrow)nodeArrayList2.get(0);
-        List<PElem> listNode2;
-        listNode2 = (List<PElem>)nodeArrayList3.get(0);
-        listNode3 = listNode2;
+        TArrow tarrowNode1 = (TArrow)nodeArrayList2.get(0);
+        List<PElem> listNode2 = (List<PElem>)nodeArrayList3.get(0);
+        List<PElem> listNode3 = listNode2;
         nodeList.add(tarrowNode1);
         nodeList.add(listNode3);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
@@ -6182,9 +5408,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PAlt paltNode1 = (PAlt)nodeArrayList1.get(0);
         List<PAlt> listNode2;
-        PAlt paltNode1;
-        paltNode1 = (PAlt)nodeArrayList1.get(0);
         if(paltNode1 != null) {
             listNode2 = Collections.singletonList(paltNode1);
         } else {
@@ -6203,12 +5428,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<PAlt> listNode3;
-        PAlt paltNode1;
-        paltNode1 = (PAlt)nodeArrayList1.get(0);
-        List<PAlt> listNode2;
-        listNode2 = (List<PAlt>)nodeArrayList2.get(0);
-        listNode3 = new LinkedList<>();
+        PAlt paltNode1 = (PAlt)nodeArrayList1.get(0);
+        List<PAlt> listNode2 = (List<PAlt>)nodeArrayList2.get(0);
+        List<PAlt> listNode3 = new LinkedList<>();
         if(paltNode1 != null)
         {
             listNode3.add(paltNode1);
@@ -6231,8 +5453,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        paltNode1 = (PAlt)nodeArrayList2.get(0);
+        PAlt paltNode1 = (PAlt)nodeArrayList2.get(0);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6244,9 +5465,8 @@ public class Parser implements IParser
     {
         List<Object> nodeList = new ArrayList<>();
 
-        PAlt paltNode1;
 
-        paltNode1 = new AAlt(null, Collections.EMPTY_LIST, null);
+        AAlt paltNode1 = new AAlt(null, Collections.EMPTY_LIST, null);
         nodeList.add(paltNode1);
         return nodeList;
     }
@@ -6258,11 +5478,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
 
-        paltNode1 = new AAlt(tidNode2, Collections.EMPTY_LIST, null);
+        AAlt paltNode1 = new AAlt(tidNode2, Collections.EMPTY_LIST, null);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6275,13 +5493,10 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        List<PElem> listNode4;
-        List<PElem> listNode3;
-        listNode3 = (List<PElem>)nodeArrayList1.get(0);
-        listNode4 = listNode3;
+        List<PElem> listNode3 = (List<PElem>)nodeArrayList1.get(0);
+        List<PElem> listNode4 = listNode3;
 
-        paltNode1 = new AAlt(null, listNode4, null);
+        AAlt paltNode1 = new AAlt(null, listNode4, null);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6295,15 +5510,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        TId tidNode2;
-        List<PElem> listNode4;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        List<PElem> listNode3;
-        listNode3 = (List<PElem>)nodeArrayList2.get(0);
-        listNode4 = listNode3;
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        List<PElem> listNode3 = (List<PElem>)nodeArrayList2.get(0);
+        List<PElem> listNode4 = listNode3;
 
-        paltNode1 = new AAlt(tidNode2, listNode4, null);
+        AAlt paltNode1 = new AAlt(tidNode2, listNode4, null);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6316,11 +5527,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        PAltTransform palttransformNode4;
-        palttransformNode4 = (PAltTransform)nodeArrayList1.get(0);
+        PAltTransform palttransformNode4 = (PAltTransform)nodeArrayList1.get(0);
 
-        paltNode1 = new AAlt(null, Collections.EMPTY_LIST, palttransformNode4);
+        AAlt paltNode1 = new AAlt(null, Collections.EMPTY_LIST, palttransformNode4);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6334,13 +5543,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        TId tidNode2;
-        PAltTransform palttransformNode4;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        palttransformNode4 = (PAltTransform)nodeArrayList2.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        PAltTransform palttransformNode4 = (PAltTransform)nodeArrayList2.get(0);
 
-        paltNode1 = new AAlt(tidNode2, Collections.EMPTY_LIST, palttransformNode4);
+        AAlt paltNode1 = new AAlt(tidNode2, Collections.EMPTY_LIST, palttransformNode4);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6354,15 +5560,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        List<PElem> listNode4;
-        PAltTransform palttransformNode5;
-        List<PElem> listNode3;
-        listNode3 = (List<PElem>)nodeArrayList1.get(0);
-        listNode4 = listNode3;
-        palttransformNode5 = (PAltTransform)nodeArrayList2.get(0);
+        List<PElem> listNode3 = (List<PElem>)nodeArrayList1.get(0);
+        List<PElem> listNode4 = listNode3;
+        PAltTransform palttransformNode5 = (PAltTransform)nodeArrayList2.get(0);
 
-        paltNode1 = new AAlt(null, listNode4, palttransformNode5);
+        AAlt paltNode1 = new AAlt(null, listNode4, palttransformNode5);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6377,17 +5579,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAlt paltNode1;
-        TId tidNode2;
-        List<PElem> listNode4;
-        PAltTransform palttransformNode5;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        List<PElem> listNode3;
-        listNode3 = (List<PElem>)nodeArrayList2.get(0);
-        listNode4 = listNode3;
-        palttransformNode5 = (PAltTransform)nodeArrayList3.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        List<PElem> listNode3 = (List<PElem>)nodeArrayList2.get(0);
+        List<PElem> listNode4 = listNode3;
+        PAltTransform palttransformNode5 = (PAltTransform)nodeArrayList3.get(0);
 
-        paltNode1 = new AAlt(tidNode2, listNode4, palttransformNode5);
+        AAlt paltNode1 = new AAlt(tidNode2, listNode4, palttransformNode5);
         nodeList.add(paltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -6402,13 +5599,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAltTransform palttransformNode1;
-        TLBrace tlbraceNode2;
-        TRBrace trbraceNode4;
-        tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
-        trbraceNode4 = (TRBrace)nodeArrayList3.get(0);
+        TLBrace tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
+        TRBrace trbraceNode4 = (TRBrace)nodeArrayList3.get(0);
 
-        palttransformNode1 = new AAltTransform(tlbraceNode2, Collections.EMPTY_LIST, trbraceNode4);
+        AAltTransform palttransformNode1 = new AAltTransform(tlbraceNode2, Collections.EMPTY_LIST, trbraceNode4);
         nodeList.add(palttransformNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -6424,17 +5618,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAltTransform palttransformNode1;
-        TLBrace tlbraceNode2;
-        List<PTerm> listNode4;
-        TRBrace trbraceNode5;
-        tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
-        List<PTerm> listNode3;
-        listNode3 = (List<PTerm>)nodeArrayList3.get(0);
-        listNode4 = listNode3;
-        trbraceNode5 = (TRBrace)nodeArrayList4.get(0);
+        TLBrace tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
+        List<PTerm> listNode3 = (List<PTerm>)nodeArrayList3.get(0);
+        List<PTerm> listNode4 = listNode3;
+        TRBrace trbraceNode5 = (TRBrace)nodeArrayList4.get(0);
 
-        palttransformNode1 = new AAltTransform(tlbraceNode2, listNode4, trbraceNode5);
+        AAltTransform palttransformNode1 = new AAltTransform(tlbraceNode2, listNode4, trbraceNode5);
         nodeList.add(palttransformNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -6450,13 +5639,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        PProdName pprodnameNode2;
-        TLPar tlparNode3;
-        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
-        tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        PProdName pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        TLPar tlparNode3 = (TLPar)nodeArrayList3.get(0);
 
-        ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, Collections.EMPTY_LIST);
+        ANewTerm ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, Collections.EMPTY_LIST);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -6473,17 +5659,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        PProdName pprodnameNode2;
-        TLPar tlparNode3;
-        List<PTerm> listNode5;
-        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
-        tlparNode3 = (TLPar)nodeArrayList3.get(0);
-        List<PTerm> listNode4;
-        listNode4 = (List<PTerm>)nodeArrayList4.get(0);
-        listNode5 = listNode4;
+        PProdName pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        TLPar tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        List<PTerm> listNode4 = (List<PTerm>)nodeArrayList4.get(0);
+        List<PTerm> listNode5 = listNode4;
 
-        ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
+        ANewTerm ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -6497,11 +5678,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        TLBkt tlbktNode2;
-        tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
+        TLBkt tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
 
-        ptermNode1 = new AListTerm(tlbktNode2, Collections.EMPTY_LIST);
+        AListTerm ptermNode1 = new AListTerm(tlbktNode2, Collections.EMPTY_LIST);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6516,15 +5695,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        TLBkt tlbktNode2;
-        List<PListTerm> listNode4;
-        tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
-        List<PListTerm> listNode3;
-        listNode3 = (List<PListTerm>)nodeArrayList2.get(0);
-        listNode4 = listNode3;
+        TLBkt tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
+        List<PListTerm> listNode3 = (List<PListTerm>)nodeArrayList2.get(0);
+        List<PListTerm> listNode4 = listNode3;
 
-        ptermNode1 = new AListTerm(tlbktNode2, listNode4);
+        AListTerm ptermNode1 = new AListTerm(tlbktNode2, listNode4);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -6537,11 +5712,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        TId tidNode3;
-        tidNode3 = (TId)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList1.get(0);
 
-        ptermNode1 = new ASimpleTerm(null, tidNode3, null);
+        ASimpleTerm ptermNode1 = new ASimpleTerm(null, tidNode3, null);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6555,13 +5728,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        PSpecifier pspecifierNode2;
-        TId tidNode3;
-        pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
+        PSpecifier pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
 
-        ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
+        ASimpleTerm ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6575,13 +5745,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        TId tidNode3;
-        TId tidNode4;
-        tidNode3 = (TId)nodeArrayList1.get(0);
-        tidNode4 = (TId)nodeArrayList2.get(0);
+        TId tidNode3 = (TId)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList2.get(0);
 
-        ptermNode1 = new ASimpleTerm(null, tidNode3, tidNode4);
+        ASimpleTerm ptermNode1 = new ASimpleTerm(null, tidNode3, tidNode4);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6596,15 +5763,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        PSpecifier pspecifierNode2;
-        TId tidNode3;
-        TId tidNode4;
-        pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
-        tidNode4 = (TId)nodeArrayList3.get(0);
+        PSpecifier pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
+        TId tidNode4 = (TId)nodeArrayList3.get(0);
 
-        ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, tidNode4);
+        ASimpleTerm ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, tidNode4);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -6617,9 +5780,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
 
-        ptermNode1 = new ANullTerm();
+        ANullTerm ptermNode1 = new ANullTerm();
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6632,9 +5794,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
         List<PListTerm> listNode2;
-        PListTerm plisttermNode1;
-        plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
         if(plisttermNode1 != null) {
             listNode2 = Collections.singletonList(plisttermNode1);
         } else {
@@ -6653,12 +5814,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<PListTerm> listNode3;
-        PListTerm plisttermNode1;
-        plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
-        List<PListTerm> listNode2;
-        listNode2 = (List<PListTerm>)nodeArrayList2.get(0);
-        listNode3 = new LinkedList<>();
+        PListTerm plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
+        List<PListTerm> listNode2 = (List<PListTerm>)nodeArrayList2.get(0);
+        List<PListTerm> listNode3 = new LinkedList<>();
         if(plisttermNode1 != null)
         {
             listNode3.add(plisttermNode1);
@@ -6683,13 +5841,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        PProdName pprodnameNode2;
-        TLPar tlparNode3;
-        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
-        tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        PProdName pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        TLPar tlparNode3 = (TLPar)nodeArrayList3.get(0);
 
-        plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, Collections.EMPTY_LIST);
+        ANewListTerm plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, Collections.EMPTY_LIST);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -6706,17 +5861,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        PProdName pprodnameNode2;
-        TLPar tlparNode3;
-        List<PTerm> listNode5;
-        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
-        tlparNode3 = (TLPar)nodeArrayList3.get(0);
-        List<PTerm> listNode4;
-        listNode4 = (List<PTerm>)nodeArrayList4.get(0);
-        listNode5 = listNode4;
+        PProdName pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        TLPar tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        List<PTerm> listNode4 = (List<PTerm>)nodeArrayList4.get(0);
+        List<PTerm> listNode5 = listNode4;
 
-        plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
+        ANewListTerm plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList5);
         return nodeList;
@@ -6729,11 +5879,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        TId tidNode3;
-        tidNode3 = (TId)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList1.get(0);
 
-        plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
+        ASimpleListTerm plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6747,13 +5895,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        PSpecifier pspecifierNode2;
-        TId tidNode3;
-        pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
+        PSpecifier pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
 
-        plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
+        ASimpleListTerm plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6767,13 +5912,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        TId tidNode3;
-        TId tidNode4;
-        tidNode3 = (TId)nodeArrayList1.get(0);
-        tidNode4 = (TId)nodeArrayList2.get(0);
+        TId tidNode3 = (TId)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList2.get(0);
 
-        plisttermNode1 = new ASimpleListTerm(null, tidNode3, tidNode4);
+        ASimpleListTerm plisttermNode1 = new ASimpleListTerm(null, tidNode3, tidNode4);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6788,15 +5930,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        PSpecifier pspecifierNode2;
-        TId tidNode3;
-        TId tidNode4;
-        pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
-        tidNode4 = (TId)nodeArrayList3.get(0);
+        PSpecifier pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
+        TId tidNode4 = (TId)nodeArrayList3.get(0);
 
-        plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, tidNode4);
+        ASimpleListTerm plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, tidNode4);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -6810,8 +5948,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PListTerm plisttermNode1;
-        plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
+        PListTerm plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
         nodeList.add(plisttermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6825,8 +5962,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList2.get(0);
+        TId tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6839,11 +5975,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PProdName pprodnameNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
 
-        pprodnameNode1 = new AProdName(tidNode2, null);
+        AProdName pprodnameNode1 = new AProdName(tidNode2, null);
         nodeList.add(pprodnameNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6857,13 +5991,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PProdName pprodnameNode1;
-        TId tidNode2;
-        TId tidNode3;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        tidNode3 = (TId)nodeArrayList2.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode3 = (TId)nodeArrayList2.get(0);
 
-        pprodnameNode1 = new AProdName(tidNode2, tidNode3);
+        AProdName pprodnameNode1 = new AProdName(tidNode2, tidNode3);
         nodeList.add(pprodnameNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6877,8 +6008,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList2.get(0);
+        TId tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6891,9 +6021,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
         List<PTerm> listNode2;
-        PTerm ptermNode1;
-        ptermNode1 = (PTerm)nodeArrayList1.get(0);
         if(ptermNode1 != null) {
             listNode2 = Collections.singletonList(ptermNode1);
         } else {
@@ -6912,12 +6041,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<PTerm> listNode3;
-        PTerm ptermNode1;
-        ptermNode1 = (PTerm)nodeArrayList1.get(0);
-        List<PTerm> listNode2;
-        listNode2 = (List<PTerm>)nodeArrayList2.get(0);
-        listNode3 = new LinkedList<>();
+        PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
+        List<PTerm> listNode2 = (List<PTerm>)nodeArrayList2.get(0);
+        List<PTerm> listNode3 = new LinkedList<>();
         if(ptermNode1 != null)
         {
             listNode3.add(ptermNode1);
@@ -6940,8 +6066,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PTerm ptermNode1;
-        ptermNode1 = (PTerm)nodeArrayList2.get(0);
+        PTerm ptermNode1 = (PTerm)nodeArrayList2.get(0);
         nodeList.add(ptermNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -6956,8 +6081,7 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList2.get(0);
+        TId tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -6970,11 +6094,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        TId tidNode4;
-        tidNode4 = (TId)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList1.get(0);
 
-        pelemNode1 = new AElem(null, null, tidNode4, null);
+        AElem pelemNode1 = new AElem(null, null, tidNode4, null);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -6988,13 +6110,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        TId tidNode2;
-        TId tidNode4;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        tidNode4 = (TId)nodeArrayList2.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList2.get(0);
 
-        pelemNode1 = new AElem(tidNode2, null, tidNode4, null);
+        AElem pelemNode1 = new AElem(tidNode2, null, tidNode4, null);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7008,13 +6127,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        PSpecifier pspecifierNode3;
-        TId tidNode4;
-        pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
-        tidNode4 = (TId)nodeArrayList2.get(0);
+        PSpecifier pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList2.get(0);
 
-        pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, null);
+        AElem pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, null);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7029,15 +6145,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        TId tidNode2;
-        PSpecifier pspecifierNode3;
-        TId tidNode4;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        pspecifierNode3 = (PSpecifier)nodeArrayList2.get(0);
-        tidNode4 = (TId)nodeArrayList3.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        PSpecifier pspecifierNode3 = (PSpecifier)nodeArrayList2.get(0);
+        TId tidNode4 = (TId)nodeArrayList3.get(0);
 
-        pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, null);
+        AElem pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, null);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -7051,13 +6163,10 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        TId tidNode4;
-        PUnOp punopNode5;
-        tidNode4 = (TId)nodeArrayList1.get(0);
-        punopNode5 = (PUnOp)nodeArrayList2.get(0);
+        TId tidNode4 = (TId)nodeArrayList1.get(0);
+        PUnOp punopNode5 = (PUnOp)nodeArrayList2.get(0);
 
-        pelemNode1 = new AElem(null, null, tidNode4, punopNode5);
+        AElem pelemNode1 = new AElem(null, null, tidNode4, punopNode5);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7072,15 +6181,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        TId tidNode2;
-        TId tidNode4;
-        PUnOp punopNode5;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        tidNode4 = (TId)nodeArrayList2.get(0);
-        punopNode5 = (PUnOp)nodeArrayList3.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList2.get(0);
+        PUnOp punopNode5 = (PUnOp)nodeArrayList3.get(0);
 
-        pelemNode1 = new AElem(tidNode2, null, tidNode4, punopNode5);
+        AElem pelemNode1 = new AElem(tidNode2, null, tidNode4, punopNode5);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -7095,15 +6200,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        PSpecifier pspecifierNode3;
-        TId tidNode4;
-        PUnOp punopNode5;
-        pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
-        tidNode4 = (TId)nodeArrayList2.get(0);
-        punopNode5 = (PUnOp)nodeArrayList3.get(0);
+        PSpecifier pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
+        TId tidNode4 = (TId)nodeArrayList2.get(0);
+        PUnOp punopNode5 = (PUnOp)nodeArrayList3.get(0);
 
-        pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, punopNode5);
+        AElem pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, punopNode5);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList3);
         return nodeList;
@@ -7119,17 +6220,12 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PElem pelemNode1;
-        TId tidNode2;
-        PSpecifier pspecifierNode3;
-        TId tidNode4;
-        PUnOp punopNode5;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        pspecifierNode3 = (PSpecifier)nodeArrayList2.get(0);
-        tidNode4 = (TId)nodeArrayList3.get(0);
-        punopNode5 = (PUnOp)nodeArrayList4.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        PSpecifier pspecifierNode3 = (PSpecifier)nodeArrayList2.get(0);
+        TId tidNode4 = (TId)nodeArrayList3.get(0);
+        PUnOp punopNode5 = (PUnOp)nodeArrayList4.get(0);
 
-        pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, punopNode5);
+        AElem pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, punopNode5);
         nodeList.add(pelemNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -7145,8 +6241,7 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList2.get(0);
+        TId tidNode1 = (TId)nodeArrayList2.get(0);
         nodeList.add(tidNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -7160,9 +6255,8 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PSpecifier pspecifierNode1;
 
-        pspecifierNode1 = new ATokenSpecifier();
+        ATokenSpecifier pspecifierNode1 = new ATokenSpecifier();
         nodeList.add(pspecifierNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7176,9 +6270,8 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PSpecifier pspecifierNode1;
 
-        pspecifierNode1 = new AProductionSpecifier();
+        AProductionSpecifier pspecifierNode1 = new AProductionSpecifier();
         nodeList.add(pspecifierNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7194,13 +6287,10 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAst pastNode1;
-        List<PAstProd> listNode3;
-        List<PAstProd> listNode2;
-        listNode2 = (List<PAstProd>)nodeArrayList4.get(0);
-        listNode3 = listNode2;
+        List<PAstProd> listNode2 = (List<PAstProd>)nodeArrayList4.get(0);
+        List<PAstProd> listNode3 = listNode2;
 
-        pastNode1 = new AAst(listNode3);
+        AAst pastNode1 = new AAst(listNode3);
         nodeList.add(pastNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -7216,15 +6306,11 @@ public class Parser implements IParser
         List<Object> nodeArrayList3 = pop();
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAstProd pastprodNode1;
-        TId tidNode2;
-        List<PAstAlt> listNode4;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        List<PAstAlt> listNode3;
-        listNode3 = (List<PAstAlt>)nodeArrayList3.get(0);
-        listNode4 = listNode3;
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        List<PAstAlt> listNode3 = (List<PAstAlt>)nodeArrayList3.get(0);
+        List<PAstAlt> listNode4 = listNode3;
 
-        pastprodNode1 = new AAstProd(tidNode2, listNode4);
+        AAstProd pastprodNode1 = new AAstProd(tidNode2, listNode4);
         nodeList.add(pastprodNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList4);
         return nodeList;
@@ -7237,9 +6323,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
         List<PAstAlt> listNode2;
-        PAstAlt pastaltNode1;
-        pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
         if(pastaltNode1 != null) {
             listNode2 = Collections.singletonList(pastaltNode1);
         } else {
@@ -7258,12 +6343,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        List<PAstAlt> listNode3;
-        PAstAlt pastaltNode1;
-        pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
-        List<PAstAlt> listNode2;
-        listNode2 = (List<PAstAlt>)nodeArrayList2.get(0);
-        listNode3 = new LinkedList<>();
+        PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
+        List<PAstAlt> listNode2 = (List<PAstAlt>)nodeArrayList2.get(0);
+        List<PAstAlt> listNode3 = new LinkedList<>();
         if(pastaltNode1 != null)
         {
             listNode3.add(pastaltNode1);
@@ -7286,8 +6368,7 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAstAlt pastaltNode1;
-        pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
+        PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
         nodeList.add(pastaltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7299,9 +6380,8 @@ public class Parser implements IParser
     {
         List<Object> nodeList = new ArrayList<>();
 
-        PAstAlt pastaltNode1;
 
-        pastaltNode1 = new AAstAlt(null, Collections.EMPTY_LIST);
+        AAstAlt pastaltNode1 = new AAstAlt(null, Collections.EMPTY_LIST);
         nodeList.add(pastaltNode1);
         return nodeList;
     }
@@ -7313,11 +6393,9 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PAstAlt pastaltNode1;
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList1.get(0);
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
 
-        pastaltNode1 = new AAstAlt(tidNode2, Collections.EMPTY_LIST);
+        AAstAlt pastaltNode1 = new AAstAlt(tidNode2, Collections.EMPTY_LIST);
         nodeList.add(pastaltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -7330,13 +6408,10 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
-        PAstAlt pastaltNode1;
-        List<PElem> listNode4;
-        List<PElem> listNode3;
-        listNode3 = (List<PElem>)nodeArrayList1.get(0);
-        listNode4 = listNode3;
+        List<PElem> listNode3 = (List<PElem>)nodeArrayList1.get(0);
+        List<PElem> listNode4 = listNode3;
 
-        pastaltNode1 = new AAstAlt(null, listNode4);
+        AAstAlt pastaltNode1 = new AAstAlt(null, listNode4);
         nodeList.add(pastaltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList1);
         return nodeList;
@@ -7350,15 +6425,11 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
-        PAstAlt pastaltNode1;
-        TId tidNode2;
-        List<PElem> listNode4;
-        tidNode2 = (TId)nodeArrayList1.get(0);
-        List<PElem> listNode3;
-        listNode3 = (List<PElem>)nodeArrayList2.get(0);
-        listNode4 = listNode3;
+        TId tidNode2 = (TId)nodeArrayList1.get(0);
+        List<PElem> listNode3 = (List<PElem>)nodeArrayList2.get(0);
+        List<PElem> listNode4 = listNode3;
 
-        pastaltNode1 = new AAstAlt(tidNode2, listNode4);
+        AAstAlt pastaltNode1 = new AAstAlt(tidNode2, listNode4);
         nodeList.add(pastaltNode1);
         checkResult(nodeList.get(0), nodeArrayList1, nodeArrayList2);
         return nodeList;
@@ -7371,9 +6442,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        TPkgId tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
         List<TPkgId> listNode2;
-        TPkgId tpkgidNode1;
-        tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
         if(tpkgidNode1 != null) {
             listNode2 = Collections.singletonList(tpkgidNode1);
         } else {
@@ -7392,11 +6462,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<TPkgId> listNode1 = (List<TPkgId>)nodeArrayList1.get(0);
+        TPkgId tpkgidNode2 = (TPkgId)nodeArrayList2.get(0);
         List<TPkgId> listNode3;
-        List<TPkgId> listNode1;
-        listNode1 = (List<TPkgId>)nodeArrayList1.get(0);
-        TPkgId tpkgidNode2;
-        tpkgidNode2 = (TPkgId)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7418,9 +6486,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PHelperDef phelperdefNode1 = (PHelperDef)nodeArrayList1.get(0);
         List<PHelperDef> listNode2;
-        PHelperDef phelperdefNode1;
-        phelperdefNode1 = (PHelperDef)nodeArrayList1.get(0);
         if(phelperdefNode1 != null) {
             listNode2 = Collections.singletonList(phelperdefNode1);
         } else {
@@ -7439,11 +6506,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PHelperDef> listNode1 = (List<PHelperDef>)nodeArrayList1.get(0);
+        PHelperDef phelperdefNode2 = (PHelperDef)nodeArrayList2.get(0);
         List<PHelperDef> listNode3;
-        List<PHelperDef> listNode1;
-        listNode1 = (List<PHelperDef>)nodeArrayList1.get(0);
-        PHelperDef phelperdefNode2;
-        phelperdefNode2 = (PHelperDef)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7465,9 +6530,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        TId tidNode1 = (TId)nodeArrayList1.get(0);
         List<TId> listNode2;
-        TId tidNode1;
-        tidNode1 = (TId)nodeArrayList1.get(0);
         if(tidNode1 != null) {
             listNode2 = Collections.singletonList(tidNode1);
         } else {
@@ -7486,11 +6550,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<TId> listNode1 = (List<TId>)nodeArrayList1.get(0);
+        TId tidNode2 = (TId)nodeArrayList2.get(0);
         List<TId> listNode3;
-        List<TId> listNode1;
-        listNode1 = (List<TId>)nodeArrayList1.get(0);
-        TId tidNode2;
-        tidNode2 = (TId)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7512,9 +6574,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PTokenDef ptokendefNode1 = (PTokenDef)nodeArrayList1.get(0);
         List<PTokenDef> listNode2;
-        PTokenDef ptokendefNode1;
-        ptokendefNode1 = (PTokenDef)nodeArrayList1.get(0);
         if(ptokendefNode1 != null) {
             listNode2 = Collections.singletonList(ptokendefNode1);
         } else {
@@ -7533,11 +6594,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PTokenDef> listNode1 = (List<PTokenDef>)nodeArrayList1.get(0);
+        PTokenDef ptokendefNode2 = (PTokenDef)nodeArrayList2.get(0);
         List<PTokenDef> listNode3;
-        List<PTokenDef> listNode1;
-        listNode1 = (List<PTokenDef>)nodeArrayList1.get(0);
-        PTokenDef ptokendefNode2;
-        ptokendefNode2 = (PTokenDef)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7559,9 +6618,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PStateListTail pstatelisttailNode1 = (PStateListTail)nodeArrayList1.get(0);
         List<PStateListTail> listNode2;
-        PStateListTail pstatelisttailNode1;
-        pstatelisttailNode1 = (PStateListTail)nodeArrayList1.get(0);
         if(pstatelisttailNode1 != null) {
             listNode2 = Collections.singletonList(pstatelisttailNode1);
         } else {
@@ -7580,11 +6638,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PStateListTail> listNode1 = (List<PStateListTail>)nodeArrayList1.get(0);
+        PStateListTail pstatelisttailNode2 = (PStateListTail)nodeArrayList2.get(0);
         List<PStateListTail> listNode3;
-        List<PStateListTail> listNode1;
-        listNode1 = (List<PStateListTail>)nodeArrayList1.get(0);
-        PStateListTail pstatelisttailNode2;
-        pstatelisttailNode2 = (PStateListTail)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7606,9 +6662,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PConcat pconcatNode1 = (PConcat)nodeArrayList1.get(0);
         List<PConcat> listNode2;
-        PConcat pconcatNode1;
-        pconcatNode1 = (PConcat)nodeArrayList1.get(0);
         if(pconcatNode1 != null) {
             listNode2 = Collections.singletonList(pconcatNode1);
         } else {
@@ -7627,11 +6682,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PConcat> listNode1 = (List<PConcat>)nodeArrayList1.get(0);
+        PConcat pconcatNode2 = (PConcat)nodeArrayList2.get(0);
         List<PConcat> listNode3;
-        List<PConcat> listNode1;
-        listNode1 = (List<PConcat>)nodeArrayList1.get(0);
-        PConcat pconcatNode2;
-        pconcatNode2 = (PConcat)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7653,9 +6706,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PUnExp punexpNode1 = (PUnExp)nodeArrayList1.get(0);
         List<PUnExp> listNode2;
-        PUnExp punexpNode1;
-        punexpNode1 = (PUnExp)nodeArrayList1.get(0);
         if(punexpNode1 != null) {
             listNode2 = Collections.singletonList(punexpNode1);
         } else {
@@ -7674,11 +6726,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PUnExp> listNode1 = (List<PUnExp>)nodeArrayList1.get(0);
+        PUnExp punexpNode2 = (PUnExp)nodeArrayList2.get(0);
         List<PUnExp> listNode3;
-        List<PUnExp> listNode1;
-        listNode1 = (List<PUnExp>)nodeArrayList1.get(0);
-        PUnExp punexpNode2;
-        punexpNode2 = (PUnExp)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7700,9 +6750,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PProd pprodNode1 = (PProd)nodeArrayList1.get(0);
         List<PProd> listNode2;
-        PProd pprodNode1;
-        pprodNode1 = (PProd)nodeArrayList1.get(0);
         if(pprodNode1 != null) {
             listNode2 = Collections.singletonList(pprodNode1);
         } else {
@@ -7721,11 +6770,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PProd> listNode1 = (List<PProd>)nodeArrayList1.get(0);
+        PProd pprodNode2 = (PProd)nodeArrayList2.get(0);
         List<PProd> listNode3;
-        List<PProd> listNode1;
-        listNode1 = (List<PProd>)nodeArrayList1.get(0);
-        PProd pprodNode2;
-        pprodNode2 = (PProd)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7747,9 +6794,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PElem pelemNode1 = (PElem)nodeArrayList1.get(0);
         List<PElem> listNode2;
-        PElem pelemNode1;
-        pelemNode1 = (PElem)nodeArrayList1.get(0);
         if(pelemNode1 != null) {
             listNode2 = Collections.singletonList(pelemNode1);
         } else {
@@ -7768,11 +6814,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PElem> listNode1 = (List<PElem>)nodeArrayList1.get(0);
+        PElem pelemNode2 = (PElem)nodeArrayList2.get(0);
         List<PElem> listNode3;
-        List<PElem> listNode1;
-        listNode1 = (List<PElem>)nodeArrayList1.get(0);
-        PElem pelemNode2;
-        pelemNode2 = (PElem)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7794,9 +6838,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PAlt paltNode1 = (PAlt)nodeArrayList1.get(0);
         List<PAlt> listNode2;
-        PAlt paltNode1;
-        paltNode1 = (PAlt)nodeArrayList1.get(0);
         if(paltNode1 != null) {
             listNode2 = Collections.singletonList(paltNode1);
         } else {
@@ -7815,11 +6858,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PAlt> listNode1 = (List<PAlt>)nodeArrayList1.get(0);
+        PAlt paltNode2 = (PAlt)nodeArrayList2.get(0);
         List<PAlt> listNode3;
-        List<PAlt> listNode1;
-        listNode1 = (List<PAlt>)nodeArrayList1.get(0);
-        PAlt paltNode2;
-        paltNode2 = (PAlt)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7841,9 +6882,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
         List<PTerm> listNode2;
-        PTerm ptermNode1;
-        ptermNode1 = (PTerm)nodeArrayList1.get(0);
         if(ptermNode1 != null) {
             listNode2 = Collections.singletonList(ptermNode1);
         } else {
@@ -7862,11 +6902,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PTerm> listNode1 = (List<PTerm>)nodeArrayList1.get(0);
+        PTerm ptermNode2 = (PTerm)nodeArrayList2.get(0);
         List<PTerm> listNode3;
-        List<PTerm> listNode1;
-        listNode1 = (List<PTerm>)nodeArrayList1.get(0);
-        PTerm ptermNode2;
-        ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7888,9 +6926,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
         List<PListTerm> listNode2;
-        PListTerm plisttermNode1;
-        plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
         if(plisttermNode1 != null) {
             listNode2 = Collections.singletonList(plisttermNode1);
         } else {
@@ -7909,11 +6946,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PListTerm> listNode1 = (List<PListTerm>)nodeArrayList1.get(0);
+        PListTerm plisttermNode2 = (PListTerm)nodeArrayList2.get(0);
         List<PListTerm> listNode3;
-        List<PListTerm> listNode1;
-        listNode1 = (List<PListTerm>)nodeArrayList1.get(0);
-        PListTerm plisttermNode2;
-        plisttermNode2 = (PListTerm)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7935,9 +6970,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1 = (PTerm)nodeArrayList1.get(0);
         List<PTerm> listNode2;
-        PTerm ptermNode1;
-        ptermNode1 = (PTerm)nodeArrayList1.get(0);
         if(ptermNode1 != null) {
             listNode2 = Collections.singletonList(ptermNode1);
         } else {
@@ -7956,11 +6990,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PTerm> listNode1 = (List<PTerm>)nodeArrayList1.get(0);
+        PTerm ptermNode2 = (PTerm)nodeArrayList2.get(0);
         List<PTerm> listNode3;
-        List<PTerm> listNode1;
-        listNode1 = (List<PTerm>)nodeArrayList1.get(0);
-        PTerm ptermNode2;
-        ptermNode2 = (PTerm)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -7982,9 +7014,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PAstProd pastprodNode1 = (PAstProd)nodeArrayList1.get(0);
         List<PAstProd> listNode2;
-        PAstProd pastprodNode1;
-        pastprodNode1 = (PAstProd)nodeArrayList1.get(0);
         if(pastprodNode1 != null) {
             listNode2 = Collections.singletonList(pastprodNode1);
         } else {
@@ -8003,11 +7034,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PAstProd> listNode1 = (List<PAstProd>)nodeArrayList1.get(0);
+        PAstProd pastprodNode2 = (PAstProd)nodeArrayList2.get(0);
         List<PAstProd> listNode3;
-        List<PAstProd> listNode1;
-        listNode1 = (List<PAstProd>)nodeArrayList1.get(0);
-        PAstProd pastprodNode2;
-        pastprodNode2 = (PAstProd)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
@@ -8029,9 +7058,8 @@ public class Parser implements IParser
         List<Object> nodeList = new ArrayList<>();
 
         List<Object> nodeArrayList1 = pop();
+        PAstAlt pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
         List<PAstAlt> listNode2;
-        PAstAlt pastaltNode1;
-        pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
         if(pastaltNode1 != null) {
             listNode2 = Collections.singletonList(pastaltNode1);
         } else {
@@ -8050,11 +7078,9 @@ public class Parser implements IParser
 
         List<Object> nodeArrayList2 = pop();
         List<Object> nodeArrayList1 = pop();
+        List<PAstAlt> listNode1 = (List<PAstAlt>)nodeArrayList1.get(0);
+        PAstAlt pastaltNode2 = (PAstAlt)nodeArrayList2.get(0);
         List<PAstAlt> listNode3;
-        List<PAstAlt> listNode1;
-        listNode1 = (List<PAstAlt>)nodeArrayList1.get(0);
-        PAstAlt pastaltNode2;
-        pastaltNode2 = (PAstAlt)nodeArrayList2.get(0);
         if (listNode1 instanceof LinkedList<?>) {
             listNode3 = listNode1;
         } else {
diff --git a/src/main/resources/org/sablecc/sablecc/parser.txt b/src/main/resources/org/sablecc/sablecc/parser.txt
index 8313c88a8545589636f3edfcca82daa0fa8d688a..0424551ef61a86c404a020bfeab30efbf1c5abc6 100644
--- a/src/main/resources/org/sablecc/sablecc/parser.txt
+++ b/src/main/resources/org/sablecc/sablecc/parser.txt
@@ -331,19 +331,14 @@ Macro:ParserNewBodyDeclNull
 
 $
 
-Macro:ParserVariableDeclaration
-        $0$ $1$;
-
-$
-
 Macro:ParserSimpleTerm
-        $0$ = ($1$)nodeArrayList$2$.get($3$);
+        $0$ $1$ = ($0$)nodeArrayList$2$.get($3$);
 
 $
 
 Macro:ParserNewBodyNew
 
-        $0$ = new $1$(
+        $0$ $1$ = new $0$(
 $
 
 Macro:ParserNewBodyParam
@@ -356,29 +351,31 @@ Macro:ParserNewBodyNewTail
 $
 
 Macro:ParserTypedSingleElementList
-        if($1$ != null) {
-            $0$ = Collections.singletonList($1$);
+        $0$ $1$;
+        if($2$ != null) {
+            $1$ = Collections.singletonList($2$);
         } else {
-            $0$ = Collections.emptyList();
+            $1$ = Collections.emptyList();
         }
 
 $
 
 Macro:ParserTypedListAssign
-        $0$ = $1$;
+        $0$ $1$ = $2$;
 
 $
 
 Macro:ParserTypedLinkedListInit
-        $0$ = new LinkedList<>();
+        $0$ $1$ = new LinkedList<>();
 
 $
 
 Macro:ParserTypedLinkedListInitAddAll
-        if ($1$ instanceof LinkedList<?>) {
-            $0$ = $1$;
+        $0$ $1$;
+        if ($2$ instanceof LinkedList<?>) {
+            $1$ = $2$;
         } else {
-            $0$ = new LinkedList<>($1$);
+            $1$ = new LinkedList<>($2$);
         }
 
 $