/* This file was generated by SableCC (http://www.sablecc.org/). */

package org.sablecc.sablecc.parser;

import org.sablecc.sablecc.lexer.*;
import org.sablecc.sablecc.node.*;
import org.sablecc.sablecc.analysis.*;
import java.util.*;

import java.io.DataInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;

public class Parser
{
  public final Analysis ignoredTokens = new AnalysisAdapter();

  protected ArrayList nodeList;

  private final Lexer lexer;
  private final ListIterator stack = new LinkedList().listIterator();
  private int last_shift;
  private int last_pos;
  private int last_line;
  private Token last_token;
  private final TokenIndex converter = new TokenIndex();
  private final int[] action = new int[2];

  private final static int SHIFT = 0;
  private final static int REDUCE = 1;
  private final static int ACCEPT = 2;
  private final static int ERROR = 3;

  public Parser(Lexer lexer)
  {
    this.lexer = lexer;
  }

  private void push(int numstate, ArrayList listNode) throws ParserException, LexerException, IOException
  {
    this.nodeList = listNode;

    if(!stack.hasNext())
    {
      stack.add(new State(numstate, this.nodeList));
      return;
    }

    State s = (State) stack.next();
    s.state = numstate;
    s.nodes = this.nodeList;
  }

  private int goTo(int index)
  {
    int state = state();
    int low = 1;
    int high = gotoTable[index].length - 1;
    int value = gotoTable[index][0][1];

    while(low <= high)
    {
      int middle = (low + high) / 2;

      if(state < gotoTable[index][middle][0])
      {
        high = middle - 1;
      }
      else if(state > gotoTable[index][middle][0])
      {
        low = middle + 1;
      }
      else
      {
        value = gotoTable[index][middle][1];
        break;
      }
    }

    return value;
  }

  private int state()
  {
    State s = (State) stack.previous();
    stack.next();
    return s.state;
  }

  private ArrayList pop()
  {
    return (ArrayList) ((State) stack.previous()).nodes;
  }

  private int index(Switchable token)
  {
    converter.index = -1;
    token.apply(converter);
    return converter.index;
  }

  public Start parse() throws ParserException, LexerException, IOException
  {
    push(0, null);
    List ign = null;
    while(true)
    {
      while(index(lexer.peek()) == -1)
      {
        if(ign == null)
        {
          ign = new TypedLinkedList(NodeCast.instance);
        }

        ign.add(lexer.next());
      }

      if(ign != null)
      {
        ignoredTokens.setIn(lexer.peek(), ign);
        ign = null;
      }

      last_pos = lexer.peek().getPos();
      last_line = lexer.peek().getLine();
      last_token = lexer.peek();

      int index = index(lexer.peek());
      action[0] = actionTable[state()][0][1];
      action[1] = actionTable[state()][0][2];

      int low = 1;
      int high = actionTable[state()].length - 1;

      while(low <= high)
      {
        int middle = (low + high) / 2;

        if(index < actionTable[state()][middle][0])
        {
          high = middle - 1;
        }
        else if(index > actionTable[state()][middle][0])
        {
          low = middle + 1;
        }
        else
        {
          action[0] = actionTable[state()][middle][1];
          action[1] = actionTable[state()][middle][2];
          break;
        }
      }

      switch(action[0])
      {
      case SHIFT:
        {
          ArrayList list = new ArrayList();
          list.add(lexer.next());
          push(action[1], list);
          last_shift = action[1];
        }
        break;
      case REDUCE:
        switch(action[1])
        {
        case 0: /* reduce AAgrammar1Grammar */
          {
            ArrayList list = new0();
            push(goTo(0), list);
          }
          break;
        case 1: /* reduce AAgrammar2Grammar */
          {
            ArrayList list = new1();
            push(goTo(0), list);
          }
          break;
        case 2: /* reduce AAgrammar3Grammar */
          {
            ArrayList list = new2();
            push(goTo(0), list);
          }
          break;
        case 3: /* reduce AAgrammar4Grammar */
          {
            ArrayList list = new3();
            push(goTo(0), list);
          }
          break;
        case 4: /* reduce AAgrammar5Grammar */
          {
            ArrayList list = new4();
            push(goTo(0), list);
          }
          break;
        case 5: /* reduce AAgrammar6Grammar */
          {
            ArrayList list = new5();
            push(goTo(0), list);
          }
          break;
        case 6: /* reduce AAgrammar7Grammar */
          {
            ArrayList list = new6();
            push(goTo(0), list);
          }
          break;
        case 7: /* reduce AAgrammar8Grammar */
          {
            ArrayList list = new7();
            push(goTo(0), list);
          }
          break;
        case 8: /* reduce AAgrammar9Grammar */
          {
            ArrayList list = new8();
            push(goTo(0), list);
          }
          break;
        case 9: /* reduce AAgrammar10Grammar */
          {
            ArrayList list = new9();
            push(goTo(0), list);
          }
          break;
        case 10: /* reduce AAgrammar11Grammar */
          {
            ArrayList list = new10();
            push(goTo(0), list);
          }
          break;
        case 11: /* reduce AAgrammar12Grammar */
          {
            ArrayList list = new11();
            push(goTo(0), list);
          }
          break;
        case 12: /* reduce AAgrammar13Grammar */
          {
            ArrayList list = new12();
            push(goTo(0), list);
          }
          break;
        case 13: /* reduce AAgrammar14Grammar */
          {
            ArrayList list = new13();
            push(goTo(0), list);
          }
          break;
        case 14: /* reduce AAgrammar15Grammar */
          {
            ArrayList list = new14();
            push(goTo(0), list);
          }
          break;
        case 15: /* reduce AAgrammar16Grammar */
          {
            ArrayList list = new15();
            push(goTo(0), list);
          }
          break;
        case 16: /* reduce AAgrammar17Grammar */
          {
            ArrayList list = new16();
            push(goTo(0), list);
          }
          break;
        case 17: /* reduce AAgrammar18Grammar */
          {
            ArrayList list = new17();
            push(goTo(0), list);
          }
          break;
        case 18: /* reduce AAgrammar19Grammar */
          {
            ArrayList list = new18();
            push(goTo(0), list);
          }
          break;
        case 19: /* reduce AAgrammar20Grammar */
          {
            ArrayList list = new19();
            push(goTo(0), list);
          }
          break;
        case 20: /* reduce AAgrammar21Grammar */
          {
            ArrayList list = new20();
            push(goTo(0), list);
          }
          break;
        case 21: /* reduce AAgrammar22Grammar */
          {
            ArrayList list = new21();
            push(goTo(0), list);
          }
          break;
        case 22: /* reduce AAgrammar23Grammar */
          {
            ArrayList list = new22();
            push(goTo(0), list);
          }
          break;
        case 23: /* reduce AAgrammar24Grammar */
          {
            ArrayList list = new23();
            push(goTo(0), list);
          }
          break;
        case 24: /* reduce AAgrammar25Grammar */
          {
            ArrayList list = new24();
            push(goTo(0), list);
          }
          break;
        case 25: /* reduce AAgrammar26Grammar */
          {
            ArrayList list = new25();
            push(goTo(0), list);
          }
          break;
        case 26: /* reduce AAgrammar27Grammar */
          {
            ArrayList list = new26();
            push(goTo(0), list);
          }
          break;
        case 27: /* reduce AAgrammar28Grammar */
          {
            ArrayList list = new27();
            push(goTo(0), list);
          }
          break;
        case 28: /* reduce AAgrammar29Grammar */
          {
            ArrayList list = new28();
            push(goTo(0), list);
          }
          break;
        case 29: /* reduce AAgrammar30Grammar */
          {
            ArrayList list = new29();
            push(goTo(0), list);
          }
          break;
        case 30: /* reduce AAgrammar31Grammar */
          {
            ArrayList list = new30();
            push(goTo(0), list);
          }
          break;
        case 31: /* reduce AAgrammar32Grammar */
          {
            ArrayList list = new31();
            push(goTo(0), list);
          }
          break;
        case 32: /* reduce AAgrammar33Grammar */
          {
            ArrayList list = new32();
            push(goTo(0), list);
          }
          break;
        case 33: /* reduce AAgrammar34Grammar */
          {
            ArrayList list = new33();
            push(goTo(0), list);
          }
          break;
        case 34: /* reduce AAgrammar35Grammar */
          {
            ArrayList list = new34();
            push(goTo(0), list);
          }
          break;
        case 35: /* reduce AAgrammar36Grammar */
          {
            ArrayList list = new35();
            push(goTo(0), list);
          }
          break;
        case 36: /* reduce AAgrammar37Grammar */
          {
            ArrayList list = new36();
            push(goTo(0), list);
          }
          break;
        case 37: /* reduce AAgrammar38Grammar */
          {
            ArrayList list = new37();
            push(goTo(0), list);
          }
          break;
        case 38: /* reduce AAgrammar39Grammar */
          {
            ArrayList list = new38();
            push(goTo(0), list);
          }
          break;
        case 39: /* reduce AAgrammar40Grammar */
          {
            ArrayList list = new39();
            push(goTo(0), list);
          }
          break;
        case 40: /* reduce AAgrammar41Grammar */
          {
            ArrayList list = new40();
            push(goTo(0), list);
          }
          break;
        case 41: /* reduce AAgrammar42Grammar */
          {
            ArrayList list = new41();
            push(goTo(0), list);
          }
          break;
        case 42: /* reduce AAgrammar43Grammar */
          {
            ArrayList list = new42();
            push(goTo(0), list);
          }
          break;
        case 43: /* reduce AAgrammar44Grammar */
          {
            ArrayList list = new43();
            push(goTo(0), list);
          }
          break;
        case 44: /* reduce AAgrammar45Grammar */
          {
            ArrayList list = new44();
            push(goTo(0), list);
          }
          break;
        case 45: /* reduce AAgrammar46Grammar */
          {
            ArrayList list = new45();
            push(goTo(0), list);
          }
          break;
        case 46: /* reduce AAgrammar47Grammar */
          {
            ArrayList list = new46();
            push(goTo(0), list);
          }
          break;
        case 47: /* reduce AAgrammar48Grammar */
          {
            ArrayList list = new47();
            push(goTo(0), list);
          }
          break;
        case 48: /* reduce AAgrammar49Grammar */
          {
            ArrayList list = new48();
            push(goTo(0), list);
          }
          break;
        case 49: /* reduce AAgrammar50Grammar */
          {
            ArrayList list = new49();
            push(goTo(0), list);
          }
          break;
        case 50: /* reduce AAgrammar51Grammar */
          {
            ArrayList list = new50();
            push(goTo(0), list);
          }
          break;
        case 51: /* reduce AAgrammar52Grammar */
          {
            ArrayList list = new51();
            push(goTo(0), list);
          }
          break;
        case 52: /* reduce AAgrammar53Grammar */
          {
            ArrayList list = new52();
            push(goTo(0), list);
          }
          break;
        case 53: /* reduce AAgrammar54Grammar */
          {
            ArrayList list = new53();
            push(goTo(0), list);
          }
          break;
        case 54: /* reduce AAgrammar55Grammar */
          {
            ArrayList list = new54();
            push(goTo(0), list);
          }
          break;
        case 55: /* reduce AAgrammar56Grammar */
          {
            ArrayList list = new55();
            push(goTo(0), list);
          }
          break;
        case 56: /* reduce AAgrammar57Grammar */
          {
            ArrayList list = new56();
            push(goTo(0), list);
          }
          break;
        case 57: /* reduce AAgrammar58Grammar */
          {
            ArrayList list = new57();
            push(goTo(0), list);
          }
          break;
        case 58: /* reduce AAgrammar59Grammar */
          {
            ArrayList list = new58();
            push(goTo(0), list);
          }
          break;
        case 59: /* reduce AAgrammar60Grammar */
          {
            ArrayList list = new59();
            push(goTo(0), list);
          }
          break;
        case 60: /* reduce AAgrammar61Grammar */
          {
            ArrayList list = new60();
            push(goTo(0), list);
          }
          break;
        case 61: /* reduce AAgrammar62Grammar */
          {
            ArrayList list = new61();
            push(goTo(0), list);
          }
          break;
        case 62: /* reduce AAgrammar63Grammar */
          {
            ArrayList list = new62();
            push(goTo(0), list);
          }
          break;
        case 63: /* reduce AAgrammar64Grammar */
          {
            ArrayList list = new63();
            push(goTo(0), list);
          }
          break;
        case 64: /* reduce AAgrammar65Grammar */
          {
            ArrayList list = new64();
            push(goTo(0), list);
          }
          break;
        case 65: /* reduce AAgrammar66Grammar */
          {
            ArrayList list = new65();
            push(goTo(0), list);
          }
          break;
        case 66: /* reduce AAgrammar67Grammar */
          {
            ArrayList list = new66();
            push(goTo(0), list);
          }
          break;
        case 67: /* reduce AAgrammar68Grammar */
          {
            ArrayList list = new67();
            push(goTo(0), list);
          }
          break;
        case 68: /* reduce AAgrammar69Grammar */
          {
            ArrayList list = new68();
            push(goTo(0), list);
          }
          break;
        case 69: /* reduce AAgrammar70Grammar */
          {
            ArrayList list = new69();
            push(goTo(0), list);
          }
          break;
        case 70: /* reduce AAgrammar71Grammar */
          {
            ArrayList list = new70();
            push(goTo(0), list);
          }
          break;
        case 71: /* reduce AAgrammar72Grammar */
          {
            ArrayList list = new71();
            push(goTo(0), list);
          }
          break;
        case 72: /* reduce AAgrammar73Grammar */
          {
            ArrayList list = new72();
            push(goTo(0), list);
          }
          break;
        case 73: /* reduce AAgrammar74Grammar */
          {
            ArrayList list = new73();
            push(goTo(0), list);
          }
          break;
        case 74: /* reduce AAgrammar75Grammar */
          {
            ArrayList list = new74();
            push(goTo(0), list);
          }
          break;
        case 75: /* reduce AAgrammar76Grammar */
          {
            ArrayList list = new75();
            push(goTo(0), list);
          }
          break;
        case 76: /* reduce AAgrammar77Grammar */
          {
            ArrayList list = new76();
            push(goTo(0), list);
          }
          break;
        case 77: /* reduce AAgrammar78Grammar */
          {
            ArrayList list = new77();
            push(goTo(0), list);
          }
          break;
        case 78: /* reduce AAgrammar79Grammar */
          {
            ArrayList list = new78();
            push(goTo(0), list);
          }
          break;
        case 79: /* reduce AAgrammar80Grammar */
          {
            ArrayList list = new79();
            push(goTo(0), list);
          }
          break;
        case 80: /* reduce AAgrammar81Grammar */
          {
            ArrayList list = new80();
            push(goTo(0), list);
          }
          break;
        case 81: /* reduce AAgrammar82Grammar */
          {
            ArrayList list = new81();
            push(goTo(0), list);
          }
          break;
        case 82: /* reduce AAgrammar83Grammar */
          {
            ArrayList list = new82();
            push(goTo(0), list);
          }
          break;
        case 83: /* reduce AAgrammar84Grammar */
          {
            ArrayList list = new83();
            push(goTo(0), list);
          }
          break;
        case 84: /* reduce AAgrammar85Grammar */
          {
            ArrayList list = new84();
            push(goTo(0), list);
          }
          break;
        case 85: /* reduce AAgrammar86Grammar */
          {
            ArrayList list = new85();
            push(goTo(0), list);
          }
          break;
        case 86: /* reduce AAgrammar87Grammar */
          {
            ArrayList list = new86();
            push(goTo(0), list);
          }
          break;
        case 87: /* reduce AAgrammar88Grammar */
          {
            ArrayList list = new87();
            push(goTo(0), list);
          }
          break;
        case 88: /* reduce AAgrammar89Grammar */
          {
            ArrayList list = new88();
            push(goTo(0), list);
          }
          break;
        case 89: /* reduce AAgrammar90Grammar */
          {
            ArrayList list = new89();
            push(goTo(0), list);
          }
          break;
        case 90: /* reduce AAgrammar91Grammar */
          {
            ArrayList list = new90();
            push(goTo(0), list);
          }
          break;
        case 91: /* reduce AAgrammar92Grammar */
          {
            ArrayList list = new91();
            push(goTo(0), list);
          }
          break;
        case 92: /* reduce AAgrammar93Grammar */
          {
            ArrayList list = new92();
            push(goTo(0), list);
          }
          break;
        case 93: /* reduce AAgrammar94Grammar */
          {
            ArrayList list = new93();
            push(goTo(0), list);
          }
          break;
        case 94: /* reduce AAgrammar95Grammar */
          {
            ArrayList list = new94();
            push(goTo(0), list);
          }
          break;
        case 95: /* reduce AAgrammar96Grammar */
          {
            ArrayList list = new95();
            push(goTo(0), list);
          }
          break;
        case 96: /* reduce AAgrammar97Grammar */
          {
            ArrayList list = new96();
            push(goTo(0), list);
          }
          break;
        case 97: /* reduce AAgrammar98Grammar */
          {
            ArrayList list = new97();
            push(goTo(0), list);
          }
          break;
        case 98: /* reduce AAgrammar99Grammar */
          {
            ArrayList list = new98();
            push(goTo(0), list);
          }
          break;
        case 99: /* reduce AAgrammar100Grammar */
          {
            ArrayList list = new99();
            push(goTo(0), list);
          }
          break;
        case 100: /* reduce AAgrammar101Grammar */
          {
            ArrayList list = new100();
            push(goTo(0), list);
          }
          break;
        case 101: /* reduce AAgrammar102Grammar */
          {
            ArrayList list = new101();
            push(goTo(0), list);
          }
          break;
        case 102: /* reduce AAgrammar103Grammar */
          {
            ArrayList list = new102();
            push(goTo(0), list);
          }
          break;
        case 103: /* reduce AAgrammar104Grammar */
          {
            ArrayList list = new103();
            push(goTo(0), list);
          }
          break;
        case 104: /* reduce AAgrammar105Grammar */
          {
            ArrayList list = new104();
            push(goTo(0), list);
          }
          break;
        case 105: /* reduce AAgrammar106Grammar */
          {
            ArrayList list = new105();
            push(goTo(0), list);
          }
          break;
        case 106: /* reduce AAgrammar107Grammar */
          {
            ArrayList list = new106();
            push(goTo(0), list);
          }
          break;
        case 107: /* reduce AAgrammar108Grammar */
          {
            ArrayList list = new107();
            push(goTo(0), list);
          }
          break;
        case 108: /* reduce AAgrammar109Grammar */
          {
            ArrayList list = new108();
            push(goTo(0), list);
          }
          break;
        case 109: /* reduce AAgrammar110Grammar */
          {
            ArrayList list = new109();
            push(goTo(0), list);
          }
          break;
        case 110: /* reduce AAgrammar111Grammar */
          {
            ArrayList list = new110();
            push(goTo(0), list);
          }
          break;
        case 111: /* reduce AAgrammar112Grammar */
          {
            ArrayList list = new111();
            push(goTo(0), list);
          }
          break;
        case 112: /* reduce AAgrammar113Grammar */
          {
            ArrayList list = new112();
            push(goTo(0), list);
          }
          break;
        case 113: /* reduce AAgrammar114Grammar */
          {
            ArrayList list = new113();
            push(goTo(0), list);
          }
          break;
        case 114: /* reduce AAgrammar115Grammar */
          {
            ArrayList list = new114();
            push(goTo(0), list);
          }
          break;
        case 115: /* reduce AAgrammar116Grammar */
          {
            ArrayList list = new115();
            push(goTo(0), list);
          }
          break;
        case 116: /* reduce AAgrammar117Grammar */
          {
            ArrayList list = new116();
            push(goTo(0), list);
          }
          break;
        case 117: /* reduce AAgrammar118Grammar */
          {
            ArrayList list = new117();
            push(goTo(0), list);
          }
          break;
        case 118: /* reduce AAgrammar119Grammar */
          {
            ArrayList list = new118();
            push(goTo(0), list);
          }
          break;
        case 119: /* reduce AAgrammar120Grammar */
          {
            ArrayList list = new119();
            push(goTo(0), list);
          }
          break;
        case 120: /* reduce AAgrammar121Grammar */
          {
            ArrayList list = new120();
            push(goTo(0), list);
          }
          break;
        case 121: /* reduce AAgrammar122Grammar */
          {
            ArrayList list = new121();
            push(goTo(0), list);
          }
          break;
        case 122: /* reduce AAgrammar123Grammar */
          {
            ArrayList list = new122();
            push(goTo(0), list);
          }
          break;
        case 123: /* reduce AAgrammar124Grammar */
          {
            ArrayList list = new123();
            push(goTo(0), list);
          }
          break;
        case 124: /* reduce AAgrammar125Grammar */
          {
            ArrayList list = new124();
            push(goTo(0), list);
          }
          break;
        case 125: /* reduce AAgrammar126Grammar */
          {
            ArrayList list = new125();
            push(goTo(0), list);
          }
          break;
        case 126: /* reduce AAgrammar127Grammar */
          {
            ArrayList list = new126();
            push(goTo(0), list);
          }
          break;
        case 127: /* reduce AAgrammar128Grammar */
          {
            ArrayList list = new127();
            push(goTo(0), list);
          }
          break;
        case 128: /* reduce APackage */
          {
            ArrayList list = new128();
            push(goTo(1), list);
          }
          break;
        case 129: /* reduce AApkgname1PkgName */
          {
            ArrayList list = new129();
            push(goTo(2), list);
          }
          break;
        case 130: /* reduce AApkgname2PkgName */
          {
            ArrayList list = new130();
            push(goTo(2), list);
          }
          break;
        case 131: /* reduce APkgNameTail */
          {
            ArrayList list = new131();
            push(goTo(3), list);
          }
          break;
        case 132: /* reduce AHelpers */
          {
            ArrayList list = new132();
            push(goTo(4), list);
          }
          break;
        case 133: /* reduce AHelperDef */
          {
            ArrayList list = new133();
            push(goTo(5), list);
          }
          break;
        case 134: /* reduce AStates */
          {
            ArrayList list = new134();
            push(goTo(6), list);
          }
          break;
        case 135: /* reduce AAidlist1IdList */
          {
            ArrayList list = new135();
            push(goTo(7), list);
          }
          break;
        case 136: /* reduce AAidlist2IdList */
          {
            ArrayList list = new136();
            push(goTo(7), list);
          }
          break;
        case 137: /* reduce AIdListTail */
          {
            ArrayList list = new137();
            push(goTo(8), list);
          }
          break;
        case 138: /* reduce ATokens */
          {
            ArrayList list = new138();
            push(goTo(9), list);
          }
          break;
        case 139: /* reduce AAtokendef1TokenDef */
          {
            ArrayList list = new139();
            push(goTo(10), list);
          }
          break;
        case 140: /* reduce AAtokendef2TokenDef */
          {
            ArrayList list = new140();
            push(goTo(10), list);
          }
          break;
        case 141: /* reduce AAtokendef3TokenDef */
          {
            ArrayList list = new141();
            push(goTo(10), list);
          }
          break;
        case 142: /* reduce AAtokendef4TokenDef */
          {
            ArrayList list = new142();
            push(goTo(10), list);
          }
          break;
        case 143: /* reduce AAstatelist1StateList */
          {
            ArrayList list = new143();
            push(goTo(11), list);
          }
          break;
        case 144: /* reduce AAstatelist2StateList */
          {
            ArrayList list = new144();
            push(goTo(11), list);
          }
          break;
        case 145: /* reduce AAstatelist3StateList */
          {
            ArrayList list = new145();
            push(goTo(11), list);
          }
          break;
        case 146: /* reduce AAstatelist4StateList */
          {
            ArrayList list = new146();
            push(goTo(11), list);
          }
          break;
        case 147: /* reduce AAstatelisttail1StateListTail */
          {
            ArrayList list = new147();
            push(goTo(12), list);
          }
          break;
        case 148: /* reduce AAstatelisttail2StateListTail */
          {
            ArrayList list = new148();
            push(goTo(12), list);
          }
          break;
        case 149: /* reduce ATransition */
          {
            ArrayList list = new149();
            push(goTo(13), list);
          }
          break;
        case 150: /* reduce AAigntokens1IgnTokens */
          {
            ArrayList list = new150();
            push(goTo(14), list);
          }
          break;
        case 151: /* reduce AAigntokens2IgnTokens */
          {
            ArrayList list = new151();
            push(goTo(14), list);
          }
          break;
        case 152: /* reduce ALookAhead */
          {
            ArrayList list = new152();
            push(goTo(15), list);
          }
          break;
        case 153: /* reduce AAregexp1RegExp */
          {
            ArrayList list = new153();
            push(goTo(16), list);
          }
          break;
        case 154: /* reduce AAregexp2RegExp */
          {
            ArrayList list = new154();
            push(goTo(16), list);
          }
          break;
        case 155: /* reduce ARegExpTail */
          {
            ArrayList list = new155();
            push(goTo(17), list);
          }
          break;
        case 156: /* reduce AAconcat1Concat */
          {
            ArrayList list = new156();
            push(goTo(18), list);
          }
          break;
        case 157: /* reduce AAconcat2Concat */
          {
            ArrayList list = new157();
            push(goTo(18), list);
          }
          break;
        case 158: /* reduce AAunexp1UnExp */
          {
            ArrayList list = new158();
            push(goTo(19), list);
          }
          break;
        case 159: /* reduce AAunexp2UnExp */
          {
            ArrayList list = new159();
            push(goTo(19), list);
          }
          break;
        case 160: /* reduce ACharBasic */
          {
            ArrayList list = new160();
            push(goTo(20), list);
          }
          break;
        case 161: /* reduce ASetBasic */
          {
            ArrayList list = new161();
            push(goTo(20), list);
          }
          break;
        case 162: /* reduce AStringBasic */
          {
            ArrayList list = new162();
            push(goTo(20), list);
          }
          break;
        case 163: /* reduce AIdBasic */
          {
            ArrayList list = new163();
            push(goTo(20), list);
          }
          break;
        case 164: /* reduce ARegExpBasic */
          {
            ArrayList list = new164();
            push(goTo(20), list);
          }
          break;
        case 165: /* reduce ACharChar */
          {
            ArrayList list = new165();
            push(goTo(21), list);
          }
          break;
        case 166: /* reduce ADecChar */
          {
            ArrayList list = new166();
            push(goTo(21), list);
          }
          break;
        case 167: /* reduce AHexChar */
          {
            ArrayList list = new167();
            push(goTo(21), list);
          }
          break;
        case 168: /* reduce AOperationSet */
          {
            ArrayList list = new168();
            push(goTo(22), list);
          }
          break;
        case 169: /* reduce AIntervalSet */
          {
            ArrayList list = new169();
            push(goTo(22), list);
          }
          break;
        case 170: /* reduce AStarUnOp */
          {
            ArrayList list = new170();
            push(goTo(23), list);
          }
          break;
        case 171: /* reduce AQMarkUnOp */
          {
            ArrayList list = new171();
            push(goTo(23), list);
          }
          break;
        case 172: /* reduce APlusUnOp */
          {
            ArrayList list = new172();
            push(goTo(23), list);
          }
          break;
        case 173: /* reduce APlusBinOp */
          {
            ArrayList list = new173();
            push(goTo(24), list);
          }
          break;
        case 174: /* reduce AMinusBinOp */
          {
            ArrayList list = new174();
            push(goTo(24), list);
          }
          break;
        case 175: /* reduce AProductions */
          {
            ArrayList list = new175();
            push(goTo(25), list);
          }
          break;
        case 176: /* reduce AAprod1Prod */
          {
            ArrayList list = new176();
            push(goTo(26), list);
          }
          break;
        case 177: /* reduce AAprod2Prod */
          {
            ArrayList list = new177();
            push(goTo(26), list);
          }
          break;
        case 178: /* reduce AAprodtransform1ProdTransform */
          {
            ArrayList list = new178();
            push(goTo(27), list);
          }
          break;
        case 179: /* reduce AAprodtransform2ProdTransform */
          {
            ArrayList list = new179();
            push(goTo(27), list);
          }
          break;
        case 180: /* reduce AAalts1Alts */
          {
            ArrayList list = new180();
            push(goTo(28), list);
          }
          break;
        case 181: /* reduce AAalts2Alts */
          {
            ArrayList list = new181();
            push(goTo(28), list);
          }
          break;
        case 182: /* reduce AAltsTail */
          {
            ArrayList list = new182();
            push(goTo(29), list);
          }
          break;
        case 183: /* reduce AAalt1Alt */
          {
            ArrayList list = new183();
            push(goTo(30), list);
          }
          break;
        case 184: /* reduce AAalt2Alt */
          {
            ArrayList list = new184();
            push(goTo(30), list);
          }
          break;
        case 185: /* reduce AAalt3Alt */
          {
            ArrayList list = new185();
            push(goTo(30), list);
          }
          break;
        case 186: /* reduce AAalt4Alt */
          {
            ArrayList list = new186();
            push(goTo(30), list);
          }
          break;
        case 187: /* reduce AAalt5Alt */
          {
            ArrayList list = new187();
            push(goTo(30), list);
          }
          break;
        case 188: /* reduce AAalt6Alt */
          {
            ArrayList list = new188();
            push(goTo(30), list);
          }
          break;
        case 189: /* reduce AAalt7Alt */
          {
            ArrayList list = new189();
            push(goTo(30), list);
          }
          break;
        case 190: /* reduce AAalt8Alt */
          {
            ArrayList list = new190();
            push(goTo(30), list);
          }
          break;
        case 191: /* reduce AAalttransform1AltTransform */
          {
            ArrayList list = new191();
            push(goTo(31), list);
          }
          break;
        case 192: /* reduce AAalttransform2AltTransform */
          {
            ArrayList list = new192();
            push(goTo(31), list);
          }
          break;
        case 193: /* reduce AAnewterm1Term */
          {
            ArrayList list = new193();
            push(goTo(32), list);
          }
          break;
        case 194: /* reduce AAnewterm2Term */
          {
            ArrayList list = new194();
            push(goTo(32), list);
          }
          break;
        case 195: /* reduce AAlistterm1Term */
          {
            ArrayList list = new195();
            push(goTo(32), list);
          }
          break;
        case 196: /* reduce AAlistterm2Term */
          {
            ArrayList list = new196();
            push(goTo(32), list);
          }
          break;
        case 197: /* reduce AAsimpleterm1Term */
          {
            ArrayList list = new197();
            push(goTo(32), list);
          }
          break;
        case 198: /* reduce AAsimpleterm2Term */
          {
            ArrayList list = new198();
            push(goTo(32), list);
          }
          break;
        case 199: /* reduce AAsimpleterm3Term */
          {
            ArrayList list = new199();
            push(goTo(32), list);
          }
          break;
        case 200: /* reduce AAsimpleterm4Term */
          {
            ArrayList list = new200();
            push(goTo(32), list);
          }
          break;
        case 201: /* reduce ANullTerm */
          {
            ArrayList list = new201();
            push(goTo(32), list);
          }
          break;
        case 202: /* reduce AAlistoflistterm1ListOfListTerm */
          {
            ArrayList list = new202();
            push(goTo(33), list);
          }
          break;
        case 203: /* reduce AAlistoflistterm2ListOfListTerm */
          {
            ArrayList list = new203();
            push(goTo(33), list);
          }
          break;
        case 204: /* reduce AAnewlistterm1ListTerm */
          {
            ArrayList list = new204();
            push(goTo(34), list);
          }
          break;
        case 205: /* reduce AAnewlistterm2ListTerm */
          {
            ArrayList list = new205();
            push(goTo(34), list);
          }
          break;
        case 206: /* reduce AAsimplelistterm1ListTerm */
          {
            ArrayList list = new206();
            push(goTo(34), list);
          }
          break;
        case 207: /* reduce AAsimplelistterm2ListTerm */
          {
            ArrayList list = new207();
            push(goTo(34), list);
          }
          break;
        case 208: /* reduce AAsimplelistterm3ListTerm */
          {
            ArrayList list = new208();
            push(goTo(34), list);
          }
          break;
        case 209: /* reduce AAsimplelistterm4ListTerm */
          {
            ArrayList list = new209();
            push(goTo(34), list);
          }
          break;
        case 210: /* reduce AListTermTail */
          {
            ArrayList list = new210();
            push(goTo(35), list);
          }
          break;
        case 211: /* reduce ASimpleTermTail */
          {
            ArrayList list = new211();
            push(goTo(36), list);
          }
          break;
        case 212: /* reduce AAprodname1ProdName */
          {
            ArrayList list = new212();
            push(goTo(37), list);
          }
          break;
        case 213: /* reduce AAprodname2ProdName */
          {
            ArrayList list = new213();
            push(goTo(37), list);
          }
          break;
        case 214: /* reduce AProdNameTail */
          {
            ArrayList list = new214();
            push(goTo(38), list);
          }
          break;
        case 215: /* reduce AAparams1Params */
          {
            ArrayList list = new215();
            push(goTo(39), list);
          }
          break;
        case 216: /* reduce AAparams2Params */
          {
            ArrayList list = new216();
            push(goTo(39), list);
          }
          break;
        case 217: /* reduce AParamsTail */
          {
            ArrayList list = new217();
            push(goTo(40), list);
          }
          break;
        case 218: /* reduce AAltName */
          {
            ArrayList list = new218();
            push(goTo(41), list);
          }
          break;
        case 219: /* reduce AAelem1Elem */
          {
            ArrayList list = new219();
            push(goTo(42), list);
          }
          break;
        case 220: /* reduce AAelem2Elem */
          {
            ArrayList list = new220();
            push(goTo(42), list);
          }
          break;
        case 221: /* reduce AAelem3Elem */
          {
            ArrayList list = new221();
            push(goTo(42), list);
          }
          break;
        case 222: /* reduce AAelem4Elem */
          {
            ArrayList list = new222();
            push(goTo(42), list);
          }
          break;
        case 223: /* reduce AAelem5Elem */
          {
            ArrayList list = new223();
            push(goTo(42), list);
          }
          break;
        case 224: /* reduce AAelem6Elem */
          {
            ArrayList list = new224();
            push(goTo(42), list);
          }
          break;
        case 225: /* reduce AAelem7Elem */
          {
            ArrayList list = new225();
            push(goTo(42), list);
          }
          break;
        case 226: /* reduce AAelem8Elem */
          {
            ArrayList list = new226();
            push(goTo(42), list);
          }
          break;
        case 227: /* reduce AElemName */
          {
            ArrayList list = new227();
            push(goTo(43), list);
          }
          break;
        case 228: /* reduce ATokenSpecifier */
          {
            ArrayList list = new228();
            push(goTo(44), list);
          }
          break;
        case 229: /* reduce AProductionSpecifier */
          {
            ArrayList list = new229();
            push(goTo(44), list);
          }
          break;
        case 230: /* reduce AAst */
          {
            ArrayList list = new230();
            push(goTo(45), list);
          }
          break;
        case 231: /* reduce AAstProd */
          {
            ArrayList list = new231();
            push(goTo(46), list);
          }
          break;
        case 232: /* reduce AAastalts1AstAlts */
          {
            ArrayList list = new232();
            push(goTo(47), list);
          }
          break;
        case 233: /* reduce AAastalts2AstAlts */
          {
            ArrayList list = new233();
            push(goTo(47), list);
          }
          break;
        case 234: /* reduce AAstAltsTail */
          {
            ArrayList list = new234();
            push(goTo(48), list);
          }
          break;
        case 235: /* reduce AAastalt1AstAlt */
          {
            ArrayList list = new235();
            push(goTo(49), list);
          }
          break;
        case 236: /* reduce AAastalt2AstAlt */
          {
            ArrayList list = new236();
            push(goTo(49), list);
          }
          break;
        case 237: /* reduce AAastalt3AstAlt */
          {
            ArrayList list = new237();
            push(goTo(49), list);
          }
          break;
        case 238: /* reduce AAastalt4AstAlt */
          {
            ArrayList list = new238();
            push(goTo(49), list);
          }
          break;
        case 239: /* reduce ATerminal$PkgNameTail */
          {
            ArrayList list = new239();
            push(goTo(50), list);
          }
          break;
        case 240: /* reduce ANonTerminal$PkgNameTail */
          {
            ArrayList list = new240();
            push(goTo(50), list);
          }
          break;
        case 241: /* reduce ATerminal$HelperDef */
          {
            ArrayList list = new241();
            push(goTo(51), list);
          }
          break;
        case 242: /* reduce ANonTerminal$HelperDef */
          {
            ArrayList list = new242();
            push(goTo(51), list);
          }
          break;
        case 243: /* reduce ATerminal$IdListTail */
          {
            ArrayList list = new243();
            push(goTo(52), list);
          }
          break;
        case 244: /* reduce ANonTerminal$IdListTail */
          {
            ArrayList list = new244();
            push(goTo(52), list);
          }
          break;
        case 245: /* reduce ATerminal$TokenDef */
          {
            ArrayList list = new245();
            push(goTo(53), list);
          }
          break;
        case 246: /* reduce ANonTerminal$TokenDef */
          {
            ArrayList list = new246();
            push(goTo(53), list);
          }
          break;
        case 247: /* reduce ATerminal$StateListTail */
          {
            ArrayList list = new247();
            push(goTo(54), list);
          }
          break;
        case 248: /* reduce ANonTerminal$StateListTail */
          {
            ArrayList list = new248();
            push(goTo(54), list);
          }
          break;
        case 249: /* reduce ATerminal$RegExpTail */
          {
            ArrayList list = new249();
            push(goTo(55), list);
          }
          break;
        case 250: /* reduce ANonTerminal$RegExpTail */
          {
            ArrayList list = new250();
            push(goTo(55), list);
          }
          break;
        case 251: /* reduce ATerminal$UnExp */
          {
            ArrayList list = new251();
            push(goTo(56), list);
          }
          break;
        case 252: /* reduce ANonTerminal$UnExp */
          {
            ArrayList list = new252();
            push(goTo(56), list);
          }
          break;
        case 253: /* reduce ATerminal$Prod */
          {
            ArrayList list = new253();
            push(goTo(57), list);
          }
          break;
        case 254: /* reduce ANonTerminal$Prod */
          {
            ArrayList list = new254();
            push(goTo(57), list);
          }
          break;
        case 255: /* reduce ATerminal$Elem */
          {
            ArrayList list = new255();
            push(goTo(58), list);
          }
          break;
        case 256: /* reduce ANonTerminal$Elem */
          {
            ArrayList list = new256();
            push(goTo(58), list);
          }
          break;
        case 257: /* reduce ATerminal$AltsTail */
          {
            ArrayList list = new257();
            push(goTo(59), list);
          }
          break;
        case 258: /* reduce ANonTerminal$AltsTail */
          {
            ArrayList list = new258();
            push(goTo(59), list);
          }
          break;
        case 259: /* reduce ATerminal$Term */
          {
            ArrayList list = new259();
            push(goTo(60), list);
          }
          break;
        case 260: /* reduce ANonTerminal$Term */
          {
            ArrayList list = new260();
            push(goTo(60), list);
          }
          break;
        case 261: /* reduce ATerminal$ListTermTail */
          {
            ArrayList list = new261();
            push(goTo(61), list);
          }
          break;
        case 262: /* reduce ANonTerminal$ListTermTail */
          {
            ArrayList list = new262();
            push(goTo(61), list);
          }
          break;
        case 263: /* reduce ATerminal$ParamsTail */
          {
            ArrayList list = new263();
            push(goTo(62), list);
          }
          break;
        case 264: /* reduce ANonTerminal$ParamsTail */
          {
            ArrayList list = new264();
            push(goTo(62), list);
          }
          break;
        case 265: /* reduce ATerminal$AstProd */
          {
            ArrayList list = new265();
            push(goTo(63), list);
          }
          break;
        case 266: /* reduce ANonTerminal$AstProd */
          {
            ArrayList list = new266();
            push(goTo(63), list);
          }
          break;
        case 267: /* reduce ATerminal$AstAltsTail */
          {
            ArrayList list = new267();
            push(goTo(64), list);
          }
          break;
        case 268: /* reduce ANonTerminal$AstAltsTail */
          {
            ArrayList list = new268();
            push(goTo(64), list);
          }
          break;
        }
        break;
      case ACCEPT:
        {
          EOF node2 = (EOF) lexer.next();
          PGrammar node1 = (PGrammar) ((ArrayList)pop()).get(0);
          Start node = new Start(node1, node2);
          return node;
        }
      case ERROR:
        throw new ParserException(last_token,
                                  "[" + last_line + "," + last_pos + "] " +
                                  errorMessages[errors[action[1]]]);
      }
    }
  }

  ArrayList new0() /* reduce AAgrammar1Grammar */
  {
    ArrayList nodeList = new ArrayList();

    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new1() /* reduce AAgrammar2Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new2() /* reduce AAgrammar3Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new3() /* reduce AAgrammar4Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new4() /* reduce AAgrammar5Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new5() /* reduce AAgrammar6Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new6() /* reduce AAgrammar7Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new7() /* reduce AAgrammar8Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new8() /* reduce AAgrammar9Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new9() /* reduce AAgrammar10Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new10() /* reduce AAgrammar11Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new11() /* reduce AAgrammar12Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new12() /* reduce AAgrammar13Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new13() /* reduce AAgrammar14Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new14() /* reduce AAgrammar15Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      ptokensNode5 = (PTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new15() /* reduce AAgrammar16Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      ptokensNode6 = (PTokens)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new16() /* reduce AAgrammar17Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new17() /* reduce AAgrammar18Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new18() /* reduce AAgrammar19Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new19() /* reduce AAgrammar20Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new20() /* reduce AAgrammar21Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new21() /* reduce AAgrammar22Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new22() /* reduce AAgrammar23Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new23() /* reduce AAgrammar24Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new24() /* reduce AAgrammar25Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new25() /* reduce AAgrammar26Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new26() /* reduce AAgrammar27Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new27() /* reduce AAgrammar28Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new28() /* reduce AAgrammar29Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new29() /* reduce AAgrammar30Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new30() /* reduce AAgrammar31Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      ptokensNode5 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new31() /* reduce AAgrammar32Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      ptokensNode6 = (PTokens)nodeArrayList4.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new32() /* reduce AAgrammar33Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      pproductionsNode7 = (PProductions)nodeArrayList1.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new33() /* reduce AAgrammar34Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pproductionsNode8 = (PProductions)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new34() /* reduce AAgrammar35Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new35() /* reduce AAgrammar36Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new36() /* reduce AAgrammar37Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new37() /* reduce AAgrammar38Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new38() /* reduce AAgrammar39Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new39() /* reduce AAgrammar40Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new40() /* reduce AAgrammar41Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new41() /* reduce AAgrammar42Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new42() /* reduce AAgrammar43Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new43() /* reduce AAgrammar44Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new44() /* reduce AAgrammar45Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new45() /* reduce AAgrammar46Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new46() /* reduce AAgrammar47Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      ptokensNode5 = (PTokens)nodeArrayList3.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new47() /* reduce AAgrammar48Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      ptokensNode6 = (PTokens)nodeArrayList4.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new48() /* reduce AAgrammar49Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new49() /* reduce AAgrammar50Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new50() /* reduce AAgrammar51Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new51() /* reduce AAgrammar52Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new52() /* reduce AAgrammar53Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new53() /* reduce AAgrammar54Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new54() /* reduce AAgrammar55Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new55() /* reduce AAgrammar56Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new56() /* reduce AAgrammar57Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new57() /* reduce AAgrammar58Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new58() /* reduce AAgrammar59Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new59() /* reduce AAgrammar60Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new60() /* reduce AAgrammar61Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new61() /* reduce AAgrammar62Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new62() /* reduce AAgrammar63Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      Object nullNode8 = null;
      {}
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new63() /* reduce AAgrammar64Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      Object nullNode9 = null;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, null);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new64() /* reduce AAgrammar65Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      pastNode8 = (PAst)nodeArrayList1.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new65() /* reduce AAgrammar66Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pastNode9 = (PAst)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new66() /* reduce AAgrammar67Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pastNode8 = (PAst)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new67() /* reduce AAgrammar68Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pastNode9 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new68() /* reduce AAgrammar69Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      pastNode8 = (PAst)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new69() /* reduce AAgrammar70Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pastNode9 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new70() /* reduce AAgrammar71Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new71() /* reduce AAgrammar72Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new72() /* reduce AAgrammar73Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);
      pastNode8 = (PAst)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new73() /* reduce AAgrammar74Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pastNode9 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new74() /* reduce AAgrammar75Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new75() /* reduce AAgrammar76Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new76() /* reduce AAgrammar77Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new77() /* reduce AAgrammar78Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new78() /* reduce AAgrammar79Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      ptokensNode5 = (PTokens)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new79() /* reduce AAgrammar80Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      ptokensNode6 = (PTokens)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new80() /* reduce AAgrammar81Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
      pastNode8 = (PAst)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new81() /* reduce AAgrammar82Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
      pastNode9 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new82() /* reduce AAgrammar83Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new83() /* reduce AAgrammar84Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new84() /* reduce AAgrammar85Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new85() /* reduce AAgrammar86Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new86() /* reduce AAgrammar87Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new87() /* reduce AAgrammar88Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new88() /* reduce AAgrammar89Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new89() /* reduce AAgrammar90Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new90() /* reduce AAgrammar91Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new91() /* reduce AAgrammar92Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new92() /* reduce AAgrammar93Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      PAst pastNode8;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode6 = (PIgnTokens)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new93() /* reduce AAgrammar94Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new94() /* reduce AAgrammar95Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      PIgnTokens pigntokensNode6;
      Object nullNode7 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, null, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new95() /* reduce AAgrammar96Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      Object nullNode8 = null;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, null, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new96() /* reduce AAgrammar97Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
      pastNode8 = (PAst)nodeArrayList2.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new97() /* reduce AAgrammar98Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pproductionsNode8 = (PProductions)nodeArrayList2.get(0);
      pastNode9 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new98() /* reduce AAgrammar99Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new99() /* reduce AAgrammar100Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new100() /* reduce AAgrammar101Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new101() /* reduce AAgrammar102Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new102() /* reduce AAgrammar103Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      pstatesNode4 = (PStates)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new103() /* reduce AAgrammar104Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pstatesNode5 = (PStates)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new104() /* reduce AAgrammar105Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      ptokensNode5 = (PTokens)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new105() /* reduce AAgrammar106Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new106() /* reduce AAgrammar107Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new107() /* reduce AAgrammar108Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new108() /* reduce AAgrammar109Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      pstatesNode4 = (PStates)nodeArrayList1.get(0);
      ptokensNode5 = (PTokens)nodeArrayList2.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList3.get(0);
      pastNode8 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new109() /* reduce AAgrammar110Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      ptokensNode6 = (PTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new110() /* reduce AAgrammar111Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      PTokens ptokensNode5;
      Object nullNode6 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, null, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new111() /* reduce AAgrammar112Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      Object nullNode7 = null;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, null, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new112() /* reduce AAgrammar113Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      Object nullNode5 = null;
      PIgnTokens pigntokensNode6;
      PProductions pproductionsNode7;
      PAst pastNode8;
      {}
      pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
      pproductionsNode7 = (PProductions)nodeArrayList2.get(0);
      pastNode8 = (PAst)nodeArrayList3.get(0);

      pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new113() /* reduce AAgrammar114Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pigntokensNode7 = (PIgnTokens)nodeArrayList2.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList3.get(0);
      pastNode9 = (PAst)nodeArrayList4.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new114() /* reduce AAgrammar115Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      Object nullNode5 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new115() /* reduce AAgrammar116Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      phelpersNode4 = (PHelpers)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, null, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new116() /* reduce AAgrammar117Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      PStates pstatesNode4;
      Object nullNode5 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new117() /* reduce AAgrammar118Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      pstatesNode5 = (PStates)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new118() /* reduce AAgrammar119Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      PStates pstatesNode4;
      Object nullNode5 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, null, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new119() /* reduce AAgrammar120Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      Object nullNode6 = null;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, null, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new120() /* reduce AAgrammar121Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      Object nullNode4 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new121() /* reduce AAgrammar122Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }
      ptokensNode6 = (PTokens)nodeArrayList2.get(0);
      pigntokensNode7 = (PIgnTokens)nodeArrayList3.get(0);
      pproductionsNode8 = (PProductions)nodeArrayList4.get(0);
      pastNode9 = (PAst)nodeArrayList5.get(0);

      pgrammarNode1 = new AGrammar(listNode3, null, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new122() /* reduce AAgrammar123Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      PHelpers phelpersNode3;
      Object nullNode4 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new123() /* reduce AAgrammar124Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      Object nullNode5 = null;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, null, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new124() /* reduce AAgrammar125Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      Object nullNode3 = null;
      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);

      pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new125() /* reduce AAgrammar126Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, null, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new126() /* reduce AAgrammar127Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      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);

      pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, pstatesNode4, ptokensNode5, pigntokensNode6, pproductionsNode7, pastNode8);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new127() /* reduce AAgrammar128Grammar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList7 = (ArrayList) pop();
    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PGrammar pgrammarNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      PHelpers phelpersNode4;
      PStates pstatesNode5;
      PTokens ptokensNode6;
      PIgnTokens pigntokensNode7;
      PProductions pproductionsNode8;
      PAst pastNode9;
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(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);

      pgrammarNode1 = new AGrammar(listNode3, phelpersNode4, pstatesNode5, ptokensNode6, pigntokensNode7, pproductionsNode8, pastNode9);
    }
    nodeList.add(pgrammarNode1);
    return nodeList;
  }

  ArrayList new128() /* reduce APackage */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      listNode1 = (TypedLinkedList)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode2.addAll(listNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new129() /* reduce AApkgname1PkgName */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      TPkgId tpkgidNode1;
      tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
      if(tpkgidNode1 != null)
      {
        listNode2.add(tpkgidNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new130() /* reduce AApkgname2PkgName */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TPkgId tpkgidNode1;
      TypedLinkedList listNode2 = new TypedLinkedList();
      tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
      listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
      if(tpkgidNode1 != null)
      {
        listNode3.add(tpkgidNode1);
      }
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new131() /* reduce APkgNameTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TPkgId tpkgidNode1;
    tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
    nodeList.add(tpkgidNode1);
    return nodeList;
  }

  ArrayList new132() /* reduce AHelpers */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PHelpers phelpersNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      phelpersNode1 = new AHelpers(listNode3);
    }
    nodeList.add(phelpersNode1);
    return nodeList;
  }

  ArrayList new133() /* reduce AHelperDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PHelperDef phelperdefNode1;
    {
      TId tidNode2;
      PRegExp pregexpNode3;
      tidNode2 = (TId)nodeArrayList1.get(0);
      pregexpNode3 = (PRegExp)nodeArrayList3.get(0);

      phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
    }
    nodeList.add(phelperdefNode1);
    return nodeList;
  }

  ArrayList new134() /* reduce AStates */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStates pstatesNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      pstatesNode1 = new AStates(listNode3);
    }
    nodeList.add(pstatesNode1);
    return nodeList;
  }

  ArrayList new135() /* reduce AAidlist1IdList */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      TId tidNode1;
      tidNode1 = (TId)nodeArrayList1.get(0);
      if(tidNode1 != null)
      {
        listNode2.add(tidNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new136() /* reduce AAidlist2IdList */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TId tidNode1;
      TypedLinkedList listNode2 = new TypedLinkedList();
      tidNode1 = (TId)nodeArrayList1.get(0);
      listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
      if(tidNode1 != null)
      {
        listNode3.add(tidNode1);
      }
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new137() /* reduce AIdListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TId tidNode1;
    tidNode1 = (TId)nodeArrayList2.get(0);
    nodeList.add(tidNode1);
    return nodeList;
  }

  ArrayList new138() /* reduce ATokens */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTokens ptokensNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      ptokensNode1 = new ATokens(listNode3);
    }
    nodeList.add(ptokensNode1);
    return nodeList;
  }

  ArrayList new139() /* reduce AAtokendef1TokenDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTokenDef ptokendefNode1;
    {
      Object nullNode2 = null;
      TId tidNode3;
      PRegExp pregexpNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      tidNode3 = (TId)nodeArrayList1.get(0);
      pregexpNode4 = (PRegExp)nodeArrayList3.get(0);

      ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, null, null);
    }
    nodeList.add(ptokendefNode1);
    return nodeList;
  }

  ArrayList new140() /* reduce AAtokendef2TokenDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTokenDef ptokendefNode1;
    {
      PStateList pstatelistNode2;
      TId tidNode3;
      PRegExp pregexpNode4;
      Object nullNode5 = null;
      Object nullNode6 = null;
      pstatelistNode2 = (PStateList)nodeArrayList1.get(0);
      tidNode3 = (TId)nodeArrayList2.get(0);
      pregexpNode4 = (PRegExp)nodeArrayList4.get(0);

      ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, null, null);
    }
    nodeList.add(ptokendefNode1);
    return nodeList;
  }

  ArrayList new141() /* reduce AAtokendef3TokenDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTokenDef ptokendefNode1;
    {
      Object nullNode2 = null;
      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);

      ptokendefNode1 = new ATokenDef(null, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
    }
    nodeList.add(ptokendefNode1);
    return nodeList;
  }

  ArrayList new142() /* reduce AAtokendef4TokenDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList6 = (ArrayList) pop();
    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) 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);

      ptokendefNode1 = new ATokenDef(pstatelistNode2, tidNode3, pregexpNode4, tslashNode5, pregexpNode6);
    }
    nodeList.add(ptokendefNode1);
    return nodeList;
  }

  ArrayList new143() /* reduce AAstatelist1StateList */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStateList pstatelistNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      TypedLinkedList listNode4 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList2.get(0);
      {}

      pstatelistNode1 = new AStateList(tidNode2, null, listNode4);
    }
    nodeList.add(pstatelistNode1);
    return nodeList;
  }

  ArrayList new144() /* reduce AAstatelist2StateList */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStateList pstatelistNode1;
    {
      TId tidNode2;
      PTransition ptransitionNode3;
      TypedLinkedList listNode4 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList2.get(0);
      ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
      {}

      pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode4);
    }
    nodeList.add(pstatelistNode1);
    return nodeList;
  }

  ArrayList new145() /* reduce AAstatelist3StateList */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStateList pstatelistNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      TypedLinkedList listNode5 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList2.get(0);
      {
        TypedLinkedList listNode4 = new TypedLinkedList();
        listNode4 = (TypedLinkedList)nodeArrayList3.get(0);
        if(listNode4 != null)
        {
          listNode5.addAll(listNode4);
        }
      }

      pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
    }
    nodeList.add(pstatelistNode1);
    return nodeList;
  }

  ArrayList new146() /* reduce AAstatelist4StateList */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStateList pstatelistNode1;
    {
      TId tidNode2;
      PTransition ptransitionNode3;
      TypedLinkedList listNode5 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList2.get(0);
      ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
      {
        TypedLinkedList listNode4 = new TypedLinkedList();
        listNode4 = (TypedLinkedList)nodeArrayList4.get(0);
        if(listNode4 != null)
        {
          listNode5.addAll(listNode4);
        }
      }

      pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
    }
    nodeList.add(pstatelistNode1);
    return nodeList;
  }

  ArrayList new147() /* reduce AAstatelisttail1StateListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStateListTail pstatelisttailNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      tidNode2 = (TId)nodeArrayList2.get(0);

      pstatelisttailNode1 = new AStateListTail(tidNode2, null);
    }
    nodeList.add(pstatelisttailNode1);
    return nodeList;
  }

  ArrayList new148() /* reduce AAstatelisttail2StateListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PStateListTail pstatelisttailNode1;
    {
      TId tidNode2;
      PTransition ptransitionNode3;
      tidNode2 = (TId)nodeArrayList2.get(0);
      ptransitionNode3 = (PTransition)nodeArrayList3.get(0);

      pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
    }
    nodeList.add(pstatelisttailNode1);
    return nodeList;
  }

  ArrayList new149() /* reduce ATransition */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTransition ptransitionNode1;
    {
      TId tidNode2;
      tidNode2 = (TId)nodeArrayList2.get(0);

      ptransitionNode1 = new ATransition(tidNode2);
    }
    nodeList.add(ptransitionNode1);
    return nodeList;
  }

  ArrayList new150() /* reduce AAigntokens1IgnTokens */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PIgnTokens pigntokensNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      {}

      pigntokensNode1 = new AIgnTokens(listNode2);
    }
    nodeList.add(pigntokensNode1);
    return nodeList;
  }

  ArrayList new151() /* reduce AAigntokens2IgnTokens */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PIgnTokens pigntokensNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList3.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      pigntokensNode1 = new AIgnTokens(listNode3);
    }
    nodeList.add(pigntokensNode1);
    return nodeList;
  }

  ArrayList new152() /* reduce ALookAhead */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TSlash tslashNode1;
    PRegExp pregexpNode2;
    tslashNode1 = (TSlash)nodeArrayList1.get(0);
    pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
    nodeList.add(tslashNode1);
    nodeList.add(pregexpNode2);
    return nodeList;
  }

  ArrayList new153() /* reduce AAregexp1RegExp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PRegExp pregexpNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        PConcat pconcatNode2;
        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
        if(pconcatNode2 != null)
        {
          listNode3.add(pconcatNode2);
        }
      }

      pregexpNode1 = new ARegExp(listNode3);
    }
    nodeList.add(pregexpNode1);
    return nodeList;
  }

  ArrayList new154() /* reduce AAregexp2RegExp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PRegExp pregexpNode1;
    {
      TypedLinkedList listNode4 = new TypedLinkedList();
      {
        PConcat pconcatNode2;
        TypedLinkedList listNode3 = new TypedLinkedList();
        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
        listNode3 = (TypedLinkedList)nodeArrayList2.get(0);
        if(pconcatNode2 != null)
        {
          listNode4.add(pconcatNode2);
        }
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      pregexpNode1 = new ARegExp(listNode4);
    }
    nodeList.add(pregexpNode1);
    return nodeList;
  }

  ArrayList new155() /* reduce ARegExpTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PConcat pconcatNode1;
    pconcatNode1 = (PConcat)nodeArrayList2.get(0);
    nodeList.add(pconcatNode1);
    return nodeList;
  }

  ArrayList new156() /* reduce AAconcat1Concat */
  {
    ArrayList nodeList = new ArrayList();

    PConcat pconcatNode1;
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      {}

      pconcatNode1 = new AConcat(listNode2);
    }
    nodeList.add(pconcatNode1);
    return nodeList;
  }

  ArrayList new157() /* reduce AAconcat2Concat */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PConcat pconcatNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      pconcatNode1 = new AConcat(listNode3);
    }
    nodeList.add(pconcatNode1);
    return nodeList;
  }

  ArrayList new158() /* reduce AAunexp1UnExp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PUnExp punexpNode1;
    {
      PBasic pbasicNode2;
      Object nullNode3 = null;
      pbasicNode2 = (PBasic)nodeArrayList1.get(0);

      punexpNode1 = new AUnExp(pbasicNode2, null);
    }
    nodeList.add(punexpNode1);
    return nodeList;
  }

  ArrayList new159() /* reduce AAunexp2UnExp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PUnExp punexpNode1;
    {
      PBasic pbasicNode2;
      PUnOp punopNode3;
      pbasicNode2 = (PBasic)nodeArrayList1.get(0);
      punopNode3 = (PUnOp)nodeArrayList2.get(0);

      punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
    }
    nodeList.add(punexpNode1);
    return nodeList;
  }

  ArrayList new160() /* reduce ACharBasic */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBasic pbasicNode1;
    {
      PChar pcharNode2;
      pcharNode2 = (PChar)nodeArrayList1.get(0);

      pbasicNode1 = new ACharBasic(pcharNode2);
    }
    nodeList.add(pbasicNode1);
    return nodeList;
  }

  ArrayList new161() /* reduce ASetBasic */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBasic pbasicNode1;
    {
      PSet psetNode2;
      psetNode2 = (PSet)nodeArrayList1.get(0);

      pbasicNode1 = new ASetBasic(psetNode2);
    }
    nodeList.add(pbasicNode1);
    return nodeList;
  }

  ArrayList new162() /* reduce AStringBasic */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBasic pbasicNode1;
    {
      TString tstringNode2;
      tstringNode2 = (TString)nodeArrayList1.get(0);

      pbasicNode1 = new AStringBasic(tstringNode2);
    }
    nodeList.add(pbasicNode1);
    return nodeList;
  }

  ArrayList new163() /* reduce AIdBasic */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBasic pbasicNode1;
    {
      TId tidNode2;
      tidNode2 = (TId)nodeArrayList1.get(0);

      pbasicNode1 = new AIdBasic(tidNode2);
    }
    nodeList.add(pbasicNode1);
    return nodeList;
  }

  ArrayList new164() /* reduce ARegExpBasic */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBasic pbasicNode1;
    {
      PRegExp pregexpNode2;
      pregexpNode2 = (PRegExp)nodeArrayList2.get(0);

      pbasicNode1 = new ARegExpBasic(pregexpNode2);
    }
    nodeList.add(pbasicNode1);
    return nodeList;
  }

  ArrayList new165() /* reduce ACharChar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PChar pcharNode1;
    {
      TChar tcharNode2;
      tcharNode2 = (TChar)nodeArrayList1.get(0);

      pcharNode1 = new ACharChar(tcharNode2);
    }
    nodeList.add(pcharNode1);
    return nodeList;
  }

  ArrayList new166() /* reduce ADecChar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PChar pcharNode1;
    {
      TDecChar tdeccharNode2;
      tdeccharNode2 = (TDecChar)nodeArrayList1.get(0);

      pcharNode1 = new ADecChar(tdeccharNode2);
    }
    nodeList.add(pcharNode1);
    return nodeList;
  }

  ArrayList new167() /* reduce AHexChar */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PChar pcharNode1;
    {
      THexChar thexcharNode2;
      thexcharNode2 = (THexChar)nodeArrayList1.get(0);

      pcharNode1 = new AHexChar(thexcharNode2);
    }
    nodeList.add(pcharNode1);
    return nodeList;
  }

  ArrayList new168() /* reduce AOperationSet */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PSet psetNode1;
    {
      PBasic pbasicNode2;
      PBinOp pbinopNode3;
      PBasic pbasicNode4;
      pbasicNode2 = (PBasic)nodeArrayList2.get(0);
      pbinopNode3 = (PBinOp)nodeArrayList3.get(0);
      pbasicNode4 = (PBasic)nodeArrayList4.get(0);

      psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
    }
    nodeList.add(psetNode1);
    return nodeList;
  }

  ArrayList new169() /* reduce AIntervalSet */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PSet psetNode1;
    {
      PChar pcharNode2;
      PChar pcharNode3;
      pcharNode2 = (PChar)nodeArrayList2.get(0);
      pcharNode3 = (PChar)nodeArrayList4.get(0);

      psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
    }
    nodeList.add(psetNode1);
    return nodeList;
  }

  ArrayList new170() /* reduce AStarUnOp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PUnOp punopNode1;
    {
      TStar tstarNode2;
      tstarNode2 = (TStar)nodeArrayList1.get(0);

      punopNode1 = new AStarUnOp(tstarNode2);
    }
    nodeList.add(punopNode1);
    return nodeList;
  }

  ArrayList new171() /* reduce AQMarkUnOp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PUnOp punopNode1;
    {
      TQMark tqmarkNode2;
      tqmarkNode2 = (TQMark)nodeArrayList1.get(0);

      punopNode1 = new AQMarkUnOp(tqmarkNode2);
    }
    nodeList.add(punopNode1);
    return nodeList;
  }

  ArrayList new172() /* reduce APlusUnOp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PUnOp punopNode1;
    {
      TPlus tplusNode2;
      tplusNode2 = (TPlus)nodeArrayList1.get(0);

      punopNode1 = new APlusUnOp(tplusNode2);
    }
    nodeList.add(punopNode1);
    return nodeList;
  }

  ArrayList new173() /* reduce APlusBinOp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBinOp pbinopNode1;
    {

      pbinopNode1 = new APlusBinOp();
    }
    nodeList.add(pbinopNode1);
    return nodeList;
  }

  ArrayList new174() /* reduce AMinusBinOp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PBinOp pbinopNode1;
    {

      pbinopNode1 = new AMinusBinOp();
    }
    nodeList.add(pbinopNode1);
    return nodeList;
  }

  ArrayList new175() /* reduce AProductions */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PProductions pproductionsNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      pproductionsNode1 = new AProductions(listNode3);
    }
    nodeList.add(pproductionsNode1);
    return nodeList;
  }

  ArrayList new176() /* reduce AAprod1Prod */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PProd pprodNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      TypedLinkedList listNode4 = new TypedLinkedList();
      TypedLinkedList listNode6 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList1.get(0);
      {}

      {
        TypedLinkedList listNode5 = new TypedLinkedList();
        listNode5 = (TypedLinkedList)nodeArrayList3.get(0);
        if(listNode5 != null)
        {
          listNode6.addAll(listNode5);
        }
      }

      pprodNode1 = new AProd(tidNode2, null, listNode4, listNode6);
    }
    nodeList.add(pprodNode1);
    return nodeList;
  }

  ArrayList new177() /* reduce AAprod2Prod */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PProd pprodNode1;
    {
      TId tidNode2;
      TArrow tarrowNode3;
      TypedLinkedList listNode5 = new TypedLinkedList();
      TypedLinkedList listNode7 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList1.get(0);
      tarrowNode3 = (TArrow)nodeArrayList2.get(0);
      {
        TypedLinkedList listNode4 = new TypedLinkedList();
        listNode4 = (TypedLinkedList)nodeArrayList2.get(1);
        if(listNode4 != null)
        {
          listNode5.addAll(listNode4);
        }
      }
      {
        TypedLinkedList listNode6 = new TypedLinkedList();
        listNode6 = (TypedLinkedList)nodeArrayList4.get(0);
        if(listNode6 != null)
        {
          listNode7.addAll(listNode6);
        }
      }

      pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
    }
    nodeList.add(pprodNode1);
    return nodeList;
  }

  ArrayList new178() /* reduce AAprodtransform1ProdTransform */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TArrow tarrowNode1;
    TypedLinkedList listNode2 = new TypedLinkedList();
    tarrowNode1 = (TArrow)nodeArrayList2.get(0);
    {}
    nodeList.add(tarrowNode1);
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new179() /* reduce AAprodtransform2ProdTransform */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TArrow tarrowNode1;
    TypedLinkedList listNode3 = new TypedLinkedList();
    tarrowNode1 = (TArrow)nodeArrayList2.get(0);
    {
      TypedLinkedList listNode2 = new TypedLinkedList();
      listNode2 = (TypedLinkedList)nodeArrayList3.get(0);
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(tarrowNode1);
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new180() /* reduce AAalts1Alts */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PAlt paltNode1;
      paltNode1 = (PAlt)nodeArrayList1.get(0);
      if(paltNode1 != null)
      {
        listNode2.add(paltNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new181() /* reduce AAalts2Alts */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      PAlt paltNode1;
      TypedLinkedList listNode2 = new TypedLinkedList();
      paltNode1 = (PAlt)nodeArrayList1.get(0);
      listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
      if(paltNode1 != null)
      {
        listNode3.add(paltNode1);
      }
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new182() /* reduce AAltsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    paltNode1 = (PAlt)nodeArrayList2.get(0);
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new183() /* reduce AAalt1Alt */
  {
    ArrayList nodeList = new ArrayList();

    PAlt paltNode1;
    {
      Object nullNode2 = null;
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      {}

      paltNode1 = new AAlt(null, listNode3, null);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new184() /* reduce AAalt2Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode3 = new TypedLinkedList();
      Object nullNode4 = null;
      tidNode2 = (TId)nodeArrayList1.get(0);
      {}

      paltNode1 = new AAlt(tidNode2, listNode3, null);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new185() /* reduce AAalt3Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      Object nullNode2 = null;
      TypedLinkedList listNode4 = new TypedLinkedList();
      Object nullNode5 = null;
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      paltNode1 = new AAlt(null, listNode4, null);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new186() /* reduce AAalt4Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode4 = new TypedLinkedList();
      Object nullNode5 = null;
      tidNode2 = (TId)nodeArrayList1.get(0);
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      paltNode1 = new AAlt(tidNode2, listNode4, null);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new187() /* reduce AAalt5Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      Object nullNode2 = null;
      TypedLinkedList listNode3 = new TypedLinkedList();
      PAltTransform palttransformNode4;
      {}
      palttransformNode4 = (PAltTransform)nodeArrayList1.get(0);

      paltNode1 = new AAlt(null, listNode3, palttransformNode4);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new188() /* reduce AAalt6Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode3 = new TypedLinkedList();
      PAltTransform palttransformNode4;
      tidNode2 = (TId)nodeArrayList1.get(0);
      {}
      palttransformNode4 = (PAltTransform)nodeArrayList2.get(0);

      paltNode1 = new AAlt(tidNode2, listNode3, palttransformNode4);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new189() /* reduce AAalt7Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      Object nullNode2 = null;
      TypedLinkedList listNode4 = new TypedLinkedList();
      PAltTransform palttransformNode5;
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }
      palttransformNode5 = (PAltTransform)nodeArrayList2.get(0);

      paltNode1 = new AAlt(null, listNode4, palttransformNode5);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new190() /* reduce AAalt8Alt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAlt paltNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode4 = new TypedLinkedList();
      PAltTransform palttransformNode5;
      tidNode2 = (TId)nodeArrayList1.get(0);
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }
      palttransformNode5 = (PAltTransform)nodeArrayList3.get(0);

      paltNode1 = new AAlt(tidNode2, listNode4, palttransformNode5);
    }
    nodeList.add(paltNode1);
    return nodeList;
  }

  ArrayList new191() /* reduce AAalttransform1AltTransform */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAltTransform palttransformNode1;
    {
      TLBrace tlbraceNode2;
      TypedLinkedList listNode3 = new TypedLinkedList();
      TRBrace trbraceNode4;
      tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
      {}
      trbraceNode4 = (TRBrace)nodeArrayList3.get(0);

      palttransformNode1 = new AAltTransform(tlbraceNode2, listNode3, trbraceNode4);
    }
    nodeList.add(palttransformNode1);
    return nodeList;
  }

  ArrayList new192() /* reduce AAalttransform2AltTransform */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAltTransform palttransformNode1;
    {
      TLBrace tlbraceNode2;
      TypedLinkedList listNode4 = new TypedLinkedList();
      TRBrace trbraceNode5;
      tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList3.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }
      trbraceNode5 = (TRBrace)nodeArrayList4.get(0);

      palttransformNode1 = new AAltTransform(tlbraceNode2, listNode4, trbraceNode5);
    }
    nodeList.add(palttransformNode1);
    return nodeList;
  }

  ArrayList new193() /* reduce AAnewterm1Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      PProdName pprodnameNode2;
      TLPar tlparNode3;
      TypedLinkedList listNode4 = new TypedLinkedList();
      pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
      tlparNode3 = (TLPar)nodeArrayList3.get(0);
      {}

      ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode4);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new194() /* reduce AAnewterm2Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      PProdName pprodnameNode2;
      TLPar tlparNode3;
      TypedLinkedList listNode5 = new TypedLinkedList();
      pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
      tlparNode3 = (TLPar)nodeArrayList3.get(0);
      {
        TypedLinkedList listNode4 = new TypedLinkedList();
        listNode4 = (TypedLinkedList)nodeArrayList4.get(0);
        if(listNode4 != null)
        {
          listNode5.addAll(listNode4);
        }
      }

      ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new195() /* reduce AAlistterm1Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      TLBkt tlbktNode2;
      TypedLinkedList listNode3 = new TypedLinkedList();
      tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
      {}

      ptermNode1 = new AListTerm(tlbktNode2, listNode3);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new196() /* reduce AAlistterm2Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      TLBkt tlbktNode2;
      TypedLinkedList listNode4 = new TypedLinkedList();
      tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      ptermNode1 = new AListTerm(tlbktNode2, listNode4);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new197() /* reduce AAsimpleterm1Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      Object nullNode2 = null;
      TId tidNode3;
      Object nullNode4 = null;
      tidNode3 = (TId)nodeArrayList1.get(0);

      ptermNode1 = new ASimpleTerm(null, tidNode3, null);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new198() /* reduce AAsimpleterm2Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      PSpecifier pspecifierNode2;
      TId tidNode3;
      Object nullNode4 = null;
      pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
      tidNode3 = (TId)nodeArrayList2.get(0);

      ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new199() /* reduce AAsimpleterm3Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      Object nullNode2 = null;
      TId tidNode3;
      TId tidNode4;
      tidNode3 = (TId)nodeArrayList1.get(0);
      tidNode4 = (TId)nodeArrayList2.get(0);

      ptermNode1 = new ASimpleTerm(null, tidNode3, tidNode4);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new200() /* reduce AAsimpleterm4Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {
      PSpecifier pspecifierNode2;
      TId tidNode3;
      TId tidNode4;
      pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
      tidNode3 = (TId)nodeArrayList2.get(0);
      tidNode4 = (TId)nodeArrayList3.get(0);

      ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, tidNode4);
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new201() /* reduce ANullTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    {

      ptermNode1 = new ANullTerm();
    }
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new202() /* reduce AAlistoflistterm1ListOfListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PListTerm plisttermNode1;
      plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
      if(plisttermNode1 != null)
      {
        listNode2.add(plisttermNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new203() /* reduce AAlistoflistterm2ListOfListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      PListTerm plisttermNode1;
      TypedLinkedList listNode2 = new TypedLinkedList();
      plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
      listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
      if(plisttermNode1 != null)
      {
        listNode3.add(plisttermNode1);
      }
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new204() /* reduce AAnewlistterm1ListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    {
      PProdName pprodnameNode2;
      TLPar tlparNode3;
      TypedLinkedList listNode4 = new TypedLinkedList();
      pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
      tlparNode3 = (TLPar)nodeArrayList3.get(0);
      {}

      plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode4);
    }
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new205() /* reduce AAnewlistterm2ListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList5 = (ArrayList) pop();
    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    {
      PProdName pprodnameNode2;
      TLPar tlparNode3;
      TypedLinkedList listNode5 = new TypedLinkedList();
      pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
      tlparNode3 = (TLPar)nodeArrayList3.get(0);
      {
        TypedLinkedList listNode4 = new TypedLinkedList();
        listNode4 = (TypedLinkedList)nodeArrayList4.get(0);
        if(listNode4 != null)
        {
          listNode5.addAll(listNode4);
        }
      }

      plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
    }
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new206() /* reduce AAsimplelistterm1ListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    {
      Object nullNode2 = null;
      TId tidNode3;
      Object nullNode4 = null;
      tidNode3 = (TId)nodeArrayList1.get(0);

      plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
    }
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new207() /* reduce AAsimplelistterm2ListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    {
      PSpecifier pspecifierNode2;
      TId tidNode3;
      Object nullNode4 = null;
      pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
      tidNode3 = (TId)nodeArrayList2.get(0);

      plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
    }
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new208() /* reduce AAsimplelistterm3ListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    {
      Object nullNode2 = null;
      TId tidNode3;
      TId tidNode4;
      tidNode3 = (TId)nodeArrayList1.get(0);
      tidNode4 = (TId)nodeArrayList2.get(0);

      plisttermNode1 = new ASimpleListTerm(null, tidNode3, tidNode4);
    }
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new209() /* reduce AAsimplelistterm4ListTerm */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    {
      PSpecifier pspecifierNode2;
      TId tidNode3;
      TId tidNode4;
      pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
      tidNode3 = (TId)nodeArrayList2.get(0);
      tidNode4 = (TId)nodeArrayList3.get(0);

      plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, tidNode4);
    }
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new210() /* reduce AListTermTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PListTerm plisttermNode1;
    plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
    nodeList.add(plisttermNode1);
    return nodeList;
  }

  ArrayList new211() /* reduce ASimpleTermTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TId tidNode1;
    tidNode1 = (TId)nodeArrayList2.get(0);
    nodeList.add(tidNode1);
    return nodeList;
  }

  ArrayList new212() /* reduce AAprodname1ProdName */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PProdName pprodnameNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      tidNode2 = (TId)nodeArrayList1.get(0);

      pprodnameNode1 = new AProdName(tidNode2, null);
    }
    nodeList.add(pprodnameNode1);
    return nodeList;
  }

  ArrayList new213() /* reduce AAprodname2ProdName */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PProdName pprodnameNode1;
    {
      TId tidNode2;
      TId tidNode3;
      tidNode2 = (TId)nodeArrayList1.get(0);
      tidNode3 = (TId)nodeArrayList2.get(0);

      pprodnameNode1 = new AProdName(tidNode2, tidNode3);
    }
    nodeList.add(pprodnameNode1);
    return nodeList;
  }

  ArrayList new214() /* reduce AProdNameTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TId tidNode1;
    tidNode1 = (TId)nodeArrayList2.get(0);
    nodeList.add(tidNode1);
    return nodeList;
  }

  ArrayList new215() /* reduce AAparams1Params */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PTerm ptermNode1;
      ptermNode1 = (PTerm)nodeArrayList1.get(0);
      if(ptermNode1 != null)
      {
        listNode2.add(ptermNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new216() /* reduce AAparams2Params */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      PTerm ptermNode1;
      TypedLinkedList listNode2 = new TypedLinkedList();
      ptermNode1 = (PTerm)nodeArrayList1.get(0);
      listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
      if(ptermNode1 != null)
      {
        listNode3.add(ptermNode1);
      }
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new217() /* reduce AParamsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PTerm ptermNode1;
    ptermNode1 = (PTerm)nodeArrayList2.get(0);
    nodeList.add(ptermNode1);
    return nodeList;
  }

  ArrayList new218() /* reduce AAltName */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TId tidNode1;
    tidNode1 = (TId)nodeArrayList2.get(0);
    nodeList.add(tidNode1);
    return nodeList;
  }

  ArrayList new219() /* reduce AAelem1Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      Object nullNode2 = null;
      Object nullNode3 = null;
      TId tidNode4;
      Object nullNode5 = null;
      tidNode4 = (TId)nodeArrayList1.get(0);

      pelemNode1 = new AElem(null, null, tidNode4, null);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new220() /* reduce AAelem2Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      TId tidNode4;
      Object nullNode5 = null;
      tidNode2 = (TId)nodeArrayList1.get(0);
      tidNode4 = (TId)nodeArrayList2.get(0);

      pelemNode1 = new AElem(tidNode2, null, tidNode4, null);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new221() /* reduce AAelem3Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      Object nullNode2 = null;
      PSpecifier pspecifierNode3;
      TId tidNode4;
      Object nullNode5 = null;
      pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
      tidNode4 = (TId)nodeArrayList2.get(0);

      pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, null);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new222() /* reduce AAelem4Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      TId tidNode2;
      PSpecifier pspecifierNode3;
      TId tidNode4;
      Object nullNode5 = null;
      tidNode2 = (TId)nodeArrayList1.get(0);
      pspecifierNode3 = (PSpecifier)nodeArrayList2.get(0);
      tidNode4 = (TId)nodeArrayList3.get(0);

      pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, null);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new223() /* reduce AAelem5Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      Object nullNode2 = null;
      Object nullNode3 = null;
      TId tidNode4;
      PUnOp punopNode5;
      tidNode4 = (TId)nodeArrayList1.get(0);
      punopNode5 = (PUnOp)nodeArrayList2.get(0);

      pelemNode1 = new AElem(null, null, tidNode4, punopNode5);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new224() /* reduce AAelem6Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      TId tidNode2;
      Object nullNode3 = null;
      TId tidNode4;
      PUnOp punopNode5;
      tidNode2 = (TId)nodeArrayList1.get(0);
      tidNode4 = (TId)nodeArrayList2.get(0);
      punopNode5 = (PUnOp)nodeArrayList3.get(0);

      pelemNode1 = new AElem(tidNode2, null, tidNode4, punopNode5);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new225() /* reduce AAelem7Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PElem pelemNode1;
    {
      Object nullNode2 = null;
      PSpecifier pspecifierNode3;
      TId tidNode4;
      PUnOp punopNode5;
      pspecifierNode3 = (PSpecifier)nodeArrayList1.get(0);
      tidNode4 = (TId)nodeArrayList2.get(0);
      punopNode5 = (PUnOp)nodeArrayList3.get(0);

      pelemNode1 = new AElem(null, pspecifierNode3, tidNode4, punopNode5);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new226() /* reduce AAelem8Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) 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);

      pelemNode1 = new AElem(tidNode2, pspecifierNode3, tidNode4, punopNode5);
    }
    nodeList.add(pelemNode1);
    return nodeList;
  }

  ArrayList new227() /* reduce AElemName */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TId tidNode1;
    tidNode1 = (TId)nodeArrayList2.get(0);
    nodeList.add(tidNode1);
    return nodeList;
  }

  ArrayList new228() /* reduce ATokenSpecifier */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PSpecifier pspecifierNode1;
    {

      pspecifierNode1 = new ATokenSpecifier();
    }
    nodeList.add(pspecifierNode1);
    return nodeList;
  }

  ArrayList new229() /* reduce AProductionSpecifier */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PSpecifier pspecifierNode1;
    {

      pspecifierNode1 = new AProductionSpecifier();
    }
    nodeList.add(pspecifierNode1);
    return nodeList;
  }

  ArrayList new230() /* reduce AAst */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAst pastNode1;
    {
      TypedLinkedList listNode3 = new TypedLinkedList();
      {
        TypedLinkedList listNode2 = new TypedLinkedList();
        listNode2 = (TypedLinkedList)nodeArrayList4.get(0);
        if(listNode2 != null)
        {
          listNode3.addAll(listNode2);
        }
      }

      pastNode1 = new AAst(listNode3);
    }
    nodeList.add(pastNode1);
    return nodeList;
  }

  ArrayList new231() /* reduce AAstProd */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList4 = (ArrayList) pop();
    ArrayList nodeArrayList3 = (ArrayList) pop();
    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAstProd pastprodNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode4 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList1.get(0);
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList3.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      pastprodNode1 = new AAstProd(tidNode2, listNode4);
    }
    nodeList.add(pastprodNode1);
    return nodeList;
  }

  ArrayList new232() /* reduce AAastalts1AstAlts */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PAstAlt pastaltNode1;
      pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
      if(pastaltNode1 != null)
      {
        listNode2.add(pastaltNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new233() /* reduce AAastalts2AstAlts */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      PAstAlt pastaltNode1;
      TypedLinkedList listNode2 = new TypedLinkedList();
      pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
      listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
      if(pastaltNode1 != null)
      {
        listNode3.add(pastaltNode1);
      }
      if(listNode2 != null)
      {
        listNode3.addAll(listNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new234() /* reduce AAstAltsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAstAlt pastaltNode1;
    pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
    nodeList.add(pastaltNode1);
    return nodeList;
  }

  ArrayList new235() /* reduce AAastalt1AstAlt */
  {
    ArrayList nodeList = new ArrayList();

    PAstAlt pastaltNode1;
    {
      Object nullNode2 = null;
      TypedLinkedList listNode3 = new TypedLinkedList();
      {}

      pastaltNode1 = new AAstAlt(null, listNode3);
    }
    nodeList.add(pastaltNode1);
    return nodeList;
  }

  ArrayList new236() /* reduce AAastalt2AstAlt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAstAlt pastaltNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode3 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList1.get(0);
      {}

      pastaltNode1 = new AAstAlt(tidNode2, listNode3);
    }
    nodeList.add(pastaltNode1);
    return nodeList;
  }

  ArrayList new237() /* reduce AAastalt3AstAlt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAstAlt pastaltNode1;
    {
      Object nullNode2 = null;
      TypedLinkedList listNode4 = new TypedLinkedList();
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList1.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      pastaltNode1 = new AAstAlt(null, listNode4);
    }
    nodeList.add(pastaltNode1);
    return nodeList;
  }

  ArrayList new238() /* reduce AAastalt4AstAlt */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    PAstAlt pastaltNode1;
    {
      TId tidNode2;
      TypedLinkedList listNode4 = new TypedLinkedList();
      tidNode2 = (TId)nodeArrayList1.get(0);
      {
        TypedLinkedList listNode3 = new TypedLinkedList();
        listNode3 = (TypedLinkedList)nodeArrayList2.get(0);
        if(listNode3 != null)
        {
          listNode4.addAll(listNode3);
        }
      }

      pastaltNode1 = new AAstAlt(tidNode2, listNode4);
    }
    nodeList.add(pastaltNode1);
    return nodeList;
  }

  ArrayList new239() /* reduce ATerminal$PkgNameTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      TPkgId tpkgidNode1;
      tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
      if(tpkgidNode1 != null)
      {
        listNode2.add(tpkgidNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new240() /* reduce ANonTerminal$PkgNameTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      TPkgId tpkgidNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      tpkgidNode2 = (TPkgId)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(tpkgidNode2 != null)
      {
        listNode3.add(tpkgidNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new241() /* reduce ATerminal$HelperDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PHelperDef phelperdefNode1;
      phelperdefNode1 = (PHelperDef)nodeArrayList1.get(0);
      if(phelperdefNode1 != null)
      {
        listNode2.add(phelperdefNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new242() /* reduce ANonTerminal$HelperDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PHelperDef phelperdefNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      phelperdefNode2 = (PHelperDef)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(phelperdefNode2 != null)
      {
        listNode3.add(phelperdefNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new243() /* reduce ATerminal$IdListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      TId tidNode1;
      tidNode1 = (TId)nodeArrayList1.get(0);
      if(tidNode1 != null)
      {
        listNode2.add(tidNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new244() /* reduce ANonTerminal$IdListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      TId tidNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      tidNode2 = (TId)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(tidNode2 != null)
      {
        listNode3.add(tidNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new245() /* reduce ATerminal$TokenDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PTokenDef ptokendefNode1;
      ptokendefNode1 = (PTokenDef)nodeArrayList1.get(0);
      if(ptokendefNode1 != null)
      {
        listNode2.add(ptokendefNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new246() /* reduce ANonTerminal$TokenDef */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PTokenDef ptokendefNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      ptokendefNode2 = (PTokenDef)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(ptokendefNode2 != null)
      {
        listNode3.add(ptokendefNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new247() /* reduce ATerminal$StateListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PStateListTail pstatelisttailNode1;
      pstatelisttailNode1 = (PStateListTail)nodeArrayList1.get(0);
      if(pstatelisttailNode1 != null)
      {
        listNode2.add(pstatelisttailNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new248() /* reduce ANonTerminal$StateListTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PStateListTail pstatelisttailNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      pstatelisttailNode2 = (PStateListTail)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(pstatelisttailNode2 != null)
      {
        listNode3.add(pstatelisttailNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new249() /* reduce ATerminal$RegExpTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PConcat pconcatNode1;
      pconcatNode1 = (PConcat)nodeArrayList1.get(0);
      if(pconcatNode1 != null)
      {
        listNode2.add(pconcatNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new250() /* reduce ANonTerminal$RegExpTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PConcat pconcatNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      pconcatNode2 = (PConcat)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(pconcatNode2 != null)
      {
        listNode3.add(pconcatNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new251() /* reduce ATerminal$UnExp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PUnExp punexpNode1;
      punexpNode1 = (PUnExp)nodeArrayList1.get(0);
      if(punexpNode1 != null)
      {
        listNode2.add(punexpNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new252() /* reduce ANonTerminal$UnExp */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PUnExp punexpNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      punexpNode2 = (PUnExp)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(punexpNode2 != null)
      {
        listNode3.add(punexpNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new253() /* reduce ATerminal$Prod */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PProd pprodNode1;
      pprodNode1 = (PProd)nodeArrayList1.get(0);
      if(pprodNode1 != null)
      {
        listNode2.add(pprodNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new254() /* reduce ANonTerminal$Prod */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PProd pprodNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      pprodNode2 = (PProd)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(pprodNode2 != null)
      {
        listNode3.add(pprodNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new255() /* reduce ATerminal$Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PElem pelemNode1;
      pelemNode1 = (PElem)nodeArrayList1.get(0);
      if(pelemNode1 != null)
      {
        listNode2.add(pelemNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new256() /* reduce ANonTerminal$Elem */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PElem pelemNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      pelemNode2 = (PElem)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(pelemNode2 != null)
      {
        listNode3.add(pelemNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new257() /* reduce ATerminal$AltsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PAlt paltNode1;
      paltNode1 = (PAlt)nodeArrayList1.get(0);
      if(paltNode1 != null)
      {
        listNode2.add(paltNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new258() /* reduce ANonTerminal$AltsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PAlt paltNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      paltNode2 = (PAlt)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(paltNode2 != null)
      {
        listNode3.add(paltNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new259() /* reduce ATerminal$Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PTerm ptermNode1;
      ptermNode1 = (PTerm)nodeArrayList1.get(0);
      if(ptermNode1 != null)
      {
        listNode2.add(ptermNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new260() /* reduce ANonTerminal$Term */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PTerm ptermNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      ptermNode2 = (PTerm)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(ptermNode2 != null)
      {
        listNode3.add(ptermNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new261() /* reduce ATerminal$ListTermTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PListTerm plisttermNode1;
      plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
      if(plisttermNode1 != null)
      {
        listNode2.add(plisttermNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new262() /* reduce ANonTerminal$ListTermTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PListTerm plisttermNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      plisttermNode2 = (PListTerm)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(plisttermNode2 != null)
      {
        listNode3.add(plisttermNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new263() /* reduce ATerminal$ParamsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PTerm ptermNode1;
      ptermNode1 = (PTerm)nodeArrayList1.get(0);
      if(ptermNode1 != null)
      {
        listNode2.add(ptermNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new264() /* reduce ANonTerminal$ParamsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PTerm ptermNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      ptermNode2 = (PTerm)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(ptermNode2 != null)
      {
        listNode3.add(ptermNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new265() /* reduce ATerminal$AstProd */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PAstProd pastprodNode1;
      pastprodNode1 = (PAstProd)nodeArrayList1.get(0);
      if(pastprodNode1 != null)
      {
        listNode2.add(pastprodNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new266() /* reduce ANonTerminal$AstProd */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PAstProd pastprodNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      pastprodNode2 = (PAstProd)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(pastprodNode2 != null)
      {
        listNode3.add(pastprodNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  ArrayList new267() /* reduce ATerminal$AstAltsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode2 = new TypedLinkedList();
    {
      PAstAlt pastaltNode1;
      pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
      if(pastaltNode1 != null)
      {
        listNode2.add(pastaltNode1);
      }
    }
    nodeList.add(listNode2);
    return nodeList;
  }

  ArrayList new268() /* reduce ANonTerminal$AstAltsTail */
  {
    ArrayList nodeList = new ArrayList();

    ArrayList nodeArrayList2 = (ArrayList) pop();
    ArrayList nodeArrayList1 = (ArrayList) pop();
    TypedLinkedList listNode3 = new TypedLinkedList();
    {
      TypedLinkedList listNode1 = new TypedLinkedList();
      PAstAlt pastaltNode2;
      listNode1 = (TypedLinkedList)nodeArrayList1.get(0);
      pastaltNode2 = (PAstAlt)nodeArrayList2.get(0);
      if(listNode1 != null)
      {
        listNode3.addAll(listNode1);
      }
      if(pastaltNode2 != null)
      {
        listNode3.add(pastaltNode2);
      }
    }
    nodeList.add(listNode3);
    return nodeList;
  }

  private static int[][][] actionTable;
  /*      {
  			{{-1, REDUCE, 0}, {1, SHIFT, 1}, {2, SHIFT, 2}, {3, SHIFT, 3}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, ERROR, 1}, {0, SHIFT, 16}, },
  			{{-1, ERROR, 2}, {33, SHIFT, 18}, },
  			{{-1, ERROR, 3}, {33, SHIFT, 20}, },
  			{{-1, ERROR, 4}, {22, SHIFT, 23}, {33, SHIFT, 24}, },
  			{{-1, ERROR, 5}, {4, SHIFT, 28}, },
  			{{-1, ERROR, 6}, {33, SHIFT, 29}, },
  			{{-1, ERROR, 7}, {8, SHIFT, 32}, },
  			{{-1, ERROR, 8}, {38, ACCEPT, -1}, },
  			{{-1, REDUCE, 1}, {2, SHIFT, 2}, {3, SHIFT, 3}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 2}, {2, SHIFT, 2}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 4}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 8}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 16}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 32}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 64}, },
  			{{-1, ERROR, 16}, {14, SHIFT, 54}, {16, SHIFT, 55}, },
  			{{-1, REDUCE, 128}, },
  			{{-1, REDUCE, 135}, {29, SHIFT, 58}, },
  			{{-1, ERROR, 19}, {16, SHIFT, 61}, },
  			{{-1, ERROR, 20}, {17, SHIFT, 62}, },
  			{{-1, REDUCE, 241}, },
  			{{-1, REDUCE, 132}, {33, SHIFT, 20}, },
  			{{-1, ERROR, 23}, {33, SHIFT, 64}, },
  			{{-1, ERROR, 24}, {17, SHIFT, 65}, },
  			{{-1, REDUCE, 245}, },
  			{{-1, ERROR, 26}, {33, SHIFT, 66}, },
  			{{-1, REDUCE, 138}, {22, SHIFT, 23}, {33, SHIFT, 24}, },
  			{{-1, ERROR, 28}, {16, SHIFT, 68}, {33, SHIFT, 18}, },
  			{{-1, ERROR, 29}, {17, SHIFT, 70}, {22, SHIFT, 71}, },
  			{{-1, REDUCE, 253}, },
  			{{-1, REDUCE, 175}, {33, SHIFT, 29}, },
  			{{-1, ERROR, 32}, {9, SHIFT, 74}, },
  			{{-1, REDUCE, 3}, {2, SHIFT, 2}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 5}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 9}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 17}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 33}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 65}, },
  			{{-1, REDUCE, 6}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 10}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 18}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 34}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 66}, },
  			{{-1, REDUCE, 12}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 20}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 36}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 68}, },
  			{{-1, REDUCE, 24}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 40}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 72}, },
  			{{-1, REDUCE, 48}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 80}, },
  			{{-1, REDUCE, 96}, },
  			{{-1, ERROR, 54}, {0, SHIFT, 110}, },
  			{{-1, REDUCE, 129}, },
  			{{-1, REDUCE, 239}, },
  			{{-1, ERROR, 57}, {14, SHIFT, 54}, {16, SHIFT, 111}, },
  			{{-1, ERROR, 58}, {33, SHIFT, 113}, },
  			{{-1, REDUCE, 243}, },
  			{{-1, REDUCE, 136}, {29, SHIFT, 58}, },
  			{{-1, REDUCE, 134}, },
  			{{-1, REDUCE, 156}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, REDUCE, 242}, },
  			{{-1, ERROR, 64}, {23, SHIFT, 129}, {29, SHIFT, 130}, {31, SHIFT, 131}, },
  			{{-1, REDUCE, 156}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, ERROR, 66}, {17, SHIFT, 136}, },
  			{{-1, REDUCE, 246}, },
  			{{-1, REDUCE, 150}, },
  			{{-1, ERROR, 69}, {16, SHIFT, 137}, },
  			{{-1, REDUCE, 183}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 141}, {33, SHIFT, 142}, },
  			{{-1, ERROR, 71}, {31, SHIFT, 151}, },
  			{{-1, ERROR, 72}, {17, SHIFT, 152}, },
  			{{-1, REDUCE, 254}, },
  			{{-1, ERROR, 74}, {33, SHIFT, 153}, },
  			{{-1, REDUCE, 7}, {4, SHIFT, 4}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 11}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 19}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 35}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 67}, },
  			{{-1, REDUCE, 13}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 21}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 37}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 69}, },
  			{{-1, REDUCE, 25}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 41}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 73}, },
  			{{-1, REDUCE, 49}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 81}, },
  			{{-1, REDUCE, 97}, },
  			{{-1, REDUCE, 14}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 22}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 38}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 70}, },
  			{{-1, REDUCE, 26}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 42}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 74}, },
  			{{-1, REDUCE, 50}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 82}, },
  			{{-1, REDUCE, 98}, },
  			{{-1, REDUCE, 28}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 44}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 76}, },
  			{{-1, REDUCE, 52}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 84}, },
  			{{-1, REDUCE, 100}, },
  			{{-1, REDUCE, 56}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 88}, },
  			{{-1, REDUCE, 104}, },
  			{{-1, REDUCE, 112}, },
  			{{-1, REDUCE, 131}, },
  			{{-1, REDUCE, 130}, },
  			{{-1, REDUCE, 240}, },
  			{{-1, REDUCE, 137}, },
  			{{-1, REDUCE, 244}, },
  			{{-1, ERROR, 115}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, REDUCE, 156}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, REDUCE, 163}, },
  			{{-1, REDUCE, 165}, },
  			{{-1, REDUCE, 166}, },
  			{{-1, REDUCE, 167}, },
  			{{-1, REDUCE, 162}, },
  			{{-1, ERROR, 122}, {16, SHIFT, 194}, },
  			{{-1, REDUCE, 153}, {28, SHIFT, 195}, },
  			{{-1, REDUCE, 251}, },
  			{{-1, REDUCE, 158}, {24, SHIFT, 198}, {26, SHIFT, 199}, {27, SHIFT, 200}, },
  			{{-1, REDUCE, 160}, },
  			{{-1, REDUCE, 161}, },
  			{{-1, REDUCE, 157}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, REDUCE, 143}, },
  			{{-1, ERROR, 130}, {33, SHIFT, 203}, },
  			{{-1, ERROR, 131}, {33, SHIFT, 204}, },
  			{{-1, REDUCE, 247}, },
  			{{-1, ERROR, 133}, {23, SHIFT, 205}, {29, SHIFT, 130}, },
  			{{-1, ERROR, 134}, {23, SHIFT, 207}, {29, SHIFT, 130}, },
  			{{-1, ERROR, 135}, {16, SHIFT, 209}, {30, SHIFT, 210}, },
  			{{-1, REDUCE, 156}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, REDUCE, 151}, },
  			{{-1, ERROR, 138}, {14, SHIFT, 213}, },
  			{{-1, ERROR, 139}, {14, SHIFT, 214}, },
  			{{-1, ERROR, 140}, {33, SHIFT, 215}, },
  			{{-1, ERROR, 141}, {31, SHIFT, 216}, {33, SHIFT, 217}, },
  			{{-1, REDUCE, 219}, {24, SHIFT, 198}, {26, SHIFT, 199}, {27, SHIFT, 200}, },
  			{{-1, ERROR, 143}, {16, SHIFT, 219}, },
  			{{-1, REDUCE, 180}, {28, SHIFT, 220}, },
  			{{-1, REDUCE, 187}, },
  			{{-1, REDUCE, 184}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 223}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 255}, },
  			{{-1, ERROR, 148}, {12, SHIFT, 138}, {13, SHIFT, 139}, {33, SHIFT, 226}, },
  			{{-1, ERROR, 149}, {33, SHIFT, 228}, },
  			{{-1, REDUCE, 185}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 223}, {33, SHIFT, 142}, },
  			{{-1, ERROR, 151}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {23, SHIFT, 231}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 183}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 141}, {33, SHIFT, 142}, },
  			{{-1, ERROR, 153}, {17, SHIFT, 234}, },
  			{{-1, REDUCE, 265}, },
  			{{-1, REDUCE, 230}, {33, SHIFT, 153}, },
  			{{-1, REDUCE, 15}, {5, SHIFT, 5}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 23}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 39}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 71}, },
  			{{-1, REDUCE, 27}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 43}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 75}, },
  			{{-1, REDUCE, 51}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 83}, },
  			{{-1, REDUCE, 99}, },
  			{{-1, REDUCE, 29}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 45}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 77}, },
  			{{-1, REDUCE, 53}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 85}, },
  			{{-1, REDUCE, 101}, },
  			{{-1, REDUCE, 57}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 89}, },
  			{{-1, REDUCE, 105}, },
  			{{-1, REDUCE, 113}, },
  			{{-1, REDUCE, 30}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 46}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 78}, },
  			{{-1, REDUCE, 54}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 86}, },
  			{{-1, REDUCE, 102}, },
  			{{-1, REDUCE, 58}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 90}, },
  			{{-1, REDUCE, 106}, },
  			{{-1, REDUCE, 114}, },
  			{{-1, REDUCE, 60}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 92}, },
  			{{-1, REDUCE, 108}, },
  			{{-1, REDUCE, 116}, },
  			{{-1, REDUCE, 120}, },
  			{{-1, ERROR, 191}, {24, SHIFT, 257}, {25, SHIFT, 258}, },
  			{{-1, REDUCE, 160}, {15, SHIFT, 260}, },
  			{{-1, ERROR, 193}, {21, SHIFT, 261}, },
  			{{-1, REDUCE, 133}, },
  			{{-1, REDUCE, 156}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, REDUCE, 249}, },
  			{{-1, REDUCE, 154}, {28, SHIFT, 195}, },
  			{{-1, REDUCE, 172}, },
  			{{-1, REDUCE, 171}, },
  			{{-1, REDUCE, 170}, },
  			{{-1, REDUCE, 159}, },
  			{{-1, REDUCE, 252}, },
  			{{-1, REDUCE, 147}, {31, SHIFT, 131}, },
  			{{-1, REDUCE, 149}, },
  			{{-1, REDUCE, 144}, },
  			{{-1, ERROR, 206}, {23, SHIFT, 265}, {29, SHIFT, 130}, },
  			{{-1, REDUCE, 145}, },
  			{{-1, REDUCE, 248}, },
  			{{-1, REDUCE, 139}, },
  			{{-1, REDUCE, 156}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, ERROR, 211}, {16, SHIFT, 267}, },
  			{{-1, ERROR, 212}, {16, SHIFT, 268}, {30, SHIFT, 210}, },
  			{{-1, REDUCE, 228}, },
  			{{-1, REDUCE, 229}, },
  			{{-1, ERROR, 215}, {19, SHIFT, 270}, },
  			{{-1, ERROR, 216}, {10, SHIFT, 271}, {11, SHIFT, 272}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 273}, {23, SHIFT, 274}, {33, SHIFT, 275}, },
  			{{-1, ERROR, 217}, {23, SHIFT, 279}, },
  			{{-1, REDUCE, 223}, },
  			{{-1, REDUCE, 176}, },
  			{{-1, REDUCE, 183}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 141}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 257}, },
  			{{-1, REDUCE, 181}, {28, SHIFT, 220}, },
  			{{-1, ERROR, 223}, {31, SHIFT, 216}, },
  			{{-1, REDUCE, 188}, },
  			{{-1, REDUCE, 186}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 223}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 220}, {24, SHIFT, 198}, {26, SHIFT, 199}, {27, SHIFT, 200}, },
  			{{-1, ERROR, 227}, {33, SHIFT, 284}, },
  			{{-1, REDUCE, 221}, {24, SHIFT, 198}, {26, SHIFT, 199}, {27, SHIFT, 200}, },
  			{{-1, REDUCE, 189}, },
  			{{-1, REDUCE, 256}, },
  			{{-1, REDUCE, 178}, },
  			{{-1, ERROR, 232}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {23, SHIFT, 286}, {33, SHIFT, 142}, },
  			{{-1, ERROR, 233}, {16, SHIFT, 287}, },
  			{{-1, REDUCE, 235}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 288}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 266}, },
  			{{-1, REDUCE, 31}, {6, SHIFT, 6}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 47}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 79}, },
  			{{-1, REDUCE, 55}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 87}, },
  			{{-1, REDUCE, 103}, },
  			{{-1, REDUCE, 59}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 91}, },
  			{{-1, REDUCE, 107}, },
  			{{-1, REDUCE, 115}, },
  			{{-1, REDUCE, 61}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 93}, },
  			{{-1, REDUCE, 109}, },
  			{{-1, REDUCE, 117}, },
  			{{-1, REDUCE, 121}, },
  			{{-1, REDUCE, 62}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 94}, },
  			{{-1, REDUCE, 110}, },
  			{{-1, REDUCE, 118}, },
  			{{-1, REDUCE, 122}, },
  			{{-1, REDUCE, 124}, },
  			{{-1, REDUCE, 173}, },
  			{{-1, REDUCE, 174}, },
  			{{-1, ERROR, 259}, {18, SHIFT, 115}, {20, SHIFT, 116}, {33, SHIFT, 117}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, {37, SHIFT, 121}, },
  			{{-1, ERROR, 260}, {34, SHIFT, 118}, {35, SHIFT, 119}, {36, SHIFT, 120}, },
  			{{-1, REDUCE, 164}, },
  			{{-1, REDUCE, 155}, },
  			{{-1, REDUCE, 250}, },
  			{{-1, REDUCE, 148}, },
  			{{-1, REDUCE, 146}, },
  			{{-1, REDUCE, 152}, },
  			{{-1, REDUCE, 141}, },
  			{{-1, REDUCE, 140}, },
  			{{-1, ERROR, 269}, {16, SHIFT, 302}, },
  			{{-1, ERROR, 270}, {32, SHIFT, 303}, },
  			{{-1, ERROR, 271}, {33, SHIFT, 304}, },
  			{{-1, REDUCE, 201}, },
  			{{-1, ERROR, 273}, {10, SHIFT, 306}, {12, SHIFT, 138}, {13, SHIFT, 139}, {19, SHIFT, 307}, {33, SHIFT, 308}, },
  			{{-1, REDUCE, 191}, },
  			{{-1, REDUCE, 197}, {14, SHIFT, 312}, },
  			{{-1, REDUCE, 259}, },
  			{{-1, ERROR, 277}, {33, SHIFT, 314}, },
  			{{-1, ERROR, 278}, {10, SHIFT, 271}, {11, SHIFT, 272}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 273}, {23, SHIFT, 315}, {33, SHIFT, 275}, },
  			{{-1, REDUCE, 218}, },
  			{{-1, REDUCE, 182}, },
  			{{-1, REDUCE, 258}, },
  			{{-1, REDUCE, 190}, },
  			{{-1, REDUCE, 224}, },
  			{{-1, REDUCE, 222}, {24, SHIFT, 198}, {26, SHIFT, 199}, {27, SHIFT, 200}, },
  			{{-1, REDUCE, 225}, },
  			{{-1, REDUCE, 179}, },
  			{{-1, REDUCE, 177}, },
  			{{-1, ERROR, 288}, {33, SHIFT, 217}, },
  			{{-1, REDUCE, 236}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {33, SHIFT, 142}, },
  			{{-1, ERROR, 290}, {16, SHIFT, 319}, },
  			{{-1, REDUCE, 232}, {28, SHIFT, 320}, },
  			{{-1, REDUCE, 237}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 63}, {7, SHIFT, 7}, },
  			{{-1, REDUCE, 95}, },
  			{{-1, REDUCE, 111}, },
  			{{-1, REDUCE, 119}, },
  			{{-1, REDUCE, 123}, },
  			{{-1, REDUCE, 125}, },
  			{{-1, REDUCE, 126}, },
  			{{-1, ERROR, 300}, {19, SHIFT, 324}, },
  			{{-1, ERROR, 301}, {19, SHIFT, 325}, },
  			{{-1, REDUCE, 142}, },
  			{{-1, REDUCE, 227}, },
  			{{-1, REDUCE, 212}, {14, SHIFT, 326}, },
  			{{-1, ERROR, 305}, {20, SHIFT, 328}, },
  			{{-1, ERROR, 306}, {33, SHIFT, 304}, },
  			{{-1, REDUCE, 195}, },
  			{{-1, REDUCE, 206}, {14, SHIFT, 312}, },
  			{{-1, ERROR, 309}, {19, SHIFT, 331}, },
  			{{-1, REDUCE, 202}, {29, SHIFT, 332}, },
  			{{-1, ERROR, 311}, {33, SHIFT, 335}, },
  			{{-1, ERROR, 312}, {33, SHIFT, 336}, },
  			{{-1, REDUCE, 199}, },
  			{{-1, REDUCE, 198}, {14, SHIFT, 312}, },
  			{{-1, REDUCE, 192}, },
  			{{-1, REDUCE, 260}, },
  			{{-1, REDUCE, 226}, },
  			{{-1, REDUCE, 238}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 231}, },
  			{{-1, REDUCE, 235}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 140}, {22, SHIFT, 288}, {33, SHIFT, 142}, },
  			{{-1, REDUCE, 267}, },
  			{{-1, REDUCE, 233}, {28, SHIFT, 320}, },
  			{{-1, REDUCE, 127}, },
  			{{-1, REDUCE, 168}, },
  			{{-1, REDUCE, 169}, },
  			{{-1, ERROR, 326}, {33, SHIFT, 340}, },
  			{{-1, REDUCE, 213}, },
  			{{-1, ERROR, 328}, {10, SHIFT, 271}, {11, SHIFT, 272}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 273}, {21, SHIFT, 341}, {33, SHIFT, 275}, },
  			{{-1, ERROR, 329}, {20, SHIFT, 344}, },
  			{{-1, REDUCE, 208}, },
  			{{-1, REDUCE, 196}, },
  			{{-1, ERROR, 332}, {10, SHIFT, 306}, {12, SHIFT, 138}, {13, SHIFT, 139}, {33, SHIFT, 308}, },
  			{{-1, REDUCE, 261}, },
  			{{-1, REDUCE, 203}, {29, SHIFT, 332}, },
  			{{-1, REDUCE, 207}, {14, SHIFT, 312}, },
  			{{-1, REDUCE, 211}, },
  			{{-1, REDUCE, 200}, },
  			{{-1, REDUCE, 234}, },
  			{{-1, REDUCE, 268}, },
  			{{-1, REDUCE, 214}, },
  			{{-1, REDUCE, 193}, },
  			{{-1, REDUCE, 215}, {29, SHIFT, 348}, },
  			{{-1, ERROR, 343}, {21, SHIFT, 351}, },
  			{{-1, ERROR, 344}, {10, SHIFT, 271}, {11, SHIFT, 272}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 273}, {21, SHIFT, 352}, {33, SHIFT, 275}, },
  			{{-1, REDUCE, 210}, },
  			{{-1, REDUCE, 262}, },
  			{{-1, REDUCE, 209}, },
  			{{-1, ERROR, 348}, {10, SHIFT, 271}, {11, SHIFT, 272}, {12, SHIFT, 138}, {13, SHIFT, 139}, {18, SHIFT, 273}, {33, SHIFT, 275}, },
  			{{-1, REDUCE, 263}, },
  			{{-1, REDUCE, 216}, {29, SHIFT, 348}, },
  			{{-1, REDUCE, 194}, },
  			{{-1, REDUCE, 204}, },
  			{{-1, ERROR, 353}, {21, SHIFT, 356}, },
  			{{-1, REDUCE, 217}, },
  			{{-1, REDUCE, 264}, },
  			{{-1, REDUCE, 205}, },
          };*/
  private static int[][][] gotoTable;
  /*      {
  			{{-1, 8}, },
  			{{-1, 9}, },
  			{{-1, 17}, },
  			{{-1, 56}, {57, 112}, },
  			{{-1, 10}, {9, 33}, },
  			{{-1, 21}, {22, 63}, },
  			{{-1, 11}, {9, 34}, {10, 39}, {33, 75}, },
  			{{-1, 19}, {28, 69}, },
  			{{-1, 59}, {60, 114}, },
  			{{-1, 12}, {9, 35}, {10, 40}, {11, 44}, {33, 76}, {34, 80}, {39, 90}, {75, 156}, },
  			{{-1, 25}, {27, 67}, },
  			{{-1, 26}, },
  			{{-1, 132}, {134, 208}, {206, 208}, },
  			{{-1, 133}, {203, 264}, },
  			{{-1, 13}, {9, 36}, {10, 41}, {11, 45}, {12, 48}, {33, 77}, {34, 81}, {35, 84}, {39, 91}, {40, 94}, {44, 100}, {75, 157}, {76, 160}, {80, 166}, {90, 176}, {156, 236}, },
  			{{-1, 211}, {212, 269}, },
  			{{-1, 122}, {65, 135}, {116, 193}, {136, 212}, {210, 266}, },
  			{{-1, 196}, {197, 263}, },
  			{{-1, 123}, {195, 262}, },
  			{{-1, 124}, {128, 202}, },
  			{{-1, 125}, {115, 191}, {259, 300}, },
  			{{-1, 126}, {115, 192}, {260, 301}, },
  			{{-1, 127}, },
  			{{-1, 201}, {142, 218}, {226, 283}, {228, 285}, {284, 317}, },
  			{{-1, 259}, },
  			{{-1, 14}, {9, 37}, {10, 42}, {11, 46}, {12, 49}, {13, 51}, {33, 78}, {34, 82}, {35, 85}, {36, 87}, {39, 92}, {40, 95}, {41, 97}, {44, 101}, {45, 103}, {48, 106}, {75, 158}, {76, 161}, {77, 163}, {80, 167}, {81, 169}, {84, 172}, {90, 177}, {91, 179}, {94, 182}, {100, 186}, {156, 237}, {157, 239}, {160, 242}, {166, 246}, {176, 251}, {236, 293}, },
  			{{-1, 30}, {31, 73}, },
  			{{-1, 72}, },
  			{{-1, 143}, {152, 233}, },
  			{{-1, 221}, {222, 281}, },
  			{{-1, 144}, {220, 280}, },
  			{{-1, 145}, {146, 224}, {150, 229}, {225, 282}, },
  			{{-1, 342}, {216, 276}, {278, 316}, {348, 354}, },
  			{{-1, 309}, },
  			{{-1, 310}, {332, 345}, },
  			{{-1, 333}, {334, 346}, },
  			{{-1, 313}, {308, 330}, {314, 337}, {335, 347}, },
  			{{-1, 305}, {306, 329}, },
  			{{-1, 327}, },
  			{{-1, 343}, {344, 353}, },
  			{{-1, 349}, {350, 355}, },
  			{{-1, 146}, {234, 289}, {320, 289}, },
  			{{-1, 147}, {150, 230}, {225, 230}, {232, 230}, {292, 230}, {318, 230}, },
  			{{-1, 148}, },
  			{{-1, 149}, {148, 227}, {216, 277}, {273, 311}, {278, 277}, {328, 277}, {332, 311}, {344, 277}, {348, 277}, },
  			{{-1, 15}, {9, 38}, {10, 43}, {11, 47}, {12, 50}, {13, 52}, {14, 53}, {33, 79}, {34, 83}, {35, 86}, {36, 88}, {37, 89}, {39, 93}, {40, 96}, {41, 98}, {42, 99}, {44, 102}, {45, 104}, {46, 105}, {48, 107}, {49, 108}, {51, 109}, {75, 159}, {76, 162}, {77, 164}, {78, 165}, {80, 168}, {81, 170}, {82, 171}, {84, 173}, {85, 174}, {87, 175}, {90, 178}, {91, 180}, {92, 181}, {94, 183}, {95, 184}, {97, 185}, {100, 187}, {101, 188}, {103, 189}, {106, 190}, {156, 238}, {157, 240}, {158, 241}, {160, 243}, {161, 244}, {163, 245}, {166, 247}, {167, 248}, {169, 249}, {172, 250}, {176, 252}, {177, 253}, {179, 254}, {182, 255}, {186, 256}, {236, 294}, {237, 295}, {239, 296}, {242, 297}, {246, 298}, {251, 299}, {293, 323}, },
  			{{-1, 154}, {155, 235}, },
  			{{-1, 290}, },
  			{{-1, 321}, {322, 339}, },
  			{{-1, 291}, {320, 338}, },
  			{{-1, 57}, },
  			{{-1, 22}, },
  			{{-1, 60}, },
  			{{-1, 27}, },
  			{{-1, 134}, {133, 206}, },
  			{{-1, 197}, },
  			{{-1, 128}, },
  			{{-1, 31}, },
  			{{-1, 150}, {146, 225}, {151, 232}, {234, 292}, {289, 318}, {320, 292}, },
  			{{-1, 222}, },
  			{{-1, 278}, },
  			{{-1, 334}, },
  			{{-1, 350}, },
  			{{-1, 155}, },
  			{{-1, 322}, },
          };*/
  private static String[] errorMessages;
  /*      {
  			"expecting: 'Package', 'States', 'Helpers', 'Tokens', 'Ignored', 'Productions', 'Abstract', EOF",
  			"expecting: pkg id",
  			"expecting: id",
  			"expecting: '{', id",
  			"expecting: 'Tokens'",
  			"expecting: 'Syntax'",
  			"expecting: EOF",
  			"expecting: 'States', 'Helpers', 'Tokens', 'Ignored', 'Productions', 'Abstract', EOF",
  			"expecting: 'States', 'Tokens', 'Ignored', 'Productions', 'Abstract', EOF",
  			"expecting: 'Tokens', 'Ignored', 'Productions', 'Abstract', EOF",
  			"expecting: 'Ignored', 'Productions', 'Abstract', EOF",
  			"expecting: 'Productions', 'Abstract', EOF",
  			"expecting: 'Abstract', EOF",
  			"expecting: '.', ';'",
  			"expecting: ';', ','",
  			"expecting: ';'",
  			"expecting: '='",
  			"expecting: 'States', 'Tokens', 'Ignored', 'Productions', 'Abstract', id, EOF",
  			"expecting: 'Ignored', 'Productions', 'Abstract', '{', id, EOF",
  			"expecting: ';', id",
  			"expecting: '=', '{'",
  			"expecting: 'Abstract', id, EOF",
  			"expecting: 'Tree'",
  			"expecting: ';', '[', '(', '|', id, char, dec char, hex char, string",
  			"expecting: '}', ',', '->'",
  			"expecting: ';', '[', '(', '|', '/', id, char, dec char, hex char, string",
  			"expecting: 'T', 'P', ';', '[', '{', '|', id",
  			"expecting: '->'",
  			"expecting: '[', '(', id, char, dec char, hex char, string",
  			"expecting: '[', '(', ')', '|', id, char, dec char, hex char, string",
  			"expecting: ';', '[', ']', '(', ')', '+', '-', '?', '*', '|', '/', id, char, dec char, hex char, string",
  			"expecting: '..', ';', '[', ']', '(', ')', '+', '-', '?', '*', '|', '/', id, char, dec char, hex char, string",
  			"expecting: ';', ')', '|', '/'",
  			"expecting: ';', '[', '(', ')', '|', '/', id, char, dec char, hex char, string",
  			"expecting: ';', '[', '(', ')', '+', '?', '*', '|', '/', id, char, dec char, hex char, string",
  			"expecting: ';', '[', ']', '(', ')', '+', '?', '*', '|', '/', id, char, dec char, hex char, string",
  			"expecting: '}', ','",
  			"expecting: ';', '/'",
  			"expecting: '.'",
  			"expecting: '->', id",
  			"expecting: 'T', 'P', ';', '[', '{', '}', '+', '?', '*', '|', id",
  			"expecting: ';', '|'",
  			"expecting: 'T', 'P', ';', '[', '{', '}', '|', id",
  			"expecting: 'T', 'P', id",
  			"expecting: 'T', 'P', '[', '}', id",
  			"expecting: id, EOF",
  			"expecting: '+', '-'",
  			"expecting: '..', '+', '-'",
  			"expecting: ')'",
  			"expecting: 'T', 'P', ';', '[', '(', ')', '{', '}', '|', '/', id, char, dec char, hex char, string",
  			"expecting: ']'",
  			"expecting: 'New', 'Null', 'T', 'P', '[', '}', id",
  			"expecting: '}'",
  			"expecting: char, dec char, hex char",
  			"expecting: ':'",
  			"expecting: 'New', 'Null', 'T', 'P', '[', ')', '}', ',', id",
  			"expecting: 'New', 'T', 'P', ']', id",
  			"expecting: 'New', 'Null', 'T', 'P', '.', '[', ')', '}', ',', id",
  			"expecting: 'T', 'P', ';', '[', '|', id",
  			"expecting: '.', '('",
  			"expecting: '('",
  			"expecting: '.', ']', ','",
  			"expecting: ']', ','",
  			"expecting: 'New', 'Null', 'T', 'P', '[', ')', id",
  			"expecting: 'New', 'T', 'P', id",
  			"expecting: 'New', 'Null', 'T', 'P', '[', ']', ')', '}', ',', id",
  			"expecting: ')', ','",
  			"expecting: 'New', 'Null', 'T', 'P', '[', id",
          };*/
  private static int[] errors;
  /*      {
  			0, 1, 2, 2, 3, 4, 2, 5, 6, 7, 8, 9, 10, 11, 12, 6, 13, 7, 14, 15, 16, 17, 17, 2, 16, 18, 2, 18, 19, 20, 21, 21, 22, 8, 9, 10, 11, 12, 6, 9, 10, 11, 12, 6, 10, 11, 12, 6, 11, 12, 6, 12, 6, 6, 1, 7, 13, 13, 2, 14, 14, 9, 23, 17, 24, 25, 16, 18, 11, 15, 26, 27, 16, 21, 2, 9, 10, 11, 12, 6, 10, 11, 12, 6, 11, 12, 6, 12, 6, 6, 10, 11, 12, 6, 11, 12, 6, 12, 6, 6, 11, 12, 6, 12, 6, 6, 12, 6, 6, 6, 13, 7, 13, 14, 14, 28, 29, 30, 31, 31, 31, 30, 15, 32, 33, 34, 35, 30, 33, 2, 2, 2, 36, 36, 36, 37, 25, 11, 38, 38, 2, 39, 40, 15, 41, 41, 26, 42, 43, 2, 26, 44, 26, 16, 45, 45, 10, 11, 12, 6, 11, 12, 6, 12, 6, 6, 11, 12, 6, 12, 6, 6, 12, 6, 6, 6, 11, 12, 6, 12, 6, 6, 12, 6, 6, 6, 12, 6, 6, 6, 6, 46, 47, 48, 17, 33, 32, 32, 49, 49, 49, 33, 33, 24, 36, 2, 36, 2, 36, 18, 23, 15, 37, 2, 2, 50, 51, 52, 42, 21, 26, 41, 41, 27, 41, 26, 40, 2, 40, 41, 42, 16, 44, 15, 26, 45, 11, 12, 6, 12, 6, 6, 12, 6, 6, 6, 12, 6, 6, 6, 6, 12, 6, 6, 6, 6, 6, 28, 28, 28, 53, 30, 32, 32, 36, 2, 15, 18, 18, 15, 54, 2, 55, 56, 41, 57, 51, 2, 51, 26, 41, 41, 41, 42, 40, 42, 16, 21, 2, 58, 15, 41, 58, 12, 6, 6, 6, 6, 6, 6, 50, 50, 18, 43, 59, 60, 2, 55, 61, 50, 62, 2, 2, 55, 57, 41, 51, 42, 58, 45, 26, 41, 41, 6, 30, 30, 2, 60, 63, 60, 62, 55, 64, 62, 62, 61, 65, 55, 41, 41, 60, 55, 66, 48, 63, 62, 62, 62, 67, 66, 66, 55, 62, 48, 66, 66, 62, 
          };*/

  static
  {
    try
    {
      DataInputStream s = new DataInputStream(
                            new BufferedInputStream(
                              Parser.class.getResourceAsStream("parser.dat")));

      // read actionTable
      int length = s.readInt();
      actionTable = new int[length][][];
      for(int i = 0; i < actionTable.length; i++)
      {
        length = s.readInt();
        actionTable[i] = new int[length][3];
        for(int j = 0; j < actionTable[i].length; j++)
        {
          for(int k = 0; k < 3; k++)
          {
            actionTable[i][j][k] = s.readInt();
          }
        }
      }

      // read gotoTable
      length = s.readInt();
      gotoTable = new int[length][][];
      for(int i = 0; i < gotoTable.length; i++)
      {
        length = s.readInt();
        gotoTable[i] = new int[length][2];
        for(int j = 0; j < gotoTable[i].length; j++)
        {
          for(int k = 0; k < 2; k++)
          {
            gotoTable[i][j][k] = s.readInt();
          }
        }
      }

      // read errorMessages
      length = s.readInt();
      errorMessages = new String[length];
      for(int i = 0; i < errorMessages.length; i++)
      {
        length = s.readInt();
        StringBuffer buffer = new StringBuffer();

        for(int j = 0; j < length; j++)
        {
          buffer.append(s.readChar());
        }
        errorMessages[i] = buffer.toString();
      }

      // read errors
      length = s.readInt();
      errors = new int[length];
      for(int i = 0; i < errors.length; i++)
      {
        errors[i] = s.readInt();
      }

      s.close();
    }
    catch(Exception e)
    {
      throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted.");
    }
  }
}
