[sablecc] 03/08: Imported Upstream version 3.7

Mathieu Trudel cyphermox-guest at moszumanska.debian.org
Wed Feb 3 14:35:26 UTC 2016


This is an automated email from the git hooks/post-receive script.

cyphermox-guest pushed a commit to branch master
in repository sablecc.

commit 9ec550b9a8284203b7674e894d145bd0d15314ab
Author: Mathieu Trudel-Lapierre <mathieu.tl at gmail.com>
Date:   Wed Feb 3 09:22:02 2016 -0500

    Imported Upstream version 3.7
---
 AUTHORS                                            |     5 +-
 ChangeLog                                          |   668 +-
 LICENSE                                            |     2 +-
 README.html                                        |    34 +-
 build.xml                                          |     5 +-
 lib/sablecc.jar                                    |   Bin 300893 -> 0 bytes
 src/org/sablecc/sablecc/AUTHORS                    |     5 +-
 src/org/sablecc/sablecc/AcceptStates.java          |     2 +-
 src/org/sablecc/sablecc/AddAstProductions.java     |    15 +-
 ...ddEventualEmptyTransformationToProductions.java |    10 +-
 .../sablecc/AddProdTransformAndAltTransform.java   |    12 +-
 src/org/sablecc/sablecc/AltTransformAdapter.java   |     6 +-
 .../sablecc/sablecc/AlternativeElementTypes.java   |     9 +-
 src/org/sablecc/sablecc/BooleanCast.java           |     2 +-
 src/org/sablecc/sablecc/CharSet.java               |     8 +-
 src/org/sablecc/sablecc/ComputeCGNomenclature.java |    23 +-
 src/org/sablecc/sablecc/ComputeInlining.java       |    10 +
 .../sablecc/sablecc/ComputeSimpleTermPosition.java |    15 +-
 src/org/sablecc/sablecc/ConflictException.java     |     4 +-
 src/org/sablecc/sablecc/ConstructNFA.java          |    30 +-
 .../sablecc/ConstructParserGenerationDatas.java    |    12 +-
 src/org/sablecc/sablecc/ConstructProdsMap.java     |     3 +
 src/org/sablecc/sablecc/DFA.java                   |     7 +-
 src/org/sablecc/sablecc/GenAlts.java               |    19 +-
 src/org/sablecc/sablecc/GenAnalyses.java           |    18 +-
 src/org/sablecc/sablecc/GenLexer.java              |    44 +-
 src/org/sablecc/sablecc/GenParser.java             |    58 +-
 src/org/sablecc/sablecc/GenProds.java              |    17 +-
 src/org/sablecc/sablecc/GenTokens.java             |     7 +-
 src/org/sablecc/sablecc/GenUtils.java              |    41 +-
 .../sablecc/GenerateAlternativeCodeForParser.java  |    17 +-
 src/org/sablecc/sablecc/Grammar.java               |     6 +-
 src/org/sablecc/sablecc/In_Production.java         |     4 +
 src/org/sablecc/sablecc/Inlining.java              |    22 +-
 src/org/sablecc/sablecc/IntSet.java                |     4 +
 src/org/sablecc/sablecc/IntegerCast.java           |     2 +-
 src/org/sablecc/sablecc/IntegerComparator.java     |     2 +
 .../sablecc/InternalTransformationsToGrammar.java  |    48 +-
 src/org/sablecc/sablecc/LICENSE                    |     2 +-
 src/org/sablecc/sablecc/LR0Collection.java         |     3 +-
 src/org/sablecc/sablecc/LR0Item.java               |     6 +
 src/org/sablecc/sablecc/LR0ItemSet.java            |     8 +-
 src/org/sablecc/sablecc/LR1Collection.java         |     4 +-
 src/org/sablecc/sablecc/LR1Item.java               |     7 +-
 src/org/sablecc/sablecc/LR1ItemSet.java            |     7 +-
 src/org/sablecc/sablecc/ListCast.java              |     2 +
 src/org/sablecc/sablecc/MacroExpander.java         |     4 +-
 src/org/sablecc/sablecc/NFA.java                   |     5 +-
 src/org/sablecc/sablecc/NoCast.java                |     1 +
 src/org/sablecc/sablecc/NodeCast.java              |     2 +-
 src/org/sablecc/sablecc/PrettyPrinter.java         |    19 +-
 src/org/sablecc/sablecc/Production.java            |     4 +-
 .../sablecc/RecursiveProductionsDetections.java    |     5 +
 src/org/sablecc/sablecc/ResolveAltIds.java         |    12 +-
 src/org/sablecc/sablecc/ResolveAstIds.java         |    29 +-
 src/org/sablecc/sablecc/ResolveIds.java            |    29 +-
 .../sablecc/sablecc/ResolveProdTransformIds.java   |    11 +-
 src/org/sablecc/sablecc/ResolveTransformIds.java   |    92 +-
 src/org/sablecc/sablecc/SableCC.java               |     9 +-
 src/org/sablecc/sablecc/StringCast.java            |     2 +-
 src/org/sablecc/sablecc/StringComparator.java      |     2 +
 src/org/sablecc/sablecc/Symbol.java                |     4 +-
 src/org/sablecc/sablecc/SymbolSet.java             |     6 +-
 src/org/sablecc/sablecc/Transitions.java           |    12 +-
 src/org/sablecc/sablecc/TypedHashMap.java          |    12 +
 src/org/sablecc/sablecc/TypedLinkedList.java       |    13 +
 src/org/sablecc/sablecc/TypedTreeMap.java          |    12 +
 src/org/sablecc/sablecc/Version.java               |     2 +-
 src/org/sablecc/sablecc/alternatives.txt           |    15 +-
 src/org/sablecc/sablecc/analyses.txt               |    14 +
 src/org/sablecc/sablecc/analysis/Analysis.java     |   183 +-
 .../sablecc/sablecc/analysis/AnalysisAdapter.java  |  1014 +-
 .../sablecc/analysis/DepthFirstAdapter.java        |  1784 +-
 .../analysis/ReversedDepthFirstAdapter.java        |  1804 +-
 src/org/sablecc/sablecc/lexer.txt                  |    54 +-
 src/org/sablecc/sablecc/lexer/IPushbackReader.java |    12 +
 src/org/sablecc/sablecc/lexer/Lexer.java           |  2040 +-
 src/org/sablecc/sablecc/lexer/LexerException.java  |    19 +-
 src/org/sablecc/sablecc/node/AAlt.java             |   273 +-
 src/org/sablecc/sablecc/node/AAltTransform.java    |   273 +-
 src/org/sablecc/sablecc/node/AAst.java             |   149 +-
 src/org/sablecc/sablecc/node/AAstAlt.java          |   213 +-
 src/org/sablecc/sablecc/node/AAstProd.java         |   213 +-
 src/org/sablecc/sablecc/node/ACharBasic.java       |   127 +-
 src/org/sablecc/sablecc/node/ACharChar.java        |   127 +-
 src/org/sablecc/sablecc/node/AConcat.java          |   149 +-
 src/org/sablecc/sablecc/node/ADecChar.java         |   127 +-
 src/org/sablecc/sablecc/node/AElem.java            |   315 +-
 src/org/sablecc/sablecc/node/AGrammar.java         |   525 +-
 src/org/sablecc/sablecc/node/AHelperDef.java       |   191 +-
 src/org/sablecc/sablecc/node/AHelpers.java         |   149 +-
 src/org/sablecc/sablecc/node/AHexChar.java         |   127 +-
 src/org/sablecc/sablecc/node/AIdBasic.java         |   127 +-
 src/org/sablecc/sablecc/node/AIgnTokens.java       |   149 +-
 src/org/sablecc/sablecc/node/AIntervalSet.java     |   191 +-
 src/org/sablecc/sablecc/node/AListTerm.java        |   213 +-
 src/org/sablecc/sablecc/node/AMinusBinOp.java      |    60 +-
 src/org/sablecc/sablecc/node/ANewListTerm.java     |   273 +-
 src/org/sablecc/sablecc/node/ANewTerm.java         |   273 +-
 src/org/sablecc/sablecc/node/ANullTerm.java        |    60 +-
 src/org/sablecc/sablecc/node/AOperationSet.java    |   255 +-
 src/org/sablecc/sablecc/node/APlusBinOp.java       |    60 +-
 src/org/sablecc/sablecc/node/APlusUnOp.java        |   127 +-
 src/org/sablecc/sablecc/node/AProd.java            |   368 +-
 src/org/sablecc/sablecc/node/AProdName.java        |   191 +-
 .../sablecc/sablecc/node/AProductionSpecifier.java |    60 +-
 src/org/sablecc/sablecc/node/AProductions.java     |   149 +-
 src/org/sablecc/sablecc/node/AQMarkUnOp.java       |   127 +-
 src/org/sablecc/sablecc/node/ARegExp.java          |   149 +-
 src/org/sablecc/sablecc/node/ARegExpBasic.java     |   127 +-
 src/org/sablecc/sablecc/node/ASetBasic.java        |   127 +-
 src/org/sablecc/sablecc/node/ASimpleListTerm.java  |   255 +-
 src/org/sablecc/sablecc/node/ASimpleTerm.java      |   255 +-
 src/org/sablecc/sablecc/node/AStarUnOp.java        |   127 +-
 src/org/sablecc/sablecc/node/AStateList.java       |   273 +-
 src/org/sablecc/sablecc/node/AStateListTail.java   |   191 +-
 src/org/sablecc/sablecc/node/AStates.java          |   149 +-
 src/org/sablecc/sablecc/node/AStringBasic.java     |   127 +-
 src/org/sablecc/sablecc/node/ATokenDef.java        |   391 +-
 src/org/sablecc/sablecc/node/ATokenSpecifier.java  |    60 +-
 src/org/sablecc/sablecc/node/ATokens.java          |   149 +-
 src/org/sablecc/sablecc/node/ATransition.java      |   127 +-
 src/org/sablecc/sablecc/node/AUnExp.java           |   191 +-
 src/org/sablecc/sablecc/node/Cast.java             |     8 -
 src/org/sablecc/sablecc/node/EOF.java              |    39 +-
 src/org/sablecc/sablecc/node/InvalidToken.java     |    33 +
 src/org/sablecc/sablecc/node/NoCast.java           |    16 -
 src/org/sablecc/sablecc/node/Node.java             |    96 +-
 src/org/sablecc/sablecc/node/NodeCast.java         |    16 -
 src/org/sablecc/sablecc/node/PAlt.java             |     4 +-
 src/org/sablecc/sablecc/node/PAltTransform.java    |     4 +-
 src/org/sablecc/sablecc/node/PAst.java             |     4 +-
 src/org/sablecc/sablecc/node/PAstAlt.java          |     4 +-
 src/org/sablecc/sablecc/node/PAstProd.java         |     4 +-
 src/org/sablecc/sablecc/node/PBasic.java           |     4 +-
 src/org/sablecc/sablecc/node/PBinOp.java           |     4 +-
 src/org/sablecc/sablecc/node/PChar.java            |     4 +-
 src/org/sablecc/sablecc/node/PConcat.java          |     4 +-
 src/org/sablecc/sablecc/node/PElem.java            |     4 +-
 src/org/sablecc/sablecc/node/PGrammar.java         |     4 +-
 src/org/sablecc/sablecc/node/PHelperDef.java       |     4 +-
 src/org/sablecc/sablecc/node/PHelpers.java         |     4 +-
 src/org/sablecc/sablecc/node/PIgnTokens.java       |     4 +-
 src/org/sablecc/sablecc/node/PListTerm.java        |     4 +-
 src/org/sablecc/sablecc/node/PProd.java            |     4 +-
 src/org/sablecc/sablecc/node/PProdName.java        |     4 +-
 src/org/sablecc/sablecc/node/PProductions.java     |     4 +-
 src/org/sablecc/sablecc/node/PRegExp.java          |     4 +-
 src/org/sablecc/sablecc/node/PSet.java             |     4 +-
 src/org/sablecc/sablecc/node/PSpecifier.java       |     4 +-
 src/org/sablecc/sablecc/node/PStateList.java       |     4 +-
 src/org/sablecc/sablecc/node/PStateListTail.java   |     4 +-
 src/org/sablecc/sablecc/node/PStates.java          |     4 +-
 src/org/sablecc/sablecc/node/PTerm.java            |     4 +-
 src/org/sablecc/sablecc/node/PTokenDef.java        |     4 +-
 src/org/sablecc/sablecc/node/PTokens.java          |     4 +-
 src/org/sablecc/sablecc/node/PTransition.java      |     4 +-
 src/org/sablecc/sablecc/node/PUnExp.java           |     4 +-
 src/org/sablecc/sablecc/node/PUnOp.java            |     4 +-
 src/org/sablecc/sablecc/node/Start.java            |   184 +-
 src/org/sablecc/sablecc/node/Switch.java           |     4 +-
 src/org/sablecc/sablecc/node/Switchable.java       |     2 +-
 src/org/sablecc/sablecc/node/TAbstract.java        |    48 +-
 src/org/sablecc/sablecc/node/TArrow.java           |    48 +-
 src/org/sablecc/sablecc/node/TBar.java             |    48 +-
 src/org/sablecc/sablecc/node/TBlank.java           |    39 +-
 src/org/sablecc/sablecc/node/TChar.java            |    39 +-
 src/org/sablecc/sablecc/node/TColon.java           |    48 +-
 src/org/sablecc/sablecc/node/TComma.java           |    48 +-
 src/org/sablecc/sablecc/node/TComment.java         |    39 +-
 src/org/sablecc/sablecc/node/TDDot.java            |    48 +-
 src/org/sablecc/sablecc/node/TDecChar.java         |    39 +-
 src/org/sablecc/sablecc/node/TDot.java             |    48 +-
 src/org/sablecc/sablecc/node/TEqual.java           |    48 +-
 src/org/sablecc/sablecc/node/THelpers.java         |    48 +-
 src/org/sablecc/sablecc/node/THexChar.java         |    39 +-
 src/org/sablecc/sablecc/node/TId.java              |    39 +-
 src/org/sablecc/sablecc/node/TIgnored.java         |    48 +-
 src/org/sablecc/sablecc/node/TLBkt.java            |    48 +-
 src/org/sablecc/sablecc/node/TLBrace.java          |    48 +-
 src/org/sablecc/sablecc/node/TLPar.java            |    48 +-
 src/org/sablecc/sablecc/node/TMinus.java           |    48 +-
 src/org/sablecc/sablecc/node/TNew.java             |    48 +-
 src/org/sablecc/sablecc/node/TNull.java            |    48 +-
 src/org/sablecc/sablecc/node/TPackage.java         |    48 +-
 src/org/sablecc/sablecc/node/TPkgId.java           |    39 +-
 src/org/sablecc/sablecc/node/TPlus.java            |    48 +-
 .../sablecc/sablecc/node/TProductionSpecifier.java |    48 +-
 src/org/sablecc/sablecc/node/TProductions.java     |    48 +-
 src/org/sablecc/sablecc/node/TQMark.java           |    48 +-
 src/org/sablecc/sablecc/node/TRBkt.java            |    48 +-
 src/org/sablecc/sablecc/node/TRBrace.java          |    48 +-
 src/org/sablecc/sablecc/node/TRPar.java            |    48 +-
 src/org/sablecc/sablecc/node/TSemicolon.java       |    48 +-
 src/org/sablecc/sablecc/node/TSlash.java           |    48 +-
 src/org/sablecc/sablecc/node/TStar.java            |    48 +-
 src/org/sablecc/sablecc/node/TStates.java          |    48 +-
 src/org/sablecc/sablecc/node/TString.java          |    39 +-
 src/org/sablecc/sablecc/node/TSyntax.java          |    48 +-
 src/org/sablecc/sablecc/node/TTokenSpecifier.java  |    48 +-
 src/org/sablecc/sablecc/node/TTokens.java          |    48 +-
 src/org/sablecc/sablecc/node/TTree.java            |    48 +-
 src/org/sablecc/sablecc/node/Token.java            |    96 +-
 src/org/sablecc/sablecc/node/TypedLinkedList.java  |   149 -
 src/org/sablecc/sablecc/parser.txt                 |    90 +-
 src/org/sablecc/sablecc/parser/Parser.java         | 19405 ++++++++++---------
 .../sablecc/sablecc/parser/ParserException.java    |    21 +-
 src/org/sablecc/sablecc/parser/State.java          |    14 +-
 src/org/sablecc/sablecc/parser/TokenIndex.java     |   431 +-
 src/org/sablecc/sablecc/tokens.txt                 |     2 +
 src/org/sablecc/sablecc/utils.txt                  |    48 +-
 211 files changed, 21300 insertions(+), 18122 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 37505d3..ed2cc20 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,7 +1,8 @@
 This file contains the name of all copyright holders.
 
-Etienne M. Gagnon <etienne.gagnon at uqam.ca>
+Etienne M. Gagnon <egagnon at j-meg.com>
 Ben Menking <bmenking at bigfoot.com>
 Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
-Komivi Kevin Agbakpem <agbakpem.komivi at courrier.uqam.ca>
+Komivi Kevin Agbakpem <kevin.agbakpem at gmail.com>
 Kis Gergely <kisg at inf.bme.hu>
+Benne Otten <benneotten at gmail.com>
diff --git a/ChangeLog b/ChangeLog
index 6faa1ab..b25f378 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,606 @@
 ------------------------------------------------------------------------
-r4738 | egagnon | 2005-12-24 13:35:29 -0500 (Sat, 24 Dec 2005) | 2 lines
+r6214 | egagnon | 2012-11-28 20:00:07 -0500 (Mer, 28 nov 2012) | 2 lines
 Changed paths:
-   A /sablecc/tags/sablecc-3.2 (from /sablecc/trunk:4737)
+   M /sablecc/trunk/README.html
+   M /sablecc/trunk/build.xml
+   M /sablecc/trunk/src/org/sablecc/sablecc/Version.java
+
+* Updated version to 3.7.
+
+------------------------------------------------------------------------
+r6213 | egagnon | 2012-11-28 19:59:14 -0500 (Mer, 28 nov 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/Parser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser.txt
+
+* Divided parser method switch into smaller methods.
+
+------------------------------------------------------------------------
+r6212 | egagnon | 2012-11-28 19:57:32 -0500 (Mer, 28 nov 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenLexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenUtils.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/analyses.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/analysis/Analysis.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer/Lexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer/LexerException.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer.txt
+   A /sablecc/trunk/src/org/sablecc/sablecc/node/InvalidToken.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/ParserException.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/utils.txt
+
+* Added invalid token to lexer exception.
+
+------------------------------------------------------------------------
+r6211 | egagnon | 2012-11-28 19:48:50 -0500 (Mer, 28 nov 2012) | 2 lines
+Changed paths:
+   A /sablecc/trunk/src/org/sablecc/sablecc/lexer/IPushbackReader.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer/Lexer.java
+
+* Regenerated lexer.
+
+------------------------------------------------------------------------
+r6210 | egagnon | 2012-11-28 19:36:13 -0500 (Mer, 28 nov 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenLexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer.txt
+
+* Added the IPushbackReader interface.
+
+------------------------------------------------------------------------
+r6208 | egagnon | 2012-08-20 11:12:55 -0400 (Lun, 20 aoû 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/README.html
+   M /sablecc/trunk/build.xml
+   M /sablecc/trunk/src/org/sablecc/sablecc/Version.java
+
+* Updated version to 3.6.
+
+------------------------------------------------------------------------
+r6207 | egagnon | 2012-08-20 11:12:15 -0400 (Lun, 20 aoû 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/Inlining.java
+
+* Fixed inlining bug that removed duplicate alternatives.
+
+------------------------------------------------------------------------
+r6206 | egagnon | 2012-08-20 11:11:24 -0400 (Lun, 20 aoû 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAlt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAst.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAstAlt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAstProd.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AConcat.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AHelpers.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AIgnTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AListTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ANewListTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ANewTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AProd.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ARegExp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStateList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStates.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ATokens.java
+
+* Regenerated parser.
+
+------------------------------------------------------------------------
+r6205 | egagnon | 2012-08-17 19:08:19 -0400 (Ven, 17 aoû 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/alternatives.txt
+
+* Fixed a bug in the setter of list elements.
+
+------------------------------------------------------------------------
+r6203 | egagnon | 2012-07-26 08:44:44 -0400 (Jeu, 26 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/README.html
+   M /sablecc/trunk/build.xml
+   M /sablecc/trunk/src/org/sablecc/sablecc/Version.java
+
+* Update version to 3.5.
+
+------------------------------------------------------------------------
+r6202 | egagnon | 2012-07-26 08:44:09 -0400 (Jeu, 26 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer/Lexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/Parser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser.txt
+
+* Use unsigned shift left instead of integer division by 2.
+
+------------------------------------------------------------------------
+r6199 | egagnon | 2012-07-23 22:40:21 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/README.html
+   M /sablecc/trunk/src/org/sablecc/sablecc/Version.java
+
+* Regenerated Version.java and README.html.
+
+------------------------------------------------------------------------
+r6198 | egagnon | 2012-07-23 22:37:25 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/build.xml
+
+* Updated version to 3.4.
+
+------------------------------------------------------------------------
+r6197 | egagnon | 2012-07-23 22:34:23 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/analysis/Analysis.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer/Lexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/lexer/LexerException.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAlt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAst.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAstAlt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AAstProd.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ACharBasic.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ACharChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AConcat.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ADecChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AElem.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AHelperDef.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AHelpers.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AHexChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AIdBasic.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AIgnTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AIntervalSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AListTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AMinusBinOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ANewListTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ANewTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ANullTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AOperationSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/APlusBinOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/APlusUnOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AProd.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AProdName.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AProductionSpecifier.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AQMarkUnOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ARegExp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ARegExpBasic.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ASetBasic.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ASimpleListTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ASimpleTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStarUnOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStateList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStateListTail.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStates.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AStringBasic.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ATokenDef.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ATokenSpecifier.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ATokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/ATransition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/AUnExp.java
+   D /sablecc/trunk/src/org/sablecc/sablecc/node/Cast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/EOF.java
+   D /sablecc/trunk/src/org/sablecc/sablecc/node/NoCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/Node.java
+   D /sablecc/trunk/src/org/sablecc/sablecc/node/NodeCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PAlt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PAst.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PAstAlt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PAstProd.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PBasic.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PBinOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PConcat.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PElem.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PHelperDef.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PHelpers.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PIgnTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PListTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PProd.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PProdName.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PRegExp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PSpecifier.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PStateList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PStateListTail.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PStates.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PTerm.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PTokenDef.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PTransition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PUnExp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/PUnOp.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/Start.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/Switch.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/Switchable.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TAbstract.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TArrow.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TBar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TBlank.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TColon.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TComma.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TComment.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TDDot.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TDecChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TDot.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TEqual.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/THelpers.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/THexChar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TId.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TIgnored.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TLBkt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TLBrace.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TLPar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TMinus.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TNew.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TNull.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TPackage.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TPkgId.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TPlus.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TProductionSpecifier.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TQMark.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TRBkt.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TRBrace.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TRPar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TSemicolon.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TSlash.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TStar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TStates.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TString.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TSyntax.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TTokenSpecifier.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/TTree.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/node/Token.java
+   D /sablecc/trunk/src/org/sablecc/sablecc/node/TypedLinkedList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/Parser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/ParserException.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/State.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser/TokenIndex.java
+
+* Regenerated the parser.
+
+------------------------------------------------------------------------
+r6196 | egagnon | 2012-07-23 22:31:41 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddAstProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AltTransformAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AlternativeElementTypes.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/CharSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeCGNomenclature.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeInlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructNFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructProdsMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/DFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAlts.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAnalyses.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenLexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Grammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/In_Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Inlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0Collection.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1Collection.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/MacroExpander.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAltIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAstIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveProdTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/SableCC.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Symbol.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/SymbolSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Transitions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedHashMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedLinkedList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedTreeMap.java
+
+* Suppressed missing generic parameters warnings.
+
+------------------------------------------------------------------------
+r6195 | egagnon | 2012-07-23 22:31:01 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddAstProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructNFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAlts.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenProds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Grammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Inlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/MacroExpander.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAltIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveProdTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveTransformIds.java
+
+* Moved unused local variables into comments.
+
+------------------------------------------------------------------------
+r6194 | egagnon | 2012-07-23 22:29:00 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeCGNomenclature.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAstIds.java
+
+* Fixed calls to static methods.
+
+------------------------------------------------------------------------
+r6193 | egagnon | 2012-07-23 22:28:32 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenProds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+
+* Moved unused private methods into comments.
+
+------------------------------------------------------------------------
+r6192 | egagnon | 2012-07-23 22:27:38 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/AcceptStates.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddAstProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AltTransformAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AlternativeElementTypes.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/BooleanCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/CharSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeCGNomenclature.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeInlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructNFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructProdsMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/DFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAlts.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAnalyses.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenLexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenProds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenUtils.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/In_Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Inlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/IntSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/IntegerCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/IntegerComparator.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0Collection.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0Item.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1Collection.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1Item.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ListCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/MacroExpander.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/NFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/NoCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/NodeCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/PrettyPrinter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAltIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAstIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveProdTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/StringCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/StringComparator.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Symbol.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/SymbolSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Transitions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedHashMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedLinkedList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedTreeMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/alternatives.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/analyses.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/tokens.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/utils.txt
+
+* Added missing Override annotations.
+
+------------------------------------------------------------------------
+r6191 | egagnon | 2012-07-23 22:26:41 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/AcceptStates.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddAstProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AltTransformAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AlternativeElementTypes.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/BooleanCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeCGNomenclature.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeInlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConflictException.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructNFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructProdsMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/DFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAlts.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAnalyses.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenLexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenProds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenUtils.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Grammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/In_Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Inlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/IntegerCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0Collection.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1Item.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/NFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/NodeCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/PrettyPrinter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAltIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAstIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveProdTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/SableCC.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/StringCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/SymbolSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Transitions.java
+
+* Reorganized import declarations.
+
+------------------------------------------------------------------------
+r6190 | egagnon | 2012-07-23 22:25:54 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddAstProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AltTransformAdapter.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/AlternativeElementTypes.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/CharSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeCGNomenclature.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeInlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConflictException.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructNFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ConstructProdsMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/DFA.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAlts.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenAnalyses.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenLexer.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenProds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenTokens.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Grammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/In_Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Inlining.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/IntegerComparator.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0Item.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR0ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1Collection.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1Item.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/LR1ItemSet.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ListCast.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/MacroExpander.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Production.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAltIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveAstIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveProdTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/ResolveTransformIds.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/StringComparator.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Symbol.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/Transitions.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedHashMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedLinkedList.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/TypedTreeMap.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/alternatives.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/parser.txt
+   M /sablecc/trunk/src/org/sablecc/sablecc/utils.txt
+
+* Suppressed raw types warnings.
+
+------------------------------------------------------------------------
+r6189 | egagnon | 2012-07-23 22:24:30 -0400 (Lun, 23 jul 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/src/org/sablecc/sablecc/ComputeInlining.java
+
+* Fixed a bug where SableCC was trying to inline the Start production.
+
+------------------------------------------------------------------------
+r6188 | egagnon | 2012-07-23 22:22:32 -0400 (Lun, 23 jul 2012) | 3 lines
+Changed paths:
+   M /sablecc/trunk/build.xml
+
+* Add debug information to generated classes.
+
+
+------------------------------------------------------------------------
+r6187 | egagnon | 2012-07-23 22:19:28 -0400 (Lun, 23 jul 2012) | 1 line
+Changed paths:
+   A /sablecc/trunk/.classpath
+   A /sablecc/trunk/.project
+
+Add Eclipseproject.
+------------------------------------------------------------------------
+r6186 | egagnon | 2012-06-25 10:58:11 -0400 (Lun, 25 jui 2012) | 2 lines
+Changed paths:
+   M /sablecc/trunk/README.html
+   M /sablecc/trunk/build.xml
+   M /sablecc/trunk/src/org/sablecc/sablecc/Version.java
+
+* Updated version to 3.3.
+
+------------------------------------------------------------------------
+r6185 | egagnon | 2012-06-25 10:55:09 -0400 (Lun, 25 jui 2012) | 4 lines
+Changed paths:
+   M /sablecc/trunk/AUTHORS
+   M /sablecc/trunk/LICENSE
+   M /sablecc/trunk/src/org/sablecc/sablecc/SableCC.java
+   M /sablecc/trunk/src/org/sablecc/sablecc/utils.txt
+
+* Applied patch by Benne Otten: Fix cloneList() by implementing deep
+  cloning.
+
+
+------------------------------------------------------------------------
+r6184 | egagnon | 2012-06-25 10:53:31 -0400 (Lun, 25 jui 2012) | 1 line
+Changed paths:
+   M /sablecc/trunk/AUTHORS
+   M /sablecc/trunk/LICENSE
+   M /sablecc/trunk/src/org/sablecc/sablecc/SableCC.java
+
+* Updated email addresses.
+------------------------------------------------------------------------
+r6183 | egagnon | 2012-06-25 10:52:00 -0400 (Lun, 25 jui 2012) | 1 line
+Changed paths:
+   M /sablecc/trunk/README.html
+   M /sablecc/trunk/README.html.in
+
+* Updated links.
+------------------------------------------------------------------------
+r4740 | egagnon | 2005-12-26 11:34:49 -0500 (Lun, 26 déc 2005) | 2 lines
+Changed paths:
+   M /sablecc/trunk/LICENSE
+   M /sablecc/trunk/src/org/sablecc/sablecc/SableCC.java
 
-* Tagged sablecc-3.2.
+* Updated copyright date range.
 
 ------------------------------------------------------------------------
-r4737 | egagnon | 2005-12-24 12:19:36 -0500 (Sat, 24 Dec 2005) | 2 lines
+r4737 | egagnon | 2005-12-24 12:19:36 -0500 (Sam, 24 déc 2005) | 2 lines
 Changed paths:
    M /sablecc/trunk/README.html
    M /sablecc/trunk/build.xml
@@ -15,7 +609,7 @@ Changed paths:
 * Updated version to 3.2.
 
 ------------------------------------------------------------------------
-r4736 | egagnon | 2005-12-24 12:18:08 -0500 (Sat, 24 Dec 2005) | 3 lines
+r4736 | egagnon | 2005-12-24 12:18:08 -0500 (Sam, 24 déc 2005) | 3 lines
 Changed paths:
    M /sablecc/trunk/src/org/sablecc/sablecc/GenAlts.java
    M /sablecc/trunk/src/org/sablecc/sablecc/GenUtils.java
@@ -32,7 +626,7 @@ Changed paths:
   system.
 
 ------------------------------------------------------------------------
-r4570 | egagnon | 2005-09-29 13:23:23 -0400 (Thu, 29 Sep 2005) | 6 lines
+r4570 | egagnon | 2005-09-29 13:23:23 -0400 (Jeu, 29 sep 2005) | 6 lines
 Changed paths:
    M /sablecc/trunk/README.html
    M /sablecc/trunk/build.xml
@@ -49,7 +643,7 @@ Changed paths:
 * Fixed programming bug.  Fixes BUG:157.
 
 ------------------------------------------------------------------------
-r4545 | egagnon | 2005-09-27 20:30:45 -0400 (Tue, 27 Sep 2005) | 9 lines
+r4545 | egagnon | 2005-09-27 20:30:45 -0400 (Mar, 27 sep 2005) | 9 lines
 Changed paths:
    M /sablecc/trunk
    M /sablecc/trunk/AUTHORS
@@ -259,7 +853,7 @@ Changed paths:
 * Added some preliminary documentation in doc/description.html.
 
 ------------------------------------------------------------------------
-r1413 | egagnon | 2004-01-18 19:53:05 -0500 (Sun, 18 Jan 2004) | 3 lines
+r1413 | egagnon | 2004-01-18 19:53:05 -0500 (Dim, 18 jan 2004) | 3 lines
 Changed paths:
    D /sablecc/trunk/ChangeLog
    D /sablecc/trunk/ChangeLog.header
@@ -271,7 +865,7 @@ Changed paths:
   subversion repository log.
 
 ------------------------------------------------------------------------
-r1412 | egagnon | 2004-01-18 19:32:49 -0500 (Sun, 18 Jan 2004) | 3 lines
+r1412 | egagnon | 2004-01-18 19:32:49 -0500 (Dim, 18 jan 2004) | 3 lines
 Changed paths:
    M /sablecc/trunk/README.html
    M /sablecc/trunk/build.xml
@@ -283,7 +877,7 @@ Changed paths:
 * Increase version to 2.18.2.
 
 ------------------------------------------------------------------------
-r1409 | egagnon | 2004-01-18 18:06:05 -0500 (Sun, 18 Jan 2004) | 3 lines
+r1409 | egagnon | 2004-01-18 18:06:05 -0500 (Dim, 18 jan 2004) | 3 lines
 Changed paths:
    M /sablecc/trunk/sablecc-2x.sablecc2
 
@@ -291,7 +885,7 @@ Changed paths:
 * Allowed short comments on last line of grammar files.
 
 ------------------------------------------------------------------------
-r162 | egagnon | 2003-05-22 10:53:00 -0400 (Thu, 22 May 2003) | 21 lines
+r162 | egagnon | 2003-05-22 10:53:00 -0400 (Jeu, 22 mai 2003) | 21 lines
 Changed paths:
    M /sablecc/trunk/AUTHORS
    M /sablecc/trunk/ChangeLog
@@ -325,7 +919,7 @@ Changed paths:
 	Applied a patch by Kis Gergely to fix a bug in typed collections.
 
 ------------------------------------------------------------------------
-r157 | egagnon | 2003-03-20 00:47:00 -0500 (Thu, 20 Mar 2003) | 298 lines
+r157 | egagnon | 2003-03-20 00:47:00 -0500 (Jeu, 20 mar 2003) | 298 lines
 Changed paths:
    M /sablecc/trunk/AUTHORS
    M /sablecc/trunk/ChangeLog
@@ -1012,14 +1606,14 @@ Changed paths:
 	TypedHashMap class and eliminate the NodeComparator class.
 
 ------------------------------------------------------------------------
-r156 | egagnon | 2003-03-20 00:47:00 -0500 (Thu, 20 Mar 2003) | 2 lines
+r156 | egagnon | 2003-03-20 00:47:00 -0500 (Jeu, 20 mar 2003) | 2 lines
 Changed paths:
    A /sablecc/trunk (from /sablecc/trunk:77)
 
 Recover 2.16.x trunk.
 
 ------------------------------------------------------------------------
-r77 | egagnon | 2001-01-29 22:34:00 -0500 (Mon, 29 Jan 2001) | 8 lines
+r77 | egagnon | 2001-01-29 22:34:00 -0500 (Lun, 29 jan 2001) | 8 lines
 Changed paths:
    M /sablecc/trunk/ChangeLog
    M /sablecc/trunk/README.html
@@ -1037,7 +1631,7 @@ Changed paths:
 	Minor change to node.setXXX in generated code.	Updated version.
 
 ------------------------------------------------------------------------
-r73 | egagnon | 2001-01-22 18:55:00 -0500 (Mon, 22 Jan 2001) | 8 lines
+r73 | egagnon | 2001-01-22 18:55:00 -0500 (Lun, 22 jan 2001) | 8 lines
 Changed paths:
    M /sablecc/trunk/ChangeLog
    M /sablecc/trunk/README.html
@@ -1055,7 +1649,7 @@ Changed paths:
 	Improved error message for missing lexer.dat and parser.dat files.
 
 ------------------------------------------------------------------------
-r71 | egagnon | 2001-01-21 11:24:00 -0500 (Sun, 21 Jan 2001) | 21 lines
+r71 | egagnon | 2001-01-21 11:24:00 -0500 (Dim, 21 jan 2001) | 21 lines
 Changed paths:
    M /sablecc/trunk/ChangeLog
    M /sablecc/trunk/LICENSE
@@ -1094,7 +1688,7 @@ Changed paths:
 	2.16.x.
 
 ------------------------------------------------------------------------
-r69 | egagnon | 2001-01-02 22:29:00 -0500 (Tue, 02 Jan 2001) | 13 lines
+r69 | egagnon | 2001-01-02 22:29:00 -0500 (Mar, 02 jan 2001) | 13 lines
 Changed paths:
    M /sablecc/trunk/ChangeLog
    M /sablecc/trunk/README.html
@@ -1121,7 +1715,7 @@ Changed paths:
 	2.15.x.
 
 ------------------------------------------------------------------------
-r67 | egagnon | 2000-12-24 14:34:00 -0500 (Sun, 24 Dec 2000) | 14 lines
+r67 | egagnon | 2000-12-24 14:34:00 -0500 (Dim, 24 déc 2000) | 14 lines
 Changed paths:
    M /sablecc/trunk/ChangeLog
    M /sablecc/trunk/README.html
@@ -1143,7 +1737,7 @@ Changed paths:
 	sablecc.
 
 ------------------------------------------------------------------------
-r62 | egagnon | 2000-12-16 20:44:00 -0500 (Sat, 16 Dec 2000) | 22 lines
+r62 | egagnon | 2000-12-16 20:44:00 -0500 (Sam, 16 déc 2000) | 22 lines
 Changed paths:
    M /sablecc/trunk/ChangeLog
    A /sablecc/trunk/ChangeLog.header
@@ -1181,7 +1775,7 @@ Changed paths:
 	files.
 
 ------------------------------------------------------------------------
-r60 | egagnon | 2000-12-08 02:17:00 -0500 (Fri, 08 Dec 2000) | 345 lines
+r60 | egagnon | 2000-12-08 02:17:00 -0500 (Ven, 08 déc 2000) | 345 lines
 Changed paths:
    A /sablecc/trunk/AUTHORS
    M /sablecc/trunk/ChangeLog
@@ -1810,7 +2404,7 @@ Changed paths:
 	package.
 
 ------------------------------------------------------------------------
-r59 | egagnon | 2000-12-08 02:17:00 -0500 (Fri, 08 Dec 2000) | 2 lines
+r59 | egagnon | 2000-12-08 02:17:00 -0500 (Ven, 08 déc 2000) | 2 lines
 Changed paths:
    D /sablecc/trunk/ca/mcgill/sable/sablecc
    A /sablecc/trunk/src
@@ -1821,7 +2415,7 @@ Changed paths:
 Move directory.
 
 ------------------------------------------------------------------------
-r52 | egagnon | 2000-03-04 21:43:51 -0500 (Sat, 04 Mar 2000) | 3 lines
+r52 | egagnon | 2000-03-04 21:43:51 -0500 (Sam, 04 mar 2000) | 3 lines
 Changed paths:
    A /sablecc/trunk/ChangeLog
    M /sablecc/trunk/SableCC-LICENSE
@@ -1844,7 +2438,7 @@ Added much improved conflict error messages.  Applied modifications by
 Ben Menking <bmenking at bigfoot.com>.
 
 ------------------------------------------------------------------------
-r50 | egagnon | 2000-03-03 20:30:20 -0500 (Fri, 03 Mar 2000) | 2 lines
+r50 | egagnon | 2000-03-03 20:30:20 -0500 (Ven, 03 mar 2000) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC-LICENSE
    M /sablecc/trunk/SableCC.java
@@ -2115,7 +2709,7 @@ Changed paths:
 Fixed a bug in TypedLinkedList.
 
 ------------------------------------------------------------------------
-r48 | egagnon | 1999-12-28 18:05:46 -0500 (Tue, 28 Dec 1999) | 2 lines
+r48 | egagnon | 1999-12-28 18:05:46 -0500 (Mar, 28 déc 1999) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -2385,7 +2979,7 @@ Changed paths:
 Added -d option.
 
 ------------------------------------------------------------------------
-r46 | egagnon | 1999-11-09 01:23:24 -0500 (Tue, 09 Nov 1999) | 2 lines
+r46 | egagnon | 1999-11-09 01:23:24 -0500 (Mar, 09 nov 1999) | 2 lines
 Changed paths:
    A /sablecc/trunk/COPYING-LESSER
    A /sablecc/trunk/SableCC-LICENSE (from /sablecc/trunk/ca/mcgill/sable/sablecc/License.txt:45)
@@ -2659,7 +3253,7 @@ Changed paths:
 Fixed lexer states.  JDK 1.2 only.  Removed SableUtil dependency.
 
 ------------------------------------------------------------------------
-r44 | egagnon | 1999-02-20 17:54:54 -0500 (Sat, 20 Feb 1999) | 2 lines
+r44 | egagnon | 1999-02-20 17:54:54 -0500 (Sam, 20 fév 1999) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -2924,7 +3518,7 @@ Changed paths:
 Fixed a bug related to loading resources.
 
 ------------------------------------------------------------------------
-r42 | egagnon | 1999-02-19 09:48:35 -0500 (Fri, 19 Feb 1999) | 2 lines
+r42 | egagnon | 1999-02-19 09:48:35 -0500 (Ven, 19 fév 1999) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -3189,7 +3783,7 @@ Changed paths:
 Added defaultIn/Out methods in AST walkers.
 
 ------------------------------------------------------------------------
-r40 | egagnon | 1999-01-31 21:29:13 -0500 (Sun, 31 Jan 1999) | 2 lines
+r40 | egagnon | 1999-01-31 21:29:13 -0500 (Dim, 31 jan 1999) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -3455,7 +4049,7 @@ Changed paths:
 JDK 1.2 compatibility.
 
 ------------------------------------------------------------------------
-r30 | egagnon | 1998-11-09 10:35:02 -0500 (Mon, 09 Nov 1998) | 2 lines
+r30 | egagnon | 1998-11-09 10:35:02 -0500 (Lun, 09 nov 1998) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -3720,7 +4314,7 @@ Changed paths:
 Made Lexer.getToken() protected.
 
 ------------------------------------------------------------------------
-r22 | egagnon | 1998-07-24 08:46:50 -0400 (Fri, 24 Jul 1998) | 2 lines
+r22 | egagnon | 1998-07-24 08:46:50 -0400 (Ven, 24 jul 1998) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -3985,7 +4579,7 @@ Changed paths:
 Bug fix release.
 
 ------------------------------------------------------------------------
-r18 | egagnon | 1998-07-23 12:19:27 -0400 (Thu, 23 Jul 1998) | 3 lines
+r18 | egagnon | 1998-07-23 12:19:27 -0400 (Jeu, 23 jul 1998) | 3 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -4251,7 +4845,7 @@ Fixed an bug in an error message and added throws clauses to filter
 methods.
 
 ------------------------------------------------------------------------
-r16 | egagnon | 1998-07-18 21:43:30 -0400 (Sat, 18 Jul 1998) | 2 lines
+r16 | egagnon | 1998-07-18 21:43:30 -0400 (Sam, 18 jul 1998) | 2 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -4521,7 +5115,7 @@ Changed paths:
 Fixed the package name bug. It now accepts uppercase letters.
 
 ------------------------------------------------------------------------
-r7 | egagnon | 1998-07-04 14:21:32 -0400 (Sat, 04 Jul 1998) | 4 lines
+r7 | egagnon | 1998-07-04 14:21:32 -0400 (Sam, 04 jul 1998) | 4 lines
 Changed paths:
    M /sablecc/trunk/SableCC.java
    M /sablecc/trunk/ca/mcgill/sable/sablecc/AcceptStates.java
@@ -4800,7 +5394,7 @@ divided the work into two parts: SableCC and SableUtil.  Also, fixed a
 minor lexer problem.
 
 ------------------------------------------------------------------------
-r5 | egagnon | 1998-07-04 14:05:16 -0400 (Sat, 04 Jul 1998) | 6 lines
+r5 | egagnon | 1998-07-04 14:05:16 -0400 (Sam, 04 jul 1998) | 6 lines
 Changed paths:
    D /sablecc/trunk/GDL.grammar
    M /sablecc/trunk/SableCC.java
@@ -5170,7 +5764,7 @@ this version as a base for any modification; instead, use a version of
 SableCC licensed under a different license.
 
 ------------------------------------------------------------------------
-r4 | egagnon | 1998-07-04 14:05:16 -0400 (Sat, 04 Jul 1998) | 2 lines
+r4 | egagnon | 1998-07-04 14:05:16 -0400 (Sam, 04 jul 1998) | 2 lines
 Changed paths:
    A /sablecc/trunk/ca
    A /sablecc/trunk/ca/mcgill
@@ -5181,7 +5775,7 @@ Changed paths:
 Move directory.
 
 ------------------------------------------------------------------------
-r2 | egagnon | 1997-08-31 16:00:00 -0400 (Sun, 31 Aug 1997) | 6 lines
+r2 | egagnon | 1997-08-31 16:00:00 -0400 (Dim, 31 aoû 1997) | 6 lines
 Changed paths:
    A /sablecc/trunk/GDL.grammar
    A /sablecc/trunk/SableCC.java
@@ -5338,7 +5932,7 @@ direct nor indirect support from McGill University.  The name SableCC
 was given later, in September, 1998.
 
 ------------------------------------------------------------------------
-r1 | egagnon | 1997-08-31 16:00:00 -0400 (Sun, 31 Aug 1997) | 2 lines
+r1 | egagnon | 1997-08-31 16:00:00 -0400 (Dim, 31 aoû 1997) | 2 lines
 Changed paths:
    A /sablecc
    A /sablecc/branches
diff --git a/LICENSE b/LICENSE
index 283bc3c..18cb911 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
 SableCC, an object-oriented compiler framework.
-Copyright (C) 1997-2003 Etienne M. Gagnon <etienne.gagnon at uqam.ca> and
+Copyright (C) 1997-2012 Etienne M. Gagnon <egagnon at j-meg.com> and
 others.  All rights reserved.
 
 See the file "AUTHORS" for the name of all copyright holders.
diff --git a/README.html b/README.html
index c082ad1..259a867 100644
--- a/README.html
+++ b/README.html
@@ -1,7 +1,7 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
 <head>
-  <title>SableCC 3.2 - Read Me</title>
+  <title>SableCC 3.7 - Read Me</title>
 </head>
 <body bgcolor="#ffffff">
 <a name="top"></a>
@@ -10,14 +10,14 @@
   <tbody>
     <tr align="center">
       <td>
-      <h1><b><i><font size="+4">SableCC</font></i></b> version<!-- --> 3.2</h1>
+      <h1><b><i><font size="+4">SableCC</font></i></b> version<!-- --> 3.7</h1>
       <h2>ReadMe</h2>
       </td>
     </tr>
   </tbody>
 </table>
 </center>
-<p>Welcome to <b><i><font size="+1">SableCC</font></i></b> version 3.2.</p>
+<p>Welcome to <b><i><font size="+1">SableCC</font></i></b> version 3.7.</p>
 <p>Please read this document carefully.</p>
 <a name="content"></a>
 <table width="100%" bgcolor="#f2ff80">
@@ -66,16 +66,16 @@
 </table>
 <p>Here are the minimal steps to get <b><i><font size="+1">SableCC</font></i></b>
 running.</p>
-<h3>1) If you got <tt>sablecc-3.2.tar.gz</tt> or <tt>sablecc-3.2.zip</tt> (binary packages)</h3>
+<h3>1) If you got <tt>sablecc-3.7.tar.gz</tt> or <tt>sablecc-3.7.zip</tt> (binary packages)</h3>
 <ol>
-  <li> Decompress the file <tt>sablecc-3.2.tar.gz</tt> or <tt>sablecc-3.2.zip</tt>:
+  <li> Decompress the file <tt>sablecc-3.7.tar.gz</tt> or <tt>sablecc-3.7.zip</tt>:
     <tt>
-    <pre>	  tar -xzvf sablecc-3.2.tar.gz<br>	  </pre>
+    <pre>	  tar -xzvf sablecc-3.7.tar.gz<br>	  </pre>
     </tt> or <tt>
-    <pre>	  jar -xvf sablecc-3.2.zip<br>      </pre>
+    <pre>	  jar -xvf sablecc-3.7.zip<br>      </pre>
     </tt> </li>
-  <li> Go into the in <tt>sablecc-3.2</tt> directory: <tt>
-    <pre>	  cd sablecc-3.2<br>      </pre>
+  <li> Go into the in <tt>sablecc-3.7</tt> directory: <tt>
+    <pre>	  cd sablecc-3.7<br>      </pre>
     </tt> </li>
   <li> You will find an executable <tt>sablecc.jar</tt> file in the <tt>lib</tt>
 directory: <tt>
@@ -93,14 +93,14 @@ You should first copy (and edit) the files <tt>lib/sablecc.jar</tt> and
 <tt>bin/sablecc</tt> (GNU/Linux, Mac, Unix) or <tt>bin\sablecc.bat</tt> (Windows) to an
 appropriate location, and set your PATH environment variable
 appropriately. </p>
-<h3>2) If you got <tt>sablecc-3.2-src.tar.gz</tt> (source
+<h3>2) If you got <tt>sablecc-3.7-src.tar.gz</tt> (source
 package)</h3>
 <ol>
-  <li> Decompress the file <tt>sablecc-3.2-src.tar.gz</tt>: <tt>
-    <pre>	  tar -xzvf sablecc-3.2-src.tar.gz<br>      </pre>
+  <li> Decompress the file <tt>sablecc-3.7-src.tar.gz</tt>: <tt>
+    <pre>	  tar -xzvf sablecc-3.7-src.tar.gz<br>      </pre>
     </tt> </li>
-  <li> Go into the in <tt>sablecc-3.2</tt> directory: <tt>
-    <pre>	  cd sablecc-3.2<br>      </pre>
+  <li> Go into the in <tt>sablecc-3.7</tt> directory: <tt>
+    <pre>	  cd sablecc-3.7<br>      </pre>
     </tt> </li>
   <li> If you want an automatic build process, you need to have <a
  href="http://ant.apache.org/">Ant</a> installed on your system. 
@@ -152,7 +152,7 @@ the exact terms of the license in the files <a href="LICENSE">LICENSE</a>,
 </table>
 <p>You can find complete and detailed documentation on the <b><i><font
  size="+1">SableCC </font></i></b>framework and syntax at the
-site <a href="http://sablecc.org/documentation.html">http://sablecc.org/documentation.html</a> .</p>
+site <a href="http://sablecc.org/wiki/DocumentationPage">http://sablecc.org/wiki/DocumentationPage</a> .</p>
 <a name="help"></a>
 <table width="100%" bgcolor="#f2ff80">
   <tbody>
@@ -174,7 +174,7 @@ site <a href="http://sablecc.org/documentation.html">http://sablecc.org/document
 </table>
 <p>The easiest way of obtaining help is to get on the <i><b><font size="+1">SableCC</font></b> mailing-list</a></i>,
  by visiting the site
- <a href="http://sablecc.org/lists/control/listinfo/sablecc-user/">http://sablecc.org/lists/control/listinfo/sablecc-user/</a> .
+ <a href="https://groups.google.com/forum/#!forum/sablecc">https://groups.google.com/forum/#!forum/sablecc</a> .
 Many <b><i><font size="+1">SableCC</font></i></b> users around the
 world are already on this mailing-list. This is the best pool of
 information available to you.</p>
@@ -202,7 +202,7 @@ information available to you.</p>
 <p>You are very welcome to express your appreciation of <b><i><font
  size="+1">SableCC</font></i></b>. If you
  would like to make a financial donation to the SableCC project, you
- can get in touch with Etienne Gagnon (<a href="mailto:egagnon at sablevm.org?subject=Donation">egagnon at sablevm.org</a>).
+ can get in touch with Etienne Gagnon (<a href="mailto:egagnon at j-meg.com?subject=Donation">egagnon at j-meg.com</a>).
  Thank you in advance. </p>
 </body>
 </html>
diff --git a/build.xml b/build.xml
index 6a40610..1e2c056 100644
--- a/build.xml
+++ b/build.xml
@@ -18,7 +18,7 @@ Global Properties
 -->
 
   <property name="package" value="sablecc"/>
-  <property name="version" value="3.2"/>
+  <property name="version" value="3.7"/>
 
   <property name="src.dir" value="src"/>
   <property name="classes.dir" value="classes"/>
@@ -189,7 +189,8 @@ Compile Target
       srcdir="${src.dir}"
       destdir="${classes.dir}"
       includes="**/*.java" 
-      depend="yes"
+      debug="true"
+      debuglevel="lines,vars,source"
     />
 
     <copy todir="${classes.dir}">
diff --git a/lib/sablecc.jar b/lib/sablecc.jar
deleted file mode 100644
index 1580cd0..0000000
Binary files a/lib/sablecc.jar and /dev/null differ
diff --git a/src/org/sablecc/sablecc/AUTHORS b/src/org/sablecc/sablecc/AUTHORS
index 37505d3..ed2cc20 100644
--- a/src/org/sablecc/sablecc/AUTHORS
+++ b/src/org/sablecc/sablecc/AUTHORS
@@ -1,7 +1,8 @@
 This file contains the name of all copyright holders.
 
-Etienne M. Gagnon <etienne.gagnon at uqam.ca>
+Etienne M. Gagnon <egagnon at j-meg.com>
 Ben Menking <bmenking at bigfoot.com>
 Mariusz Nowostawski <mariusz at marni.otago.ac.nz>
-Komivi Kevin Agbakpem <agbakpem.komivi at courrier.uqam.ca>
+Komivi Kevin Agbakpem <kevin.agbakpem at gmail.com>
 Kis Gergely <kisg at inf.bme.hu>
+Benne Otten <benneotten at gmail.com>
diff --git a/src/org/sablecc/sablecc/AcceptStates.java b/src/org/sablecc/sablecc/AcceptStates.java
index 7bdfe11..3428da7 100644
--- a/src/org/sablecc/sablecc/AcceptStates.java
+++ b/src/org/sablecc/sablecc/AcceptStates.java
@@ -9,7 +9,6 @@ package org.sablecc.sablecc;
 
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
 
 public class AcceptStates extends DepthFirstAdapter
 {
@@ -24,6 +23,7 @@ public class AcceptStates extends DepthFirstAdapter
     this.stateName = stateName;
   }
 
+  @Override
   public void caseStart(Start node)
   {
     for(int i = 0; i < dfa.states.size(); i++)
diff --git a/src/org/sablecc/sablecc/AddAstProductions.java b/src/org/sablecc/sablecc/AddAstProductions.java
index 3238138..8eae00b 100644
--- a/src/org/sablecc/sablecc/AddAstProductions.java
+++ b/src/org/sablecc/sablecc/AddAstProductions.java
@@ -7,10 +7,10 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * AddAstProductions
@@ -23,18 +23,20 @@ import java.io.*;
  * to the SableCC2.x.x original grammar and renammed Abstract Syntax Tree.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class AddAstProductions extends DepthFirstAdapter
 {
 
   LinkedList listAstProd = new TypedLinkedList();
-  private boolean firstAlt;
+//  private boolean firstAlt;
 
   public AddAstProductions()
   {}
 
+  @Override
   public void caseAProd(AProd node)
   {
-    firstAlt = true;
+//    firstAlt = true;
     listOfAstAlts = new TypedLinkedList();
 
     /*
@@ -56,17 +58,20 @@ public class AddAstProductions extends DepthFirstAdapter
     listAstProd.add(astProd);
   }
 
+  @Override
   public void outAGrammar(AGrammar node)
   {
     node.setAst(new AAst(listAstProd));
   }
 
+  @Override
   public void inAAlt(AAlt node)
   {
     listElems = new TypedLinkedList();
     processingParsedAlt = true;
   }
 
+  @Override
   public void inAAltTransform(AAltTransform node)
   {
     if(node.getLBrace() != null)
@@ -75,6 +80,7 @@ public class AddAstProductions extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAAlt(AAlt node)
   {
     TId aAltname = node.getAltName() == null ? null : (TId)node.getAltName().clone();
@@ -86,6 +92,7 @@ public class AddAstProductions extends DepthFirstAdapter
 
   boolean processingParsedAlt;
 
+  @Override
   public void inAElem(AElem node)
   {
     if(processingParsedAlt)
diff --git a/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java b/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
index 3c0d404..84fa647 100644
--- a/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
+++ b/src/org/sablecc/sablecc/AddEventualEmptyTransformationToProductions.java
@@ -7,10 +7,10 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * AddEventualEmptyTransformationToProductions
@@ -24,10 +24,11 @@ import java.io.*;
  * not specified them.
  */
 
+ at SuppressWarnings("rawtypes")
 public class AddEventualEmptyTransformationToProductions extends DepthFirstAdapter
 {
   private String currentProd;
-  private String currentAlt;
+//  private String currentAlt;
 
   private ResolveIds ids;
   private ResolveAstIds ast_ids;
@@ -38,6 +39,7 @@ public class AddEventualEmptyTransformationToProductions extends DepthFirstAdapt
     this.ast_ids = ast_ids;
   }
 
+  @Override
   public void inAProd(AProd node)
   {
     currentProd = (String)ids.names.get(node);
@@ -57,7 +59,7 @@ public class AddEventualEmptyTransformationToProductions extends DepthFirstAdapt
       {
         alts[i].apply( new DepthFirstAdapter()
                        {
-                         public void inAAlt(AAlt node)
+                         @Override public void inAAlt(AAlt node)
                          {
                            if(node.getAltTransform() != null && ((AAltTransform)node.getAltTransform()).getTerms().size() > 0)
                            {
diff --git a/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java b/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
index 336a94e..a28177a 100644
--- a/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
+++ b/src/org/sablecc/sablecc/AddProdTransformAndAltTransform.java
@@ -7,10 +7,10 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * AddProdTransformAndAltTransform
@@ -24,12 +24,14 @@ import java.io.*;
  * not specified them.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class AddProdTransformAndAltTransform extends DepthFirstAdapter
 {
 
   private String currentProdId;
-  private String currentAlt;
+//  private String currentAlt;
 
+  @Override
   public void inAProd(final AProd production)
   {
     currentProdId = production.getId().getText();
@@ -47,11 +49,12 @@ public class AddProdTransformAndAltTransform extends DepthFirstAdapter
   private int i;
   private LinkedList list;
 
+  @Override
   public void inAAlt(AAlt alt)
   {
     if(alt.getAltTransform() == null)
     {
-      currentAlt = currentProdId;
+//      currentAlt = currentProdId;
       list = new LinkedList();
       AProdName aProdName = new AProdName(new TId(currentProdId), null);
 
@@ -68,6 +71,7 @@ public class AddProdTransformAndAltTransform extends DepthFirstAdapter
         {
           ((PElem) temp[i]).apply(new DepthFirstAdapter()
                                   {
+                                    @Override
                                     public void caseAElem(AElem elem)
                                     {
                                       PTerm term;
diff --git a/src/org/sablecc/sablecc/AltTransformAdapter.java b/src/org/sablecc/sablecc/AltTransformAdapter.java
index fc12732..833b689 100644
--- a/src/org/sablecc/sablecc/AltTransformAdapter.java
+++ b/src/org/sablecc/sablecc/AltTransformAdapter.java
@@ -8,10 +8,11 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class AltTransformAdapter extends DepthFirstAdapter
 {
   ResolveAltIds altIds;
@@ -37,6 +38,7 @@ public class AltTransformAdapter extends DepthFirstAdapter
     this.simpleTermOrsimpleListTermTypes = simpleTermOrsimpleListTermTypes;
   }
 
+  @Override
   public void inASimpleTerm(ASimpleTerm node)
   {
     String name = node.getId().getText();
@@ -74,6 +76,7 @@ public class AltTransformAdapter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inASimpleListTerm(ASimpleListTerm node)
   {
     String name = node.getId().getText();
@@ -115,6 +118,7 @@ public class AltTransformAdapter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAListTerm(AListTerm node)
   {
     if( (node.getListTerms() != null) && (node.getListTerms().size() > 0) )
diff --git a/src/org/sablecc/sablecc/AlternativeElementTypes.java b/src/org/sablecc/sablecc/AlternativeElementTypes.java
index 1c74f44..5cda8dd 100644
--- a/src/org/sablecc/sablecc/AlternativeElementTypes.java
+++ b/src/org/sablecc/sablecc/AlternativeElementTypes.java
@@ -7,11 +7,12 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class AlternativeElementTypes extends DepthFirstAdapter
 {
   private Map altElemTypes = new TypedHashMap(StringCast.instance,
@@ -30,9 +31,11 @@ public class AlternativeElementTypes extends DepthFirstAdapter
     return altElemTypes;
   }
 
+  @Override
   public void caseAAst(AAst node)
   {}
 
+  @Override
   public void caseAProd(final AProd production)
   {
     Object []temp = production.getAlts().toArray();
@@ -42,6 +45,7 @@ public class AlternativeElementTypes extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAlt(AAlt node)
   {
     currentAlt = (String)ids.names.get(node);
@@ -52,6 +56,7 @@ public class AlternativeElementTypes extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAElem(AElem node)
   {
     String elemType = (String)ids.elemTypes.get(node);
diff --git a/src/org/sablecc/sablecc/BooleanCast.java b/src/org/sablecc/sablecc/BooleanCast.java
index b14570e..f3ddc89 100644
--- a/src/org/sablecc/sablecc/BooleanCast.java
+++ b/src/org/sablecc/sablecc/BooleanCast.java
@@ -7,7 +7,6 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 
 public class BooleanCast implements Cast
 {
@@ -16,6 +15,7 @@ public class BooleanCast implements Cast
   private BooleanCast()
   {}
 
+  @Override
   public  Object cast(Object o)
   {
     return (Boolean) o;
diff --git a/src/org/sablecc/sablecc/CharSet.java b/src/org/sablecc/sablecc/CharSet.java
index b43bd7b..3455656 100644
--- a/src/org/sablecc/sablecc/CharSet.java
+++ b/src/org/sablecc/sablecc/CharSet.java
@@ -8,9 +8,8 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Enumeration;
-import java.util.Vector;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class CharSet implements Cloneable
 {
   private final Vector intervals = new Vector(0);
@@ -33,6 +32,7 @@ public class CharSet implements Cloneable
     }
   }
 
+  @Override
   public Object clone()
   {
     return new CharSet(intervals);
@@ -160,6 +160,7 @@ public class CharSet implements Cloneable
     return result;
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
@@ -180,6 +181,7 @@ public class CharSet implements Cloneable
       this.end = end;
     }
 
+    @Override
     public Object clone()
     {
       return new Interval(start, end);
@@ -195,6 +197,7 @@ public class CharSet implements Cloneable
       return "" + ((int) c);
     }
 
+    @Override
     public String toString()
     {
       if(start < end)
@@ -218,6 +221,7 @@ public class CharSet implements Cloneable
     private IntervalCast()
     {}
 
+    @Override
     public Object cast(Object o)
     {
       return (Interval) o;
diff --git a/src/org/sablecc/sablecc/ComputeCGNomenclature.java b/src/org/sablecc/sablecc/ComputeCGNomenclature.java
index 4452150..0cf3eec 100644
--- a/src/org/sablecc/sablecc/ComputeCGNomenclature.java
+++ b/src/org/sablecc/sablecc/ComputeCGNomenclature.java
@@ -19,11 +19,12 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ComputeCGNomenclature extends DepthFirstAdapter
 {
   private String currentProd;
@@ -61,9 +62,10 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
     return termNumbers;
   }
 
+  @Override
   public void caseAProd(final AProd production)
   {
-    currentProd = "P" + ids.name(production.getId().getText());
+    currentProd = "P" + ResolveIds.name(production.getId().getText());
     Object []temp = production.getAlts().toArray();
     for(int i = 0; i<temp.length; i++)
     {
@@ -71,6 +73,7 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAAlt(AAlt nodeAlt)
   {
     counter = 0;
@@ -78,7 +81,7 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
     if(nodeAlt.getAltName() != null)
     {
       currentAlt = "A"+
-                   ids.name( nodeAlt.getAltName().getText() )+
+                   ResolveIds.name( nodeAlt.getAltName().getText() )+
                    currentProd.substring(1);
     }
     else
@@ -89,9 +92,11 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
     counter = 0;
   }
 
+  @Override
   public void caseAAst(AAst node)
   {}
 
+  @Override
   public void inAElem(AElem node)
   {
     String elemType = (String)ids.elemTypes.get(node);
@@ -102,24 +107,27 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inANewTerm(ANewTerm node)
   {
     AProdName aProdName = (AProdName)node.getProdName();
-    String type = "P" + ids.name(aProdName.getId().getText());
+    String type = "P" + ResolveIds.name(aProdName.getId().getText());
 
     altTransformElemTypes.put(node, type);
     termNumbers.put(node, new Integer(++counter));
   }
 
+  @Override
   public void inANewListTerm(ANewListTerm node)
   {
     AProdName aProdName = (AProdName)node.getProdName();
-    String type = "P" + ids.name(aProdName.getId().getText());
+    String type = "P" + ResolveIds.name(aProdName.getId().getText());
 
     altTransformElemTypes.put(node, type);
     termNumbers.put(node, new Integer(++counter));
   }
 
+  @Override
   public void outAListTerm(AListTerm node)
   {
     if( node.getListTerms().size() > 0 )
@@ -147,6 +155,7 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
     termNumbers.put(node, new Integer(++counter));
   }
 
+  @Override
   public void caseASimpleTerm(ASimpleTerm node)
   {
     String name;
@@ -235,12 +244,14 @@ public class ComputeCGNomenclature extends DepthFirstAdapter
   termNumbers.put(node, new Integer(++counter));
   }
   */
+  @Override
   public void caseANullTerm(ANullTerm node)
   {
     altTransformElemTypes.put(node, "null");
     termNumbers.put(node, new Integer(++counter));
   }
 
+  @Override
   public void caseASimpleListTerm(ASimpleListTerm node)
   {
     String name;
diff --git a/src/org/sablecc/sablecc/ComputeInlining.java b/src/org/sablecc/sablecc/ComputeInlining.java
index 7926289..573040c 100644
--- a/src/org/sablecc/sablecc/ComputeInlining.java
+++ b/src/org/sablecc/sablecc/ComputeInlining.java
@@ -8,6 +8,7 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
@@ -25,6 +26,7 @@ import org.sablecc.sablecc.node.*;
  * try to inline those productions.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ComputeInlining
 {
   //Productions implied in a conflict
@@ -59,6 +61,10 @@ public class ComputeInlining
 
     for(int i=0; i<nameOfProds.length; i++)
     {
+      if(nameOfProds[i].equals("Start")) {
+          continue;
+      }
+
       final AProd prod = (AProd)productionsMap.get(nameOfProds[i]);
 
       //We proceed inlining only if the production to inline is not recursive
@@ -70,6 +76,7 @@ public class ComputeInlining
 
         tree.apply(new DepthFirstAdapter()
                    {
+                     @Override
                      public void caseAProd(AProd node)
                      {
                        //We do not inline the production itself.
@@ -115,6 +122,7 @@ public class ComputeInlining
 
     production.apply(new DepthFirstAdapter()
                      {
+                       @Override
                        public void caseAProd(AProd node)
                        {
                          Object temp[] = node.getAlts().toArray();
@@ -124,6 +132,7 @@ public class ComputeInlining
                          }
                        }
 
+                       @Override
                        public void caseAAlt(AAlt node)
                        {
                          Object temp[] = node.getElems().toArray();
@@ -133,6 +142,7 @@ public class ComputeInlining
                          }
                        }
 
+                       @Override
                        public void caseAElem(AElem node)
                        {
                          if(node.getId().getText().equals(currentProdName))
diff --git a/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java b/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
index 792f9c4..480cfc8 100644
--- a/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
+++ b/src/org/sablecc/sablecc/ComputeSimpleTermPosition.java
@@ -7,11 +7,12 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ComputeSimpleTermPosition extends DepthFirstAdapter
 {
   String currentAlt;
@@ -33,12 +34,14 @@ public class ComputeSimpleTermPosition extends DepthFirstAdapter
     this.ids = ids;
   }
 
+  @Override
   public void inAProd(AProd node)
   {
-    currentProd = ids.name(node.getId().getText());
+    currentProd = ResolveIds.name(node.getId().getText());
     ids.names.put(node, currentProd);
   }
 
+  @Override
   public void inAAlt(AAlt node)
   {
     counter = 0;
@@ -47,7 +50,7 @@ public class ComputeSimpleTermPosition extends DepthFirstAdapter
     if(node.getAltName() != null)
     {
       currentAlt = "A" +
-                   ids.name( node.getAltName().getText() ) +
+                   ResolveIds.name( node.getAltName().getText() ) +
                    currentProd;
     }
     else
@@ -58,6 +61,7 @@ public class ComputeSimpleTermPosition extends DepthFirstAdapter
     ids.names.put(node, currentAlt);
   }
 
+  @Override
   public void inAElem(AElem node)
   {
     if(processingParsedAlt)
@@ -81,7 +85,7 @@ public class ComputeSimpleTermPosition extends DepthFirstAdapter
       return;
     }
 
-    String name = ids.name( node.getId().getText() );
+//    String name = ResolveIds.name( node.getId().getText() );
 
     String elemType = (String)ids.elemTypes.get(node);
     if(processingParsedAlt && elemType.startsWith("P"))
@@ -100,6 +104,7 @@ public class ComputeSimpleTermPosition extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAAlt(AAlt node)
   {
     processingParsedAlt = false;
diff --git a/src/org/sablecc/sablecc/ConflictException.java b/src/org/sablecc/sablecc/ConflictException.java
index 9dc3a37..01b585c 100644
--- a/src/org/sablecc/sablecc/ConflictException.java
+++ b/src/org/sablecc/sablecc/ConflictException.java
@@ -7,9 +7,9 @@
 
 package org.sablecc.sablecc;
 
-import org.sablecc.sablecc.node.*;
-import java.util.Set;
+import java.util.*;
 
+ at SuppressWarnings("rawtypes")
 public class ConflictException extends Exception
 {
   private Set conflictualProductions;
diff --git a/src/org/sablecc/sablecc/ConstructNFA.java b/src/org/sablecc/sablecc/ConstructNFA.java
index 33c65ec..b4dc06c 100644
--- a/src/org/sablecc/sablecc/ConstructNFA.java
+++ b/src/org/sablecc/sablecc/ConstructNFA.java
@@ -8,15 +8,17 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ConstructNFA extends DepthFirstAdapter
 {
   private ResolveIds ids;
   private String stateName;
 
-  private int i;
+//  private int i;
 
   ConstructNFA(ResolveIds ids, String stateName)
   {
@@ -24,6 +26,7 @@ public class ConstructNFA extends DepthFirstAdapter
     this.stateName = stateName;
   }
 
+  @Override
   public void outStart(Start node)
   {
     setOut(node, getOut(node.getPGrammar()));
@@ -33,6 +36,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getPGrammar(), null);
   }
 
+  @Override
   public void outAGrammar(AGrammar node)
   {
     setOut(node, getOut(node.getTokens()));
@@ -42,6 +46,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getTokens(), null);
   }
 
+  @Override
   public void outAHelperDef(AHelperDef node)
   {
     setOut(node, getOut(node.getRegExp()));
@@ -51,6 +56,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getRegExp(), null);
   }
 
+  @Override
   public void outATokens(ATokens node)
   {
     ATokenDef[] tokenDefs = (ATokenDef[]) node.getTokenDefs().toArray(new ATokenDef[0]);
@@ -80,6 +86,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node, result);
   }
 
+  @Override
   public void outATokenDef(ATokenDef node)
   {
     Set set
@@ -109,6 +116,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getRegExp(), null);
   }
 
+  @Override
   public void outAStateList(AStateList node)
   {
     Set set
@@ -126,6 +134,7 @@ public class ConstructNFA extends DepthFirstAdapter
             );
   }
 
+  @Override
   public void outARegExp(ARegExp node)
   {
     AConcat[] concats = (AConcat[]) node.getConcats().toArray(new AConcat[0]);
@@ -163,6 +172,7 @@ public class ConstructNFA extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAConcat(AConcat node)
   {
     AUnExp[] unExps = (AUnExp[]) node.getUnExps().toArray(new AUnExp[0]);
@@ -206,6 +216,7 @@ public class ConstructNFA extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAUnExp(AUnExp node)
   {
     Object o = getOut(node.getBasic());
@@ -248,6 +259,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getUnOp(), null);
   }
 
+  @Override
   public void outACharBasic(ACharBasic node)
   {
     char c = ((Character) getOut(node.getChar())).charValue();
@@ -258,6 +270,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getChar(), null);
   }
 
+  @Override
   public void outASetBasic(ASetBasic node)
   {
     setOut(node, getOut(node.getSet()));
@@ -267,6 +280,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getSet(), null);
   }
 
+  @Override
   public void outAStringBasic(AStringBasic node)
   {
     String s = node.getString().getText();
@@ -275,6 +289,7 @@ public class ConstructNFA extends DepthFirstAdapter
     setOut(node, new NFA(s));
   }
 
+  @Override
   public void outAIdBasic(AIdBasic node)
   {
     Object o = getOut((Node) ids.helpers.get(node.getId().getText()));
@@ -289,6 +304,7 @@ public class ConstructNFA extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outARegExpBasic(ARegExpBasic node)
   {
     setOut(node, getOut(node.getRegExp()));
@@ -298,22 +314,26 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getRegExp(), null);
   }
 
+  @Override
   public void outACharChar(ACharChar node)
   {
     setOut(node, new Character(node.getChar().getText().charAt(1)));
   }
 
+  @Override
   public void outADecChar(ADecChar node)
   {
     setOut(node, new Character((char) Integer.parseInt(node.getDecChar().getText())));
   }
 
+  @Override
   public void outAHexChar(AHexChar node)
   {
     setOut(node, new Character((char)
                                Integer.parseInt(node.getHexChar().getText().substring(2), 16)));
   }
 
+  @Override
   public void outAOperationSet(AOperationSet node)
   {
     try
@@ -350,6 +370,7 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getRight(), null);
   }
 
+  @Override
   public void outAIntervalSet(AIntervalSet node)
   {
     char c1 = ((Character) getOut(node.getLeft())).charValue();
@@ -369,31 +390,37 @@ public class ConstructNFA extends DepthFirstAdapter
       setOut(node.getRight(), null);
   }
 
+  @Override
   public void outAStarUnOp(AStarUnOp node)
   {
     setOut(node, new Character('*'));
   }
 
+  @Override
   public void outAQMarkUnOp(AQMarkUnOp node)
   {
     setOut(node, new Character('?'));
   }
 
+  @Override
   public void outAPlusUnOp(APlusUnOp node)
   {
     setOut(node, new Character('+'));
   }
 
+  @Override
   public void outAPlusBinOp(APlusBinOp node)
   {
     setOut(node, new Character('+'));
   }
 
+  @Override
   public void outAMinusBinOp(AMinusBinOp node)
   {
     setOut(node, new Character('-'));
   }
 
+  @Override
   public Object getOut(Node node)
   {
     if(node == null)
@@ -404,6 +431,7 @@ public class ConstructNFA extends DepthFirstAdapter
     return super.getOut(node);
   }
 
+  @Override
   public void setOut(Node node, Object out)
   {
     if(node == null)
diff --git a/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java b/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
index c14f56a..4a2ec3c 100644
--- a/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
+++ b/src/org/sablecc/sablecc/ConstructParserGenerationDatas.java
@@ -8,14 +8,16 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ConstructParserGenerationDatas extends DepthFirstAdapter
 {
   private ResolveIds ids;
   private int currentAlt;
-  private boolean processingAst;
+//  private boolean processingAst;
   private String currentProd;
 
   private Map alts;
@@ -26,9 +28,11 @@ public class ConstructParserGenerationDatas extends DepthFirstAdapter
     this.alts = alts;
   }
 
+  @Override
   public void caseAAst(AAst node)
   {}
 
+  @Override
   public void caseAProd(AProd node)
   {
     currentProd = (String) ids.names.get(node);
@@ -39,6 +43,7 @@ public class ConstructParserGenerationDatas extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAlt(AAlt node)
   {
     currentAlt = Grammar.addProduction(currentProd, (String) ids.names.get(node));
@@ -51,9 +56,10 @@ public class ConstructParserGenerationDatas extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAElem(AElem node)
   {
-    String name = ids.name(node.getId().getText());
+    String name = ResolveIds.name(node.getId().getText());
 
     if(node.getSpecifier() != null)
     {
@@ -69,7 +75,7 @@ public class ConstructParserGenerationDatas extends DepthFirstAdapter
     else
     {
       Object token = ids.tokens.get("T" + name);
-      Object production = ids.prods.get("P" + name);
+//      Object production = ids.prods.get("P" + name);
 
       if(token != null)
       {
diff --git a/src/org/sablecc/sablecc/ConstructProdsMap.java b/src/org/sablecc/sablecc/ConstructProdsMap.java
index cd02575..b95ee82 100644
--- a/src/org/sablecc/sablecc/ConstructProdsMap.java
+++ b/src/org/sablecc/sablecc/ConstructProdsMap.java
@@ -8,9 +8,11 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ConstructProdsMap extends DepthFirstAdapter
 {
   public Map productionsMap =
@@ -19,6 +21,7 @@ public class ConstructProdsMap extends DepthFirstAdapter
 
   private String currentProd;
 
+  @Override
   public void caseAProd(AProd node)
   {
     currentProd = ResolveIds.name(node.getId().getText());
diff --git a/src/org/sablecc/sablecc/DFA.java b/src/org/sablecc/sablecc/DFA.java
index 3747676..1c66f28 100644
--- a/src/org/sablecc/sablecc/DFA.java
+++ b/src/org/sablecc/sablecc/DFA.java
@@ -7,9 +7,9 @@
 
 package org.sablecc.sablecc;
 
-import java.util.Vector;
-import java.util.Hashtable;
+import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class DFA
 {
   public DFA(NFA nfa)
@@ -314,6 +314,7 @@ public class DFA
     return result;
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
@@ -338,6 +339,7 @@ public class DFA
     public Vector transitions = new Vector(0);
     public int accept;
 
+    @Override
     public String toString()
     {
       StringBuffer result = new StringBuffer();
@@ -388,6 +390,7 @@ public class DFA
       destination = transition.destination;
     }
 
+    @Override
     public String toString()
     {
       return destination + ":[" + interval() + "]";
diff --git a/src/org/sablecc/sablecc/GenAlts.java b/src/org/sablecc/sablecc/GenAlts.java
index db62b6d..63a7dd1 100644
--- a/src/org/sablecc/sablecc/GenAlts.java
+++ b/src/org/sablecc/sablecc/GenAlts.java
@@ -7,11 +7,13 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class GenAlts extends DepthFirstAdapter
 {
   private MacroExpander macros;
@@ -50,19 +52,23 @@ public class GenAlts extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAAstProd(AAstProd node)
   {
     currentProd = (String) ast_ids.ast_names.get(node);
   }
 
+  @Override
   public void inAAstAlt(AAstAlt node)
   {
     elemList = new TypedLinkedList(ElemInfoCast.instance);
   }
 
+  @Override
   public void caseAProductions(AProductions node)
   {}
 
+  @Override
   public void inAElem(AElem node)
   {
     info = new ElemInfo();
@@ -74,16 +80,19 @@ public class GenAlts extends DepthFirstAdapter
     {
       node.getUnOp().apply(new DepthFirstAdapter()
                            {
+                             @Override
                              public void caseAStarUnOp(AStarUnOp node)
                              {
                                info.operator = ElemInfo.STAR;
                              }
 
+                             @Override
                              public void caseAQMarkUnOp(AQMarkUnOp node)
                              {
                                info.operator = ElemInfo.QMARK;
                              }
 
+                             @Override
                              public void caseAPlusUnOp(APlusUnOp node)
                              {
                                info.operator = ElemInfo.PLUS;
@@ -95,6 +104,7 @@ public class GenAlts extends DepthFirstAdapter
     info = null;
   }
 
+  @Override
   public void outAAstAlt(AAstAlt node)
   {
     String name = (String) ast_ids.ast_names.get(node);
@@ -114,7 +124,7 @@ public class GenAlts extends DepthFirstAdapter
 
     try
     {
-        boolean hasOperator = false;
+//        boolean hasOperator = false;
         boolean hasList = false;
 
       for(Iterator i = elemList.iterator(); i.hasNext();)
@@ -160,7 +170,7 @@ public class GenAlts extends DepthFirstAdapter
           case ElemInfo.STAR:
           case ElemInfo.PLUS:
             {
-              hasOperator = true;
+//              hasOperator = true;
               macros.apply(file, "ListElement",
                            new String[] {info.type, nodeName(info.name)});
             }
@@ -412,6 +422,7 @@ public class GenAlts extends DepthFirstAdapter
     private ElemInfoCast()
     {}
 
+    @Override
     public    Object cast(Object o)
     {
       return (ElemInfo) o;
diff --git a/src/org/sablecc/sablecc/GenAnalyses.java b/src/org/sablecc/sablecc/GenAnalyses.java
index 2e7eb94..704c55e 100644
--- a/src/org/sablecc/sablecc/GenAnalyses.java
+++ b/src/org/sablecc/sablecc/GenAnalyses.java
@@ -7,11 +7,13 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class GenAnalyses extends DepthFirstAdapter
 {
   private MacroExpander macros;
@@ -52,6 +54,7 @@ public class GenAnalyses extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAAstProd(AAstProd node)
   {
     if(mainProduction == null)
@@ -60,19 +63,23 @@ public class GenAnalyses extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inATokenDef(ATokenDef node)
   {
     tokenList.add(ast_ids.astIds.names.get(node));
   }
 
+  @Override
   public void inAAstAlt(AAstAlt node)
   {
     elemList = new TypedLinkedList(ElemInfoCast.instance);
   }
 
+  @Override
   public void caseAProductions(AProductions node)
   {}
 
+  @Override
   public void inAElem(AElem node)
   {
     info = new ElemInfo();
@@ -86,16 +93,19 @@ public class GenAnalyses extends DepthFirstAdapter
       node.getUnOp().apply(new DepthFirstAdapter()
                            {
 
+                             @Override
                              public void caseAStarUnOp(AStarUnOp node)
                              {
                                info.operator = ElemInfo.STAR;
                              }
 
+                             @Override
                              public void caseAQMarkUnOp(AQMarkUnOp node)
                              {
                                info.operator = ElemInfo.QMARK;
                              }
 
+                             @Override
                              public void caseAPlusUnOp(APlusUnOp node)
                              {
                                info.operator = ElemInfo.PLUS;
@@ -108,6 +118,7 @@ public class GenAnalyses extends DepthFirstAdapter
     info = null;
   }
 
+  @Override
   public void outAAstAlt(AAstAlt node)
   {
     AltInfo info = new AltInfo();
@@ -119,6 +130,7 @@ public class GenAnalyses extends DepthFirstAdapter
     altList.add(info);
   }
 
+  @Override
   public void outStart(Start node)
   {
     createAnalysis();
@@ -412,6 +424,7 @@ public class GenAnalyses extends DepthFirstAdapter
     private ElemInfoCast()
     {}
 
+    @Override
     public    Object cast(Object o)
     {
       return (ElemInfo) o;
@@ -431,6 +444,7 @@ public class GenAnalyses extends DepthFirstAdapter
     private AltInfoCast()
     {}
 
+    @Override
     public    Object cast(Object o)
     {
       return (AltInfo) o;
diff --git a/src/org/sablecc/sablecc/GenLexer.java b/src/org/sablecc/sablecc/GenLexer.java
index 05ea799..6f1a9fd 100644
--- a/src/org/sablecc/sablecc/GenLexer.java
+++ b/src/org/sablecc/sablecc/GenLexer.java
@@ -7,13 +7,13 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.io.*;
-import java.util.Vector;
-import java.util.Enumeration;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class GenLexer extends AnalysisAdapter
 {
   private MacroExpander macros;
@@ -50,6 +50,7 @@ public class GenLexer extends AnalysisAdapter
     }
   }
 
+  @Override
   public void caseStart(Start tree)
   {
     String[] names;
@@ -96,6 +97,7 @@ public class GenLexer extends AnalysisAdapter
     tree.apply(transitions);
 
     createLexerException();
+    createIPushbackReader();
     createLexer();
   }
 
@@ -116,7 +118,8 @@ public class GenLexer extends AnalysisAdapter
 
     try
     {
-      macros.apply(file, "LexerException", new String[] {pkgName});
+      macros.apply(file, "LexerException", new String[] {pkgName,
+              ids.pkgName.equals("") ? "node" : ids.pkgName + ".node"});
     }
     catch(IOException e)
     {
@@ -132,6 +135,39 @@ public class GenLexer extends AnalysisAdapter
     {}
   }
 
+  private void createIPushbackReader()
+  {
+    BufferedWriter file;
+
+    try
+    {
+      file = new BufferedWriter(
+               new FileWriter(
+                 new File(pkgDir, "IPushbackReader.java")));
+    }
+    catch(IOException e)
+    {
+      throw new RuntimeException("Unable to create " + new File(pkgDir, "IPushbackReader.java").getAbsolutePath());
+    }
+
+    try
+    {
+      macros.apply(file, "IPushbackReader", new String[] {pkgName});
+    }
+    catch(IOException e)
+    {
+      throw new RuntimeException("An error occured while writing to " +
+                                 new File(pkgDir, "IPushbackReader.java").getAbsolutePath());
+    }
+
+    try
+    {
+      file.close();
+    }
+    catch(IOException e)
+    {}
+  }
+
   private void createLexer()
   {
     BufferedWriter file;
diff --git a/src/org/sablecc/sablecc/GenParser.java b/src/org/sablecc/sablecc/GenParser.java
index 84230dd..0ba5bb6 100644
--- a/src/org/sablecc/sablecc/GenParser.java
+++ b/src/org/sablecc/sablecc/GenParser.java
@@ -7,13 +7,11 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.io.*;
-import org.sablecc.sablecc.Grammar;
-import java.util.Vector;
-import java.util.Enumeration;
 
 /*
  * GenParser
@@ -28,6 +26,7 @@ import java.util.Enumeration;
  * resolving it.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class GenParser extends DepthFirstAdapter
 {
   //This is the tree-walker field which made internal transformations("EBNF"->BNF) to the grammar
@@ -120,10 +119,12 @@ public class GenParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseStart(Start tree)
   {
     tree.getPGrammar().apply(new DepthFirstAdapter()
                              {
+                               @Override
                                public void caseAProd(AProd node)
                                {
                                  hasProductions = true;
@@ -175,6 +176,7 @@ public class GenParser extends DepthFirstAdapter
                  {
                    private boolean hasAlternative;
 
+                   @Override
                    public void caseATokenDef(ATokenDef node)
                    {
                      String name = (String) ids.names.get(node);
@@ -186,16 +188,19 @@ public class GenParser extends DepthFirstAdapter
                      }
                    }
 
+                   @Override
                    public void inAProd(AProd node)
                    {
                      hasAlternative = false;
                    }
 
+                   @Override
                    public void inAAlt(AAlt node)
                    {
                      hasAlternative = true;
                    }
 
+                   @Override
                    public void outAProd(AProd node)
                    {
                      if(hasAlternative)
@@ -278,9 +283,10 @@ public class GenParser extends DepthFirstAdapter
   {
     tree.apply(new DepthFirstAdapter()
                {
+                 @Override
                  public void caseAProd(AProd node)
                  {
-                   currentProd = ids.name(node.getId().getText());
+                   currentProd = ResolveIds.name(node.getId().getText());
                    String name = "P" + currentProd;
 
                    ids.names.put(node, name);
@@ -293,26 +299,29 @@ public class GenParser extends DepthFirstAdapter
                    }
                  }
 
+                 @Override
                  public void outAHelperDef(AHelperDef node)
                  {
                    String name = node.getId().getText();
                    ids.names.put(node, name);
                  }
 
+                 @Override
                  public void outATokenDef(ATokenDef node)
                  {
-                   String name = "T" + ids.name(node.getId().getText());
+                   String name = "T" + ResolveIds.name(node.getId().getText());
 
                    ids.names.put(node, name);
                  }
 
+                 @Override
                  public void caseAAlt(final AAlt alt)
                  {
                    if(alt.getAltName() != null)
                    {
                      currentAlt =
                        "A" +
-                       ids.name(alt.getAltName().getText()) +
+                       ResolveIds.name(alt.getAltName().getText()) +
                        currentProd;
 
                      ids.names.put(alt, currentAlt);
@@ -330,18 +339,20 @@ public class GenParser extends DepthFirstAdapter
                    }
                  }
 
+                 @Override
                  public void caseAAst(AAst node)
                  {}
 
+                 @Override
                  public void caseAElem(final AElem elem)
                  {
                    if(elem.getElemName() != null)
                    {
-                     ids.names.put(elem, ids.name(elem.getElemName().getText()) );
+                     ids.names.put(elem, ResolveIds.name(elem.getElemName().getText()) );
                    }
                    else
                    {
-                     ids.names.put(elem, ids.name(elem.getId().getText()));
+                     ids.names.put(elem, ResolveIds.name(elem.getId().getText()));
                    }
                  }
                }
@@ -366,7 +377,7 @@ public class GenParser extends DepthFirstAdapter
 
     try
     {
-      Symbol[] terminals = Symbol.terminals();
+//      Symbol[] terminals = Symbol.terminals();
       Symbol[] nonterminals = Symbol.nonterminals();
       Production[] productions = Production.productions();
 
@@ -386,11 +397,24 @@ public class GenParser extends DepthFirstAdapter
         macros.apply(file, "ParserCommon", new String[] {"", ""});
       }
 
+      for(int i = 500; i < (productions.length - 1); i += 500) {
+          macros.apply(file, "ParseReduceElseIf", new String[] {"" + (i + 500), "" + i});
+      }
+      
+      macros.apply(file, "ParserParseTail", new String[] {firstProductionName});
+
+      macros.apply(file, "ParserReduceHead", new String[] {"0"});
+      
       //this loop generates the code for all possible reductions and the type of
       //the node needed to be created at a local point.
       for(int i = 0; i < (productions.length - 1); i++)
       {
-        Node node = (Node) alts.get(productions[i].name);
+//        Node node = (Node) alts.get(productions[i].name);
+          
+        if(i % 500 == 0 && i != 0) {
+            macros.apply(file, "ParserReduceTail", new String[] {});
+            macros.apply(file, "ParserReduceHead", new String[] {"" + i});            
+        }
 
         if(activateFilter && !grammarHasTransformations)
         {
@@ -410,7 +434,7 @@ public class GenParser extends DepthFirstAdapter
         }
       }
 
-      macros.apply(file, "ParserParseTail", new String[] {firstProductionName});
+      macros.apply(file, "ParserReduceTail", new String[] {});
 
       //the node creation code. Reduce methods definitions are done here
       for(int i = 0; i < (productions.length - 1); i++)
@@ -421,13 +445,14 @@ public class GenParser extends DepthFirstAdapter
 
         final Node node = (Node) alts.get(productions[i].name);
 
-        final BufferedWriter finalFile = file;
+//        final BufferedWriter finalFile = file;
         final LinkedList stack = new LinkedList();
 
         node.apply(new DepthFirstAdapter()
                    {
                      private int current;
 
+                     @Override
                      public void caseAElem(AElem elem)
                      {
                        current++;
@@ -838,7 +863,7 @@ public class GenParser extends DepthFirstAdapter
     catch(IOException e)
     {}
   }
-
+/*
   private int count(String name)
   {
     if(name.charAt(0) != 'X')
@@ -858,7 +883,8 @@ public class GenParser extends DepthFirstAdapter
 
     return Integer.parseInt(s.toString());
   }
-
+*/
+/*
   private String name(String name)
   {
     if(name.charAt(0) != 'X')
@@ -876,7 +902,7 @@ public class GenParser extends DepthFirstAdapter
 
     return name.substring(i);
   }
-
+*/
   static class Element
   {
     String macro;
diff --git a/src/org/sablecc/sablecc/GenProds.java b/src/org/sablecc/sablecc/GenProds.java
index 5e47012..8abcbe2 100644
--- a/src/org/sablecc/sablecc/GenProds.java
+++ b/src/org/sablecc/sablecc/GenProds.java
@@ -7,21 +7,22 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings("rawtypes")
 public class GenProds extends DepthFirstAdapter
 {
   private MacroExpander macros;
   private ResolveAstIds ast_ids;
   private File pkgDir;
   private String pkgName;
-  private Map hiddenProds = new TypedTreeMap(
-                              StringComparator.instance,
-                              StringCast.instance,
-                              NodeCast.instance);
+//  private Map hiddenProds = new TypedTreeMap(
+//                              StringComparator.instance,
+//                              StringCast.instance,
+//                              NodeCast.instance);
 
   public GenProds(ResolveAstIds ast_ids)
   {
@@ -50,6 +51,7 @@ public class GenProds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAAstProd(AAstProd node)
   {
     String name = (String) ast_ids.ast_names.get(node);
@@ -89,7 +91,7 @@ public class GenProds extends DepthFirstAdapter
     catch(IOException e)
     {}
   }
-
+/*
   private void createAlternative(String name, String macro, String[] arg)
   {
     BufferedWriter file;
@@ -122,4 +124,5 @@ public class GenProds extends DepthFirstAdapter
     catch(IOException e)
     {}
   }
+*/
 }
diff --git a/src/org/sablecc/sablecc/GenTokens.java b/src/org/sablecc/sablecc/GenTokens.java
index dac7d0c..20edfcf 100644
--- a/src/org/sablecc/sablecc/GenTokens.java
+++ b/src/org/sablecc/sablecc/GenTokens.java
@@ -7,11 +7,13 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.io.*;
-import java.util.LinkedList;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class GenTokens extends DepthFirstAdapter
 {
   private MacroExpander macros;
@@ -49,6 +51,7 @@ public class GenTokens extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inATokenDef(ATokenDef node)
   {
     String name = (String) ids.names.get(node);
diff --git a/src/org/sablecc/sablecc/GenUtils.java b/src/org/sablecc/sablecc/GenUtils.java
index 06ea736..6ee7a32 100644
--- a/src/org/sablecc/sablecc/GenUtils.java
+++ b/src/org/sablecc/sablecc/GenUtils.java
@@ -7,10 +7,10 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 public class GenUtils extends DepthFirstAdapter
 {
@@ -59,6 +59,7 @@ public class GenUtils extends DepthFirstAdapter
   }
   */
 
+  @Override
   public void caseAAstProd(AAstProd node)
   {
     if(mainProduction == null)
@@ -67,6 +68,7 @@ public class GenUtils extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outStart(Start node)
   {
     if(mainProduction != null)
@@ -75,6 +77,7 @@ public class GenUtils extends DepthFirstAdapter
     }
 
     createEOF();
+    createInvalidToken();
     createNode();
     createToken();
     create("Switch");
@@ -150,6 +153,40 @@ public class GenUtils extends DepthFirstAdapter
     {}
   }
 
+  public void createInvalidToken()
+  {
+    BufferedWriter file;
+
+    try
+    {
+      file = new BufferedWriter(
+               new FileWriter(
+                 new File(pkgDir, "InvalidToken.java")));
+    }
+    catch(IOException e)
+    {
+      throw new RuntimeException("Unable to create " + new File(pkgDir, "InvalidToken.java").getAbsolutePath());
+    }
+
+    try
+    {
+      macros.apply(file, "InvalidToken", new String[] {pkgName,
+                                              ast_ids.astIds.pkgName.equals("") ? "analysis" : ast_ids.astIds.pkgName + ".analysis"});
+    }
+    catch(IOException e)
+    {
+      throw new RuntimeException("An error occured while writing to " +
+                                 new File(pkgDir, "InvalidToken.java").getAbsolutePath());
+    }
+
+    try
+    {
+      file.close();
+    }
+    catch(IOException e)
+    {}
+  }
+
   public void createNode()
   {
     BufferedWriter file;
diff --git a/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java b/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
index 8a532a4..8c08d5c 100644
--- a/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
+++ b/src/org/sablecc/sablecc/GenerateAlternativeCodeForParser.java
@@ -7,14 +7,13 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.io.*;
-import org.sablecc.sablecc.Grammar;
-import java.util.Vector;
-import java.util.Enumeration;
 
+ at SuppressWarnings("rawtypes")
 public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
 {
   String currentAlt;
@@ -54,6 +53,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     this.simpleTermOrsimpleListTermTypes = simpleTermOrsimpleListTermTypes;
   }
 
+  @Override
   public void inAAltTransform(AAltTransform node)
   {
     Object temp[] = node.getTerms().toArray();
@@ -96,6 +96,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAAltTransform(AAltTransform node)
   {
     Object temp[] = node.getTerms().toArray();
@@ -183,6 +184,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inASimpleTerm(ASimpleTerm node)
   {
     try
@@ -254,6 +256,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inASimpleListTerm(ASimpleListTerm node)
   {
     try
@@ -328,6 +331,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inANewTerm(ANewTerm node)
   {
     try
@@ -342,6 +346,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     inAParams(node.getParams());
   }
 
+  @Override
   public void inANewListTerm(ANewListTerm node)
   {
     try
@@ -356,6 +361,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     inAParams(node.getParams());
   }
 
+  @Override
   public void inAListTerm(AListTerm node)
   {
     try
@@ -397,6 +403,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAListTerm(AListTerm node)
   {
     try
@@ -438,6 +445,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outANewTerm(ANewTerm node)
   {
     String type_name = (String)CG.getAltTransformElemTypes().get(node);
@@ -515,6 +523,7 @@ public class GenerateAlternativeCodeForParser extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outANewListTerm(ANewListTerm node)
   {
     String type_name;
diff --git a/src/org/sablecc/sablecc/Grammar.java b/src/org/sablecc/sablecc/Grammar.java
index 77d121b..91ed180 100644
--- a/src/org/sablecc/sablecc/Grammar.java
+++ b/src/org/sablecc/sablecc/Grammar.java
@@ -7,9 +7,9 @@
 
 package org.sablecc.sablecc;
 
-import java.util.Vector;
 import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public final class Grammar
 {
   private static TreeMap fastLr0Closure = new TreeMap();
@@ -381,7 +381,7 @@ public final class Grammar
   static void computeFollow()
   {
     // Get terminals, nonterminals and productions
-    Symbol[] terminals = Symbol.terminals();
+//    Symbol[] terminals = Symbol.terminals();
     Symbol[] nonterminals = Symbol.nonterminals();
     Production[] productions = Production.productions();
 
@@ -658,7 +658,7 @@ public final class Grammar
   static LR0ItemSet GOTO(LR0ItemSet set
                            , Symbol symbol)
   {
-    LR0ItemSet initialset = set
+//    LR0ItemSet initialset = set
                               ;
     set
       = CLOSURE(set
diff --git a/src/org/sablecc/sablecc/In_Production.java b/src/org/sablecc/sablecc/In_Production.java
index 79aedb3..c491dd9 100644
--- a/src/org/sablecc/sablecc/In_Production.java
+++ b/src/org/sablecc/sablecc/In_Production.java
@@ -8,9 +8,11 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class In_Production
 {
   private String name;
@@ -124,11 +126,13 @@ public class In_Production
         PTerm tmpTerm = (PTerm)list.get(i);
         tmpTerm.apply(new DepthFirstAdapter()
                       {
+                        @Override
                         public void caseASimpleListTerm(ASimpleListTerm node)
                         {
                           node.setId( new TId(newElemName + "#" + node.getId().getText(), node.getId().getLine(), node.getId().getPos()) );
                         }
 
+                        @Override
                         public void caseASimpleTerm(ASimpleTerm node)
                         {
                           node.setId( new TId(newElemName + "#" + node.getId().getText(), node.getId().getLine(), node.getId().getPos()) );
diff --git a/src/org/sablecc/sablecc/Inlining.java b/src/org/sablecc/sablecc/Inlining.java
index ae8979d..e68d971 100644
--- a/src/org/sablecc/sablecc/Inlining.java
+++ b/src/org/sablecc/sablecc/Inlining.java
@@ -17,9 +17,11 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class Inlining
 {
   public static HashSet productionsToBeRemoved =
@@ -53,6 +55,7 @@ public class Inlining
     {
       ((PAlt)alts[i]).apply( new DepthFirstAdapter()
                              {
+                               @Override
                                public void caseAElem(AElem node)
                                {
                                  String elem_name = node.getId().getText();
@@ -95,7 +98,12 @@ public class Inlining
       }
       return false;
       /**************************************************************************/
-      listOfAlts = (LinkedList)removeAlternativeDoubloonsFromInlinedProduction(listOfAlts);
+
+      // Etienne: Removing duplicate alternatives modifies the grammar; it could
+      // hide grammar ambiguities.
+      //
+      // So, I commented out the following line of code:
+      // listOfAlts = (LinkedList)removeAlternativeDoubloonsFromInlinedProduction(listOfAlts);
 
       //list of productions whose inlining was a success.
       productionsToBeRemoved.add("P" + ResolveIds.name(prod_to_inline.getName()));
@@ -258,6 +266,7 @@ public class Inlining
 
         aAltTransform.apply(new DepthFirstAdapter()
                             {
+                              @Override
                               public void caseASimpleTerm(ASimpleTerm node)
                               {
                                 if(node.getId().getText().equals(alt_elem_info)  &&
@@ -282,6 +291,7 @@ public class Inlining
                                 }
                               }
 
+                              @Override
                               public void caseASimpleListTerm(final ASimpleListTerm node_)
                               {
                                 if(node_.getId().getText().equals(alt_elem_info)  &&
@@ -307,6 +317,7 @@ public class Inlining
                                     {
                                       term.apply(new DepthFirstAdapter()
                                                  {
+                                                   @Override
                                                    public void caseANewTerm(ANewTerm node)
                                                    {
                                                      node_.replaceBy( new ANewListTerm(   (AProdName)node.getProdName().clone(),
@@ -316,6 +327,7 @@ public class Inlining
                                                                     );
                                                    }
 
+                                                   @Override
                                                    public void caseASimpleTerm(ASimpleTerm node)
                                                    {
                                                      PSpecifier specifier = null;
@@ -335,11 +347,13 @@ public class Inlining
                                                                     );
                                                    }
 
-                                                   public void caseNullTerm(ANullTerm node)
+                                                   @Override
+                                                   public void caseANullTerm(ANullTerm node)
                                                    {
                                                      node_.replaceBy( null );
                                                    }
 
+                                                   @Override
                                                    public void caseAListTerm(AListTerm node)
                                                    {
                                                      AListTerm parent = (AListTerm)node_.parent();
@@ -428,7 +442,7 @@ public class Inlining
     }
 
     LinkedList list = new LinkedList();
-    int elemPosition = 1;
+//    int elemPosition = 1;
 
     //Before the inlined element (old alternative elements)
     for(int i=0; i<position; i++)
@@ -473,6 +487,7 @@ public class Inlining
   {
     tmpaAltTransform.apply(new DepthFirstAdapter()
                            {
+                             @Override
                              public void caseASimpleTerm(ASimpleTerm node)
                              {
                                if(mapOldNameNewNames.get(node.getId().getText()) != null)
@@ -481,6 +496,7 @@ public class Inlining
                                }
                              }
 
+                             @Override
                              public void caseASimpleListTerm(ASimpleListTerm node)
                              {
                                if(mapOldNameNewNames.get(node.getId().getText()) != null)
diff --git a/src/org/sablecc/sablecc/IntSet.java b/src/org/sablecc/sablecc/IntSet.java
index 2c44fd3..fa3ba06 100644
--- a/src/org/sablecc/sablecc/IntSet.java
+++ b/src/org/sablecc/sablecc/IntSet.java
@@ -81,11 +81,13 @@ public class IntSet
     elements = new int[0];
   }
 
+  @Override
   public Object clone()
   {
     return new IntSet(this);
   }
 
+  @Override
   public boolean equals(Object  obj)
   {
     if(obj == null)
@@ -144,6 +146,7 @@ public class IntSet
     return false;
   }
 
+  @Override
   public int hashCode()
   {
     int result = 0;
@@ -295,6 +298,7 @@ public class IntSet
     return elements[elements.length - 1] + 1;
   }
 
+  @Override
   public String toString()
   {
     StringBuffer s = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/IntegerCast.java b/src/org/sablecc/sablecc/IntegerCast.java
index a05df2d..ee396c6 100644
--- a/src/org/sablecc/sablecc/IntegerCast.java
+++ b/src/org/sablecc/sablecc/IntegerCast.java
@@ -7,7 +7,6 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 
 public class IntegerCast implements Cast
 {
@@ -16,6 +15,7 @@ public class IntegerCast implements Cast
   private IntegerCast()
   {}
 
+  @Override
   public  Object cast(Object o)
   {
     return (Integer) o;
diff --git a/src/org/sablecc/sablecc/IntegerComparator.java b/src/org/sablecc/sablecc/IntegerComparator.java
index ca5e9a2..e3fb5f2 100644
--- a/src/org/sablecc/sablecc/IntegerComparator.java
+++ b/src/org/sablecc/sablecc/IntegerComparator.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings("rawtypes")
 public class IntegerComparator implements Comparator
 {
   public final static IntegerComparator instance = new IntegerComparator();
@@ -16,6 +17,7 @@ public class IntegerComparator implements Comparator
   private IntegerComparator()
   {}
 
+  @Override
   public int compare(Object o1, Object o2)
   {
     return ((Integer) o1).intValue() - ((Integer) o2).intValue();
diff --git a/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java b/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
index 2cd0a92..5e8bca6 100644
--- a/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
+++ b/src/org/sablecc/sablecc/InternalTransformationsToGrammar.java
@@ -16,10 +16,11 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class InternalTransformationsToGrammar extends DepthFirstAdapter
 {
 
@@ -27,10 +28,10 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
   private ResolveAltIds altIds;
   private ResolveTransformIds transformIds;
   private String currentProd;
-  private int currentAlt;
+//  private int currentAlt;
   private String currentAltName;
   private boolean processingAst;
-  private boolean processingProdTransform;
+//  private boolean processingProdTransform;
 
   static final int NONE = 0;
   static final int STAR = 1;
@@ -69,6 +70,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
     this.simpleTermOrsimpleListTermTypes = simpleTermOrsimpleListTermTypes;
   }
 
+  @Override
   public void inAProductions(AProductions node)
   {
     listProd = node.getProds();
@@ -76,16 +78,19 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
   private LinkedList listOfAlts;
 
+  @Override
   public void inAAst(AAst node)
   {
     processingAst = true;
   }
 
+  @Override
   public void outAAst(AAst node)
   {
     processingAst = false;
   }
 
+  @Override
   public void caseAProd(AProd node)
   {
     currentProd = (String) ids.names.get(node);
@@ -109,6 +114,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
   LinkedList listOfAlternativeElemsWHaveName;
 
+  @Override
   public void caseAAlt(AAlt node)
   {
     count = 1;
@@ -120,23 +126,27 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
     node.apply(new DepthFirstAdapter()
                {
+                 @Override
                  public void inAElem(AElem node)
                  {
                    InternalTransformationsToGrammar.this.setOut(node, new Integer(NONE));
                  }
 
+                 @Override
                  public void caseAStarUnOp(AStarUnOp node)
                  {
                    count *= 2;
                    InternalTransformationsToGrammar.this.setOut(node.parent(), new Integer(STAR));
                  }
 
+                 @Override
                  public void caseAQMarkUnOp(AQMarkUnOp node)
                  {
                    count *= 2;
                    InternalTransformationsToGrammar.this.setOut(node.parent(), new Integer(QMARK));
                  }
 
+                 @Override
                  public void caseAPlusUnOp(APlusUnOp node)
                  {
                    InternalTransformationsToGrammar.this.setOut(node.parent(), new Integer(PLUS));
@@ -253,7 +263,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
         aParsedAlt = new AAlt(new TId(currentAltName.toLowerCase()+(count + 1)), listElems, altTransform);
 
         String currentAltInlining;
-        currentAltInlining = "A" + ids.name(aParsedAlt.getAltName().getText()) + currentProd;
+        currentAltInlining = "A" + ResolveIds.name(aParsedAlt.getAltName().getText()) + currentProd;
         ids.names.put(aParsedAlt, currentAltInlining);
 
         listOfAlts.add(aParsedAlt);
@@ -264,6 +274,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
   LinkedList checkCreationOfXElem = new TypedLinkedList(StringCast.instance);
 
   //It's also available for Ignored alternatives
+  @Override
   public void caseAElem(AElem node)
   {
     if(!processingAst)
@@ -307,11 +318,11 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
           aElem = new AElem(aElemName, specifier, new TId(elemName), null);
           if(elemNameOfElem != null)
           {
-            ids.names.put(aElem, ids.name(elemNameOfElem));
+            ids.names.put(aElem, ResolveIds.name(elemNameOfElem));
           }
           else
           {
-            ids.names.put(aElem, ids.name(elemName));
+            ids.names.put(aElem, ResolveIds.name(elemName));
           }
           ok = true;
         }
@@ -336,11 +347,11 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
             if(elemNameOfElem != null)
             {
-              ids.names.put(aElem, ids.name(elemNameOfElem));
+              ids.names.put(aElem, ResolveIds.name(elemNameOfElem));
             }
             else
             {
-              ids.names.put(aElem, ids.name(elemName));
+              ids.names.put(aElem, ResolveIds.name(elemName));
             }
 
             ok = true;
@@ -358,11 +369,11 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
             if(elemNameOfElem != null)
             {
-              ids.names.put(aElem, ids.name(elemNameOfElem));
+              ids.names.put(aElem, ResolveIds.name(elemNameOfElem));
             }
             else
             {
-              ids.names.put(aElem, ids.name(elemName));
+              ids.names.put(aElem, ResolveIds.name(elemName));
             }
 
             ok = true;
@@ -388,11 +399,11 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
           if(elemNameOfElem != null)
           {
-            ids.names.put(aElem, ids.name(elemNameOfElem));
+            ids.names.put(aElem, ResolveIds.name(elemNameOfElem));
           }
           else
           {
-            ids.names.put(aElem, ids.name(elemName));
+            ids.names.put(aElem, ResolveIds.name(elemName));
           }
 
           ok = true;
@@ -477,7 +488,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
     //That means elem is token type
     else
     {
-      String name_resolved = ids.name(name);
+//      String name_resolved = ResolveIds.name(name);
 
       LinkedList elemsProdTransform = new LinkedList();
       elemsProdTransform.add( new AElem( null, new ATokenSpecifier(), new TId(rname), new AStarUnOp() ) );
@@ -491,6 +502,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
     {
       temp_listProdTransform[i].apply( new DepthFirstAdapter()
                                        {
+                                         @Override
                                          public void caseAElem(AElem node)
                                          {
                                            //The production transformation needs to have a star operator.
@@ -517,6 +529,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
     {
       prodTransformElems[i].apply(new AnalysisAdapter()
                                   {
+                                    @Override
                                     public void caseAElem(AElem node)
                                     {
                                       String tmpNodeName = ( (node.getElemName() == null) ? node.getId().getText() :
@@ -557,7 +570,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
     //creation of the first alternative
     AAlt aParsedAlt = new AAlt(new TId("terminal"), elems, aAltTransform);
-    String terminal_altName = "ATerminal" + ids.name(name);
+//    String terminal_altName = "ATerminal" + ResolveIds.name(name);
 
     listOfAltsXelem.add(aParsedAlt);
 
@@ -570,6 +583,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
     {
       prodTransformElems[i].apply(new AnalysisAdapter()
                                   {
+                                    @Override
                                     public void caseAElem(AElem node)
                                     {
                                       String tmpNodeName = ( (node.getElemName() == null) ? node.getId().getText() :
@@ -619,7 +633,7 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
 
     aParsedAlt = new AAlt(new TId("non_terminal"), elems, aAltTransform);
 
-    String nonTerminal_altName = "ANonTerminal" + ids.name(name);
+//    String nonTerminal_altName = "ANonTerminal" + ResolveIds.name(name);
 
     listOfAltsXelem.add(aParsedAlt);
 
@@ -640,10 +654,10 @@ public class InternalTransformationsToGrammar extends DepthFirstAdapter
     }
     return clone;
   }
-
+/*
   private String xproductionType(String name)
   {
     return "P$" + name.substring(1).toLowerCase();
   }
-
+*/
 }
diff --git a/src/org/sablecc/sablecc/LICENSE b/src/org/sablecc/sablecc/LICENSE
index 283bc3c..18cb911 100644
--- a/src/org/sablecc/sablecc/LICENSE
+++ b/src/org/sablecc/sablecc/LICENSE
@@ -1,5 +1,5 @@
 SableCC, an object-oriented compiler framework.
-Copyright (C) 1997-2003 Etienne M. Gagnon <etienne.gagnon at uqam.ca> and
+Copyright (C) 1997-2012 Etienne M. Gagnon <egagnon at j-meg.com> and
 others.  All rights reserved.
 
 See the file "AUTHORS" for the name of all copyright holders.
diff --git a/src/org/sablecc/sablecc/LR0Collection.java b/src/org/sablecc/sablecc/LR0Collection.java
index 2dca7cd..a94f5d5 100644
--- a/src/org/sablecc/sablecc/LR0Collection.java
+++ b/src/org/sablecc/sablecc/LR0Collection.java
@@ -8,8 +8,8 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Vector;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class LR0Collection
 {
   private final Vector sets = new Vector(0);
@@ -113,6 +113,7 @@ final class LR0Collection
                                               )).get(symbol);
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/LR0Item.java b/src/org/sablecc/sablecc/LR0Item.java
index a6f973b..1250b21 100644
--- a/src/org/sablecc/sablecc/LR0Item.java
+++ b/src/org/sablecc/sablecc/LR0Item.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings("rawtypes")
 final class LR0Item implements Cloneable, Comparable
 {
   final int production;
@@ -20,6 +21,7 @@ final class LR0Item implements Cloneable, Comparable
     this.position = position;
   }
 
+  @Override
   public int compareTo(Object object)
   {
     LR0Item item = (LR0Item) object;
@@ -34,11 +36,13 @@ final class LR0Item implements Cloneable, Comparable
     return result;
   }
 
+  @Override
   public Object clone()
   {
     return new LR0Item(production, position);
   }
 
+  @Override
   public boolean equals(Object obj)
   {
     if((obj == null) ||
@@ -53,11 +57,13 @@ final class LR0Item implements Cloneable, Comparable
            (item.position == position);
   }
 
+  @Override
   public int hashCode()
   {
     return (production * 13) ^ (position * 17);
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/LR0ItemSet.java b/src/org/sablecc/sablecc/LR0ItemSet.java
index d2ca512..30c1b9a 100644
--- a/src/org/sablecc/sablecc/LR0ItemSet.java
+++ b/src/org/sablecc/sablecc/LR0ItemSet.java
@@ -9,8 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
-import java.util.Vector;
-
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class LR0ItemSet implements Cloneable, Comparable
 {
   private final TreeMap items;
@@ -70,6 +69,7 @@ final class LR0ItemSet implements Cloneable, Comparable
     return items_;
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
@@ -106,11 +106,13 @@ final class LR0ItemSet implements Cloneable, Comparable
     return result.toString();
   }
 
+  @Override
   public Object clone()
   {
     return new LR0ItemSet(this);
   }
 
+  @Override
   public boolean equals(Object obj)
   {
     if((obj == null) ||
@@ -138,11 +140,13 @@ final class LR0ItemSet implements Cloneable, Comparable
     return true;
   }
 
+  @Override
   public int hashCode()
   {
     return hashCode;
   }
 
+  @Override
   public int compareTo(Object object)
   {
     LR0ItemSet set
diff --git a/src/org/sablecc/sablecc/LR1Collection.java b/src/org/sablecc/sablecc/LR1Collection.java
index cca9246..1e5a744 100644
--- a/src/org/sablecc/sablecc/LR1Collection.java
+++ b/src/org/sablecc/sablecc/LR1Collection.java
@@ -7,10 +7,9 @@
 
 package org.sablecc.sablecc;
 
-import java.util.Vector;
-import java.util.Enumeration;
 import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class LR1Collection
 {
   final LR0Collection collection;
@@ -156,6 +155,7 @@ final class LR1Collection
     System.out.println();
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/LR1Item.java b/src/org/sablecc/sablecc/LR1Item.java
index 9aadae7..e6492c3 100644
--- a/src/org/sablecc/sablecc/LR1Item.java
+++ b/src/org/sablecc/sablecc/LR1Item.java
@@ -7,8 +7,8 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 
+ at SuppressWarnings("rawtypes")
 final class LR1Item implements Cloneable, Comparable
 {
   final LR0Item lr0Item;
@@ -20,11 +20,13 @@ final class LR1Item implements Cloneable, Comparable
     this.terminal = terminal;
   }
 
+  @Override
   public Object clone()
   {
     return new LR1Item(lr0Item, terminal);
   }
 
+  @Override
   public boolean equals(Object obj)
   {
     if((obj == null) ||
@@ -39,11 +41,13 @@ final class LR1Item implements Cloneable, Comparable
            (item.terminal == terminal);
   }
 
+  @Override
   public int hashCode()
   {
     return lr0Item.hashCode() * (terminal + 1) * 37;
   }
 
+  @Override
   public String toString()
   {
     return lr0Item + ":" + Symbol.symbol(terminal, true);
@@ -83,6 +87,7 @@ final class LR1Item implements Cloneable, Comparable
     }
   }
 
+  @Override
   public int compareTo(Object object)
   {
     LR1Item item = (LR1Item) object;
diff --git a/src/org/sablecc/sablecc/LR1ItemSet.java b/src/org/sablecc/sablecc/LR1ItemSet.java
index ba7114d..6532797 100644
--- a/src/org/sablecc/sablecc/LR1ItemSet.java
+++ b/src/org/sablecc/sablecc/LR1ItemSet.java
@@ -8,8 +8,8 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Vector;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class LR1ItemSet implements Cloneable, Comparable
 {
   private final TreeMap items;
@@ -70,6 +70,7 @@ final class LR1ItemSet implements Cloneable, Comparable
     return items_;
   }
 
+  @Override
   public String toString()
   {
     String nl = System.getProperty("line.separator");
@@ -160,11 +161,13 @@ final class LR1ItemSet implements Cloneable, Comparable
     return result.toString();
   }
 
+  @Override
   public Object clone()
   {
     return new LR1ItemSet(this);
   }
 
+  @Override
   public boolean equals(Object obj)
   {
     if((obj == null) ||
@@ -192,11 +195,13 @@ final class LR1ItemSet implements Cloneable, Comparable
     return true;
   }
 
+  @Override
   public int hashCode()
   {
     return hashCode;
   }
 
+  @Override
   public int compareTo(Object object)
   {
     LR1ItemSet set
diff --git a/src/org/sablecc/sablecc/ListCast.java b/src/org/sablecc/sablecc/ListCast.java
index f66bd6d..564bb59 100644
--- a/src/org/sablecc/sablecc/ListCast.java
+++ b/src/org/sablecc/sablecc/ListCast.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings("rawtypes")
 public class ListCast implements Cast
 {
   public final static ListCast instance = new ListCast();
@@ -16,6 +17,7 @@ public class ListCast implements Cast
   private ListCast()
   {}
 
+  @Override
   public Object cast(Object o)
   {
     return (List) o;
diff --git a/src/org/sablecc/sablecc/MacroExpander.java b/src/org/sablecc/sablecc/MacroExpander.java
index 1cc8b66..ee2ca88 100644
--- a/src/org/sablecc/sablecc/MacroExpander.java
+++ b/src/org/sablecc/sablecc/MacroExpander.java
@@ -10,10 +10,11 @@ package org.sablecc.sablecc;
 import java.io.*;
 import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class MacroExpander
 {
   private static final String MACRO = "Macro:";
-  private static final String lineSeparator = System.getProperty("line.separator");
+//  private static final String lineSeparator = System.getProperty("line.separator");
 
   private Map macros = new TypedTreeMap(
                          StringComparator.instance,
@@ -57,6 +58,7 @@ public class MacroExpander
     return false;
   }
 
+  @Override
   public String toString()
   {
     return this.getClass().getName() + macros;
diff --git a/src/org/sablecc/sablecc/NFA.java b/src/org/sablecc/sablecc/NFA.java
index 8de83cf..e623a56 100644
--- a/src/org/sablecc/sablecc/NFA.java
+++ b/src/org/sablecc/sablecc/NFA.java
@@ -7,7 +7,6 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 
 public class NFA implements Cloneable
 {
@@ -269,11 +268,13 @@ public class NFA implements Cloneable
     return nfa;
   }
 
+  @Override
   public Object clone()
   {
     return new NFA(this);
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
@@ -311,6 +312,7 @@ public class NFA implements Cloneable
       }
     }
 
+    @Override
     public String toString()
     {
       StringBuffer result = new StringBuffer();
@@ -347,6 +349,7 @@ public class NFA implements Cloneable
       destination = transition.destination;
     }
 
+    @Override
     public String toString()
     {
       return destination + ":{" + chars + "}";
diff --git a/src/org/sablecc/sablecc/NoCast.java b/src/org/sablecc/sablecc/NoCast.java
index 0198130..10de4c1 100644
--- a/src/org/sablecc/sablecc/NoCast.java
+++ b/src/org/sablecc/sablecc/NoCast.java
@@ -14,6 +14,7 @@ public class NoCast implements Cast
   private NoCast()
   {}
 
+  @Override
   public Object cast(Object o)
   {
     return o;
diff --git a/src/org/sablecc/sablecc/NodeCast.java b/src/org/sablecc/sablecc/NodeCast.java
index 202c84b..027de9d 100644
--- a/src/org/sablecc/sablecc/NodeCast.java
+++ b/src/org/sablecc/sablecc/NodeCast.java
@@ -7,7 +7,6 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 import org.sablecc.sablecc.node.*;
 
 public class NodeCast implements Cast
@@ -17,6 +16,7 @@ public class NodeCast implements Cast
   private NodeCast()
   {}
 
+  @Override
   public Object cast(Object o)
   {
     return (Node) o;
diff --git a/src/org/sablecc/sablecc/PrettyPrinter.java b/src/org/sablecc/sablecc/PrettyPrinter.java
index 43eb5cf..81e4f12 100644
--- a/src/org/sablecc/sablecc/PrettyPrinter.java
+++ b/src/org/sablecc/sablecc/PrettyPrinter.java
@@ -7,7 +7,6 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
@@ -18,6 +17,7 @@ public class PrettyPrinter extends DepthFirstAdapter
   public static String alternative_INDENT = "     " ;
   public static String alt_transform_INDENT = "         " ;
 
+  @Override
   public void caseAProductions(AProductions node)
   {
     System.err.println("Productions \n");
@@ -29,6 +29,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAProd(AProd node)
   {
     System.err.print(production_INDENT + node.getId().getText());
@@ -67,6 +68,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.println("\n" + alternative_INDENT + ";\n");
   }
 
+  @Override
   public void caseAAlt(AAlt node)
   {
     System.err.print("\n" + alternative_INDENT);
@@ -90,6 +92,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAltTransform(AAltTransform node)
   {
     System.err.print("\n" + alt_transform_INDENT + "{-> ");
@@ -104,6 +107,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.print(" }  ");
   }
 
+  @Override
   public void caseAProdName(AProdName node)
   {
     System.err.print(node.getId().getText());
@@ -113,6 +117,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseANewTerm(ANewTerm node)
   {
     System.err.print("New ");
@@ -132,6 +137,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.print(" )");
   }
 
+  @Override
   public void caseAListTerm(AListTerm node)
   {
     System.err.print("[ ");
@@ -144,6 +150,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.print(" ]");
   }
 
+  @Override
   public void caseASimpleTerm(ASimpleTerm node)
   {
     if(node.getSpecifier() != null)
@@ -165,11 +172,13 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.print(" ");
   }
 
+  @Override
   public void caseANullTerm(ANullTerm node)
   {
     System.err.print("Null ");
   }
 
+  @Override
   public void caseANewListTerm(ANewListTerm node)
   {
     System.err.print("New ");
@@ -189,6 +198,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.print(" )");
   }
 
+  @Override
   public void caseASimpleListTerm(ASimpleListTerm node)
   {
     if(node.getSpecifier() != null)
@@ -210,6 +220,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.print(" ");
   }
 
+  @Override
   public void caseAAst(AAst node)
   {
     System.err.print("Abstract Syntax Tree\n");
@@ -222,6 +233,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAstProd(AAstProd node)
   {
     System.err.println(production_INDENT + node.getId().getText() + " =");
@@ -237,6 +249,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     System.err.println("\n" + alternative_INDENT + ";\n");
   }
 
+  @Override
   public void caseAAstAlt(AAstAlt node)
   {
     System.err.print(alternative_INDENT);
@@ -255,6 +268,7 @@ public class PrettyPrinter extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAElem(AElem node)
   {
     if(node.getElemName() != null)
@@ -279,16 +293,19 @@ public class PrettyPrinter extends DepthFirstAdapter
     {
       node.getUnOp().apply(new DepthFirstAdapter()
                            {
+                             @Override
                              public void caseAStarUnOp(AStarUnOp node)
                              {
                                System.err.print("*");
                              }
 
+                             @Override
                              public void caseAQMarkUnOp(AQMarkUnOp node)
                              {
                                System.err.print("?");
                              }
 
+                             @Override
                              public void caseAPlusUnOp(APlusUnOp node)
                              {
                                System.err.print("+");
diff --git a/src/org/sablecc/sablecc/Production.java b/src/org/sablecc/sablecc/Production.java
index 9fb1cc1..5fba204 100644
--- a/src/org/sablecc/sablecc/Production.java
+++ b/src/org/sablecc/sablecc/Production.java
@@ -8,9 +8,8 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Vector;
-import java.util.Enumeration;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class Production
 {
   final int leftside;
@@ -128,6 +127,7 @@ final class Production
     return productions_;
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/RecursiveProductionsDetections.java b/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
index c29276e..8c47b82 100644
--- a/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
+++ b/src/org/sablecc/sablecc/RecursiveProductionsDetections.java
@@ -8,14 +8,17 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class RecursiveProductionsDetections extends DepthFirstAdapter
 {
   public LinkedList listOfRecursiveProds = new TypedLinkedList(StringCast.instance);
   private String currentProd;
 
+  @Override
   public void caseAProd(AProd node)
   {
     currentProd = node.getId().getText();
@@ -34,6 +37,7 @@ public class RecursiveProductionsDetections extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAlt(AAlt node)
   {
     Object temp[] = node.getElems().toArray();
@@ -53,6 +57,7 @@ public class RecursiveProductionsDetections extends DepthFirstAdapter
   }
   */
 
+  @Override
   public void caseAElem(AElem node)
   {
     if(node.getId().getText().equals(currentProd))
diff --git a/src/org/sablecc/sablecc/ResolveAltIds.java b/src/org/sablecc/sablecc/ResolveAltIds.java
index e6f42f0..a9a5ce6 100644
--- a/src/org/sablecc/sablecc/ResolveAltIds.java
+++ b/src/org/sablecc/sablecc/ResolveAltIds.java
@@ -17,10 +17,10 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * ResolveAltIds
@@ -30,6 +30,7 @@ import java.io.*;
  * section.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ResolveAltIds extends DepthFirstAdapter
 {
   public ResolveIds ids;
@@ -81,9 +82,10 @@ public class ResolveAltIds extends DepthFirstAdapter
    * list of productions transformations elements
    */
 
+  @Override
   public void caseAProd(AProd node)
   {
-    AElem []temp = (AElem[]) node.getProdTransform().toArray(new AElem[0]);
+//    AElem []temp = (AElem[]) node.getProdTransform().toArray(new AElem[0]);
 
     Object []list_alts = node.getAlts().toArray();
     for(int j=0; j<list_alts.length; j++)
@@ -96,6 +98,7 @@ public class ResolveAltIds extends DepthFirstAdapter
    * Here, a map which associate the current alternative with the list of elems
    * is created.
    */
+  @Override
   public void caseAAlt(AAlt alt)
   {
     //contains all the elements in the alternative, no matter if they are list or not
@@ -120,6 +123,7 @@ public class ResolveAltIds extends DepthFirstAdapter
     alts_elems_list.put(currentAlt, listElemslist);
   }
 
+  @Override
   public void caseAElem(final AElem elem)
   {
     blist = false;
@@ -144,9 +148,11 @@ public class ResolveAltIds extends DepthFirstAdapter
 
   //This method is overriding in order to not allow ASt traversal to visit
   //AST elements.
+  @Override
   public void caseAAst(AAst node)
   {}
 
+  @Override
   public String toString()
   {
     StringBuffer s = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/ResolveAstIds.java b/src/org/sablecc/sablecc/ResolveAstIds.java
index a0613df..8ad52f0 100644
--- a/src/org/sablecc/sablecc/ResolveAstIds.java
+++ b/src/org/sablecc/sablecc/ResolveAstIds.java
@@ -7,10 +7,10 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * ResolveAstIds
@@ -32,6 +32,7 @@ import java.io.*;
  *
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ResolveAstIds extends DepthFirstAdapter
 {
   //Map of AST productions. The AST production node can be obtained
@@ -78,19 +79,21 @@ public class ResolveAstIds extends DepthFirstAdapter
     return firstAstProduction;
   }
 
+  @Override
   public void inAAst(AAst node)
   {
     LinkedList listProds = node.getProds();
     if(listProds.size() > 0)
     {
       AAstProd firstAstProd = (AAstProd)listProds.getFirst();
-      firstAstProduction = "P" + astIds.name(firstAstProd.getId().getText());
+      firstAstProduction = "P" + ResolveIds.name(firstAstProd.getId().getText());
     }
   }
 
+  @Override
   public void inAAstProd(AAstProd node)
   {
-    currentProd = astIds.name(node.getId().getText());
+    currentProd = ResolveIds.name(node.getId().getText());
 
     String name = "P" + currentProd;
 
@@ -101,13 +104,14 @@ public class ResolveAstIds extends DepthFirstAdapter
     ast_names.put(node, name);
   }
 
+  @Override
   public void inAAstAlt(final AAstAlt alt)
   {
     if(alt.getAltName() != null)
     {
       currentAlt =
         "A" +
-        astIds.name(alt.getAltName().getText()) +
+        ResolveIds.name(alt.getAltName().getText()) +
         currentProd;
 
       if(ast_alts.put(currentAlt, alt) != null)
@@ -129,9 +133,11 @@ public class ResolveAstIds extends DepthFirstAdapter
   }
 
   //Only Abstract Syntax Tree section is concerned by the visitor here.
+  @Override
   public void caseAProductions(AProductions node)
   {}
 
+  @Override
   public void caseAElem(final AElem elem)
   {
     String name;
@@ -147,7 +153,7 @@ public class ResolveAstIds extends DepthFirstAdapter
     }
 
     elem_name = tid.getText();
-    name = currentAlt + "." + astIds.name(elem_name);
+    name = currentAlt + "." + ResolveIds.name(elem_name);
 
     if(ast_elems.put(name, elem) != null)
     {
@@ -159,16 +165,18 @@ public class ResolveAstIds extends DepthFirstAdapter
       error5(tid);
     }
 
-    ast_names.put(elem, astIds.name(elem_name));
+    ast_names.put(elem, ResolveIds.name(elem_name));
   }
 
+  @Override
   public void outAAstProd(AAstProd prod)
   {
     prod.apply(new DepthFirstAdapter()
                {
+                 @Override
                  public void caseAElem(AElem node)
                  {
-                   String name = astIds.name(node.getId().getText());
+                   String name = ResolveIds.name(node.getId().getText());
 
                    if(node.getSpecifier() != null)
                    {
@@ -199,13 +207,15 @@ public class ResolveAstIds extends DepthFirstAdapter
               );
   }
 
+  @Override
   public void outAAst(AAst prod)
   {
     prod.apply(new DepthFirstAdapter()
                {
+                 @Override
                  public void caseAElem(AElem node)
                  {
-                   String name = astIds.name(node.getId().getText());
+                   String name = ResolveIds.name(node.getId().getText());
 
                    if(node.getSpecifier() != null)
                    {
@@ -324,6 +334,7 @@ public class ResolveAstIds extends DepthFirstAdapter
       "class is an invalid element name.");
   }
 
+  @Override
   public String toString()
   {
     StringBuffer s = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/ResolveIds.java b/src/org/sablecc/sablecc/ResolveIds.java
index cfc4256..1a79fa2 100644
--- a/src/org/sablecc/sablecc/ResolveIds.java
+++ b/src/org/sablecc/sablecc/ResolveIds.java
@@ -7,11 +7,13 @@
 
 package org.sablecc.sablecc;
 
+import java.io.*;
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ResolveIds extends DepthFirstAdapter
 {
   public final Map helpers = new TypedTreeMap(
@@ -73,8 +75,8 @@ public class ResolveIds extends DepthFirstAdapter
   public File pkgDir;
   public String pkgName = "";
 
-  private boolean processingStates;
-  private boolean processingIgnTokens;
+//  private boolean processingStates;
+//  private boolean processingIgnTokens;
 
   String currentProd;
   String currentAlt;
@@ -86,6 +88,7 @@ public class ResolveIds extends DepthFirstAdapter
     pkgDir = currentDir;
   }
 
+  @Override
   public void inAGrammar(AGrammar node)
   {
     TPkgId[] temp = (TPkgId []) node.getPackage().toArray(new TPkgId[0]);
@@ -110,6 +113,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAProd(AProd node)
   {
     //inAProd code.
@@ -131,6 +135,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAIdBasic(AIdBasic node)
   {
     String name = node.getId().getText();
@@ -142,6 +147,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAHelperDef(AHelperDef node)
   {
     String name = node.getId().getText();
@@ -156,6 +162,7 @@ public class ResolveIds extends DepthFirstAdapter
     names.put(node, name);
   }
 
+  @Override
   public void outATokenDef(ATokenDef node)
   {
     String name = "T" + name(node.getId().getText());
@@ -180,6 +187,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAStates(AStates node)
   {
     Object [] list_id = (Object[]) node.getListId().toArray();
@@ -199,6 +207,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inAIgnTokens(AIgnTokens node)
   {
     Object [] list_id = (Object[]) node.getListId().toArray();
@@ -223,6 +232,7 @@ public class ResolveIds extends DepthFirstAdapter
 
   private Map stateMap;
 
+  @Override
   public void inAStateList(AStateList node)
   {
     stateMap = new TypedTreeMap(
@@ -243,11 +253,13 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAStateList(AStateList node)
   {
     stateMap = null;
   }
 
+  @Override
   public void inAStateListTail(AStateListTail node)
   {
     String name = node.getId().getText().toUpperCase();
@@ -263,6 +275,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inATransition(ATransition node)
   {
     String name = node.getId().getText().toUpperCase();
@@ -273,6 +286,7 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAlt(final AAlt alt)
   {
     if(alt.getAltName() != null)
@@ -319,9 +333,11 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseAAst(AAst node)
   {}
 
+  @Override
   public void caseAElem(final AElem elem)
   {
     if(elem.getElemName() != null)
@@ -360,10 +376,12 @@ public class ResolveIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAProductions(AProductions prod)
   {
     prod.apply(new DepthFirstAdapter()
                {
+                 @Override
                  public void caseAProd(AProd node)
                  {
                    //inAProd code.
@@ -377,6 +395,7 @@ public class ResolveIds extends DepthFirstAdapter
                    }
                  }
 
+                 @Override
                  public void caseAAlt(final AAlt alt)
                  {
                    if(alt.getAltName() != null)
@@ -395,6 +414,7 @@ public class ResolveIds extends DepthFirstAdapter
                    }
                  }
 
+                 @Override
                  public void caseAElem(AElem node)
                  {
                    String name = name(node.getId().getText());
@@ -627,6 +647,7 @@ public class ResolveIds extends DepthFirstAdapter
       "class is an invalid element name.");
   }
 
+  @Override
   public String toString()
   {
     StringBuffer s = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/ResolveProdTransformIds.java b/src/org/sablecc/sablecc/ResolveProdTransformIds.java
index ab242d1..1760575 100644
--- a/src/org/sablecc/sablecc/ResolveProdTransformIds.java
+++ b/src/org/sablecc/sablecc/ResolveProdTransformIds.java
@@ -7,10 +7,10 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * ResolveProdTransformIds
@@ -21,6 +21,7 @@ import java.io.*;
  * are defined as production in the section Abstract Syntax Tree.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ResolveProdTransformIds extends DepthFirstAdapter
 {
   private ResolveAstIds transformIds;
@@ -61,6 +62,7 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
     transformIds = ids;
   }
 
+  @Override
   public void caseAProd(final AProd production)
   {
     prod_name = (String)transformIds.astIds.names.get(production);
@@ -81,6 +83,7 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
     {
       ((PElem) temp[i]).apply(new DepthFirstAdapter()
                               {
+                                @Override
                                 public void caseAElem(AElem node)
                                 {
                                   String rname = node.getId().getText();
@@ -216,7 +219,7 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
                                   else
                                   {
                                     Object token = transformIds.astIds.tokens.get("T" + name);
-                                    Object ignToken = transformIds.astIds.ignTokens.get("T" + name);
+//                                    Object ignToken = transformIds.astIds.ignTokens.get("T" + name);
                                     Object production = transformIds.astIds.prods.get("P" + name);
                                     Object ast_production = transformIds.ast_prods.get("P" + name);
 
@@ -228,7 +231,7 @@ public class ResolveProdTransformIds extends DepthFirstAdapter
                                     //it seems to be a token
                                     if(token != null)
                                     {
-                                      boolean bast_production = false;
+//                                      boolean bast_production = false;
                                       //if it's also a ast_production
                                       if(ast_production != null)
                                       {
diff --git a/src/org/sablecc/sablecc/ResolveTransformIds.java b/src/org/sablecc/sablecc/ResolveTransformIds.java
index d7089fc..36bcf17 100644
--- a/src/org/sablecc/sablecc/ResolveTransformIds.java
+++ b/src/org/sablecc/sablecc/ResolveTransformIds.java
@@ -11,10 +11,10 @@
  */
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
-import java.io.*;
 
 /*
  * ResolveTransformIds
@@ -25,6 +25,7 @@ import java.io.*;
  * the alternative transformation is itself correct.
  */
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class ResolveTransformIds extends DepthFirstAdapter
 {
 
@@ -36,7 +37,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
   private int nbTransformProd = 0;
   private String currentAstAlt;
   private String currentAstProd;
-  private String currentProd;
+//  private String currentProd;
   private String currentAlt;
   private String currentAstProdName;
 
@@ -65,10 +66,11 @@ public class ResolveTransformIds extends DepthFirstAdapter
     return prodTransformIds;
   }
 
+  @Override
   public void inAProd(final AProd production)
   {
     nbTransformProd = 0;
-    currentProd = (String)altIds.ids.names.get(production);
+//    currentProd = (String)altIds.ids.names.get(production);
 
     if(production.getArrow() != null)
     {
@@ -80,6 +82,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
   private LinkedList listCurrentAlt;
   private LinkedList listOfListCurrentAlt;
 
+  @Override
   public void inAAlt(AAlt nodeAlt)
   {
     nbTransformAlt = 0;
@@ -90,6 +93,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
     listOfListCurrentAlt = (LinkedList)((LinkedList)altIds.alts_elems_list.get(currentAlt)).clone();
   }
 
+  @Override
   public void inAAltTransform(AAltTransform node)
   {
     if(node.getTerms().size() == 0)
@@ -102,6 +106,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAAltTransform(AAltTransform node)
   {
     if(nbTransformAlt != nbTransformProd)
@@ -110,6 +115,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAAlt(AAlt node)
   {
     lastSimpleTerm = null;
@@ -120,9 +126,10 @@ public class ResolveTransformIds extends DepthFirstAdapter
     mapSimpleTermProdTransformation.clear();
   }
 
+  @Override
   public void outANewTerm(ANewTerm node)
   {
-    LinkedList list = (LinkedList)prodTransformIds.prod_transforms.get(currentProd);
+//    LinkedList list = (LinkedList)prodTransformIds.prod_transforms.get(currentProd);
     AProdName prodNameNode = (AProdName)node.getProdName();
 
     currentAstProd = "P" + ResolveIds.name(prodNameNode.getId().getText());
@@ -138,14 +145,14 @@ public class ResolveTransformIds extends DepthFirstAdapter
       currentAstAlt = "A" + ResolveIds.name(prodNameNode.getId().getText());
     }
 
-    String currentAstProdName_no_specifier;
+//    String currentAstProdName_no_specifier;
     if(currentAstProdName.startsWith("P."))
     {
-      currentAstProdName_no_specifier = currentAstProdName.substring(2);
+//      currentAstProdName_no_specifier = currentAstProdName.substring(2);
     }
     else
     {
-      currentAstProdName_no_specifier = currentAstProdName;
+//      currentAstProdName_no_specifier = currentAstProdName;
     }
 
     if(transformIds.ast_prods.get(currentAstProd) == null)
@@ -210,9 +217,10 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
   }
 
+  @Override
   public void outANewListTerm(ANewListTerm node)
   {
-    LinkedList list = (LinkedList)prodTransformIds.prod_transforms.get(currentProd);
+//    LinkedList list = (LinkedList)prodTransformIds.prod_transforms.get(currentProd);
     AProdName prodNameNode = (AProdName)node.getProdName();
 
     currentAstProdName = prodNameNode.getId().getText();
@@ -228,14 +236,14 @@ public class ResolveTransformIds extends DepthFirstAdapter
       currentAstAlt = "A" + ResolveIds.name(prodNameNode.getId().getText());
     }
 
-    String currentAstProdName_no_specifier;
+//    String currentAstProdName_no_specifier;
     if(currentAstProdName.startsWith("P."))
     {
-      currentAstProdName_no_specifier = currentAstProdName.substring(2);
+//      currentAstProdName_no_specifier = currentAstProdName.substring(2);
     }
     else
     {
-      currentAstProdName_no_specifier = currentAstProdName;
+//      currentAstProdName_no_specifier = currentAstProdName;
     }
 
     if(transformIds.ast_prods.get(currentAstProd) == null)
@@ -300,6 +308,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void outAListTerm(AListTerm node)
   {
     if( (node.getListTerms() != null) && (node.getListTerms().size() != 0) )
@@ -344,13 +353,14 @@ public class ResolveTransformIds extends DepthFirstAdapter
   private LinkedList listP;
   private String lastSimpleTerm;
 
+  @Override
   public void inASimpleTerm(ASimpleTerm node)
   {
     String name = node.getId().getText();
     String typeOfExplicitElemName = (String)transformIds.astIds.altsElemNameTypes.get( currentAlt+"."+node.getId().getText() );
     String alternativeElemType = (String)transformIds.astIds.altsElemTypes.get( currentAlt+"."+node.getId().getText() );
 
-    boolean okTermtail = false;
+//    boolean okTermtail = false;
     String tmpName = name;
 
     if( (listCurrentAltGlobal == null) || !listCurrentAltGlobal.contains(name) )
@@ -397,9 +407,9 @@ public class ResolveTransformIds extends DepthFirstAdapter
       }
     }
 
-    int position = 0;
+//    int position = 0;
 
-    String type;
+//    String type;
 
     if(alternativeElemType.startsWith("T"))
     {
@@ -409,7 +419,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
       }
 
       altTransformElemTypes.put(node, alternativeElemType);
-      position = 0;
+//      position = 0;
     }
     //The element is a production
     else
@@ -477,7 +487,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
       //simpletermtail doesn't appear in the production transformation
       if( node.getSimpleTermTail() != null )
       {
-        okTermtail = true;
+//        okTermtail = true;
         String strTermTail = node.getSimpleTermTail().getText();
 
         if( ( (listL == null) || !listL.contains(strTermTail) ) &&
@@ -493,7 +503,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           {
             iter = listL.listIterator();
 
-            position = listL.indexOf(strTermTail);
+//            position = listL.indexOf(strTermTail);
 
             while(iter.hasNext())
             {
@@ -509,7 +519,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           {
             iter = listP.listIterator();
 
-            position = listP.indexOf(strTermTail);
+//            position = listP.indexOf(strTermTail);
 
             while(iter.hasNext())
             {
@@ -526,15 +536,15 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
       if(node.getSimpleTermTail() != null)
       {
-        String termtail = node.getSimpleTermTail().getText();
-        LinkedList listProdContains = null;
+//        String termtail = node.getSimpleTermTail().getText();
+//        LinkedList listProdContains = null;
         if(typeOfExplicitElemName != null)
         {
-          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get(typeOfExplicitElemName);
+//          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get(typeOfExplicitElemName);
         }
         else
         {
-          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get("P" + ResolveIds.name(node.getId().getText()));
+//          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get("P" + ResolveIds.name(node.getId().getText()));
         }
       }
       //The Type of the element without his eventual termtail (term.termtail :: (type of term))
@@ -550,7 +560,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
       if(node.getSimpleTermTail() == null)
       {
         altTransformElemTypes.put(node, alternativeElemType);
-        position = 0;
+//        position = 0;
       }
       else
       {
@@ -578,11 +588,13 @@ public class ResolveTransformIds extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void caseANullTerm(ANullTerm node)
   {
     altTransformElemTypes.put(node, "Null");
   }
 
+  @Override
   public void inASimpleListTerm(ASimpleListTerm node)
   {
     String name = node.getId().getText();
@@ -642,9 +654,9 @@ public class ResolveTransformIds extends DepthFirstAdapter
       }
     }
 
-    int position = 0;
+//    int position = 0;
 
-    String type;
+//    String type;
     if(alternativeElemType.startsWith("T"))
     {
       //A token can't have term tail
@@ -654,7 +666,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
       }
 
       altTransformElemTypes.put(node, alternativeElemType);
-      position = 0;
+//      position = 0;
     }
     //it seems to be a production without a specifier
     else
@@ -735,7 +747,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           {
             iter = listL.listIterator();
 
-            position = listL.indexOf(strTermTail);
+//            position = listL.indexOf(strTermTail);
 
             while(iter.hasNext())
             {
@@ -751,7 +763,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
           {
             iter = listP.listIterator();
 
-            position = listP.indexOf(strTermTail);
+//            position = listP.indexOf(strTermTail);
 
             while(iter.hasNext())
             {
@@ -767,21 +779,21 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
       if(node.getSimpleTermTail() != null)
       {
-        String termtail = node.getSimpleTermTail().getText();
-        LinkedList listProdContains = null;
-        LinkedList prodContains = null;
+//        String termtail = node.getSimpleTermTail().getText();
+//        LinkedList listProdContains = null;
+//        LinkedList prodContains = null;
         if(typeOfExplicitElemName != null)
         {
-          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get(typeOfExplicitElemName);
-          prodContains = (LinkedList)prodTransformIds.prod_transforms.get(typeOfExplicitElemName);
+//          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get(typeOfExplicitElemName);
+//          prodContains = (LinkedList)prodTransformIds.prod_transforms.get(typeOfExplicitElemName);
         }
         else
         {
-          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get("P" + ResolveIds.name(node.getId().getText()));
-          prodContains = (LinkedList)prodTransformIds.prod_transforms.get("P" + ResolveIds.name(node.getId().getText()));
+//          listProdContains = (LinkedList)prodTransformIds.mapProdTransformContainsList.get("P" + ResolveIds.name(node.getId().getText()));
+//          prodContains = (LinkedList)prodTransformIds.prod_transforms.get("P" + ResolveIds.name(node.getId().getText()));
         }
 
-        LinkedList lst = (LinkedList)altIds.alts_elems_list.get(currentAlt);
+//        LinkedList lst = (LinkedList)altIds.alts_elems_list.get(currentAlt);
       }
 
       //The Type of the element without his eventual termtail (term.termtail :: (type of term))
@@ -798,7 +810,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
       if(node.getSimpleTermTail() == null)
       {
         altTransformElemTypes.put(node, alternativeElemType);
-        position = 0;
+//        position = 0;
       }
       else
       {
@@ -830,6 +842,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
   private boolean curr_prod_has_prodTransform;
   private boolean firstProduction = false;
 
+  @Override
   public void outAProductions(AProductions node)
   {
     LinkedList list = node.getProds();
@@ -847,6 +860,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
 
       ((PProd) temp[i]).apply(new DepthFirstAdapter()
                               {
+                                @Override
                                 public void inAProd(AProd production)
                                 {
                                   LinkedList prodTransform = production.getProdTransform();
@@ -888,6 +902,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
                                   }
                                 }
 
+                                @Override
                                 public void inAAltTransform(AAltTransform node)
                                 {
                                   Object curr_altTransformTerms[] = node.getTerms().toArray();
@@ -1080,6 +1095,7 @@ public class ResolveTransformIds extends DepthFirstAdapter
       "The first production's transformation must be only one elements without an operator.");
   }
 
+  @Override
   public String toString()
   {
     StringBuffer s = new StringBuffer();
diff --git a/src/org/sablecc/sablecc/SableCC.java b/src/org/sablecc/sablecc/SableCC.java
index ba82c54..1b24724 100644
--- a/src/org/sablecc/sablecc/SableCC.java
+++ b/src/org/sablecc/sablecc/SableCC.java
@@ -8,14 +8,13 @@
 package org.sablecc.sablecc;
 
 import java.io.*;
-import java.awt.*;
 import java.util.*;
-import org.sablecc.sablecc.node.*;
-import org.sablecc.sablecc.analysis.*;
+
 import org.sablecc.sablecc.lexer.*;
+import org.sablecc.sablecc.node.*;
 import org.sablecc.sablecc.parser.*;
-import java.util.Vector;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class SableCC
 {
   private static boolean processInlining = true;
@@ -32,7 +31,7 @@ public class SableCC
   {
     System.out.println();
     System.out.println("SableCC version " + Version.VERSION);
-    System.out.println("Copyright (C) 1997-2003 Etienne M. Gagnon <etienne.gagnon at uqam.ca> and");
+    System.out.println("Copyright (C) 1997-2012 Etienne M. Gagnon <egagnon at j-meg.com> and");
     System.out.println("others.  All rights reserved.");
     System.out.println();
     System.out.println("This software comes with ABSOLUTELY NO WARRANTY.  This is free software,");
diff --git a/src/org/sablecc/sablecc/StringCast.java b/src/org/sablecc/sablecc/StringCast.java
index 63c9a86..76d665b 100644
--- a/src/org/sablecc/sablecc/StringCast.java
+++ b/src/org/sablecc/sablecc/StringCast.java
@@ -7,7 +7,6 @@
 
 package org.sablecc.sablecc;
 
-import java.util.*;
 
 public class StringCast implements Cast
 {
@@ -16,6 +15,7 @@ public class StringCast implements Cast
   private StringCast()
   {}
 
+  @Override
   public  Object cast(Object o)
   {
     return (String) o;
diff --git a/src/org/sablecc/sablecc/StringComparator.java b/src/org/sablecc/sablecc/StringComparator.java
index ab7fb2f..9edacbf 100644
--- a/src/org/sablecc/sablecc/StringComparator.java
+++ b/src/org/sablecc/sablecc/StringComparator.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings("rawtypes")
 public class StringComparator implements Comparator
 {
   public final static StringComparator instance = new StringComparator();
@@ -16,6 +17,7 @@ public class StringComparator implements Comparator
   private StringComparator()
   {}
 
+  @Override
   public int compare(Object o1, Object o2)
   {
     return ((String) o1).compareTo((String) o2);
diff --git a/src/org/sablecc/sablecc/Symbol.java b/src/org/sablecc/sablecc/Symbol.java
index bc10c42..f23ae64 100644
--- a/src/org/sablecc/sablecc/Symbol.java
+++ b/src/org/sablecc/sablecc/Symbol.java
@@ -8,8 +8,8 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Vector;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class Symbol implements Comparable
 {
   private static Vector terminals;
@@ -127,11 +127,13 @@ final class Symbol implements Comparable
     return nonterminals_;
   }
 
+  @Override
   public String toString()
   {
     return name;
   }
 
+  @Override
   public int compareTo(Object object)
   {
     Symbol symbol = (Symbol) object;
diff --git a/src/org/sablecc/sablecc/SymbolSet.java b/src/org/sablecc/sablecc/SymbolSet.java
index f46e113..774f424 100644
--- a/src/org/sablecc/sablecc/SymbolSet.java
+++ b/src/org/sablecc/sablecc/SymbolSet.java
@@ -8,8 +8,8 @@
 package org.sablecc.sablecc;
 
 import java.util.*;
-import java.util.Vector;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 final class SymbolSet implements Cloneable
 {
   private final IntSet terminals;
@@ -130,11 +130,13 @@ final class SymbolSet implements Cloneable
     modified = true;
   }
 
+  @Override
   public int hashCode()
   {
     return terminals.hashCode() + nonterminals.hashCode() + new Boolean(empty).hashCode();
   }
 
+  @Override
   public boolean equals(Object obj)
   {
     if((obj == null) ||
@@ -160,6 +162,7 @@ final class SymbolSet implements Cloneable
     return symbols;
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
@@ -200,6 +203,7 @@ final class SymbolSet implements Cloneable
     return result.toString();
   }
 
+  @Override
   public Object clone()
   {
     return new SymbolSet(this);
diff --git a/src/org/sablecc/sablecc/Transitions.java b/src/org/sablecc/sablecc/Transitions.java
index 817c754..5cde040 100644
--- a/src/org/sablecc/sablecc/Transitions.java
+++ b/src/org/sablecc/sablecc/Transitions.java
@@ -7,10 +7,12 @@
 
 package org.sablecc.sablecc;
 
+import java.util.*;
+
 import org.sablecc.sablecc.analysis.*;
 import org.sablecc.sablecc.node.*;
-import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class Transitions extends DepthFirstAdapter
 {
   public final Map tokenStates = new TypedHashMap(
@@ -21,6 +23,7 @@ public class Transitions extends DepthFirstAdapter
   private String transition;
   private Map map;
 
+  @Override
   public void caseAStateList(AStateList node)
   {
     inAStateList(node);
@@ -44,6 +47,7 @@ public class Transitions extends DepthFirstAdapter
     }
   }
 
+  @Override
   public void inATokenDef(ATokenDef node)
   {
     map = new TypedTreeMap(
@@ -52,31 +56,37 @@ public class Transitions extends DepthFirstAdapter
             StringCast.instance);
   }
 
+  @Override
   public void inAStateList(AStateList node)
   {
     state = transition = node.getId().getText().toUpperCase();
   }
 
+  @Override
   public void inAStateListTail(AStateListTail node)
   {
     state = transition = node.getId().getText().toUpperCase();
   }
 
+  @Override
   public void outATransition(ATransition node)
   {
     transition = node.getId().getText().toUpperCase();
   }
 
+  @Override
   public void outAStateList(AStateList node)
   {
     map.put(state, transition);
   }
 
+  @Override
   public void outAStateListTail(AStateListTail node)
   {
     map.put(state, transition);
   }
 
+  @Override
   public void outATokenDef(ATokenDef node)
   {
     tokenStates.put(node, map);
diff --git a/src/org/sablecc/sablecc/TypedHashMap.java b/src/org/sablecc/sablecc/TypedHashMap.java
index 0a20b3f..69cb26c 100644
--- a/src/org/sablecc/sablecc/TypedHashMap.java
+++ b/src/org/sablecc/sablecc/TypedHashMap.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class TypedHashMap extends HashMap
 {
   private Cast keyCast;
@@ -54,6 +55,7 @@ public class TypedHashMap extends HashMap
     this.valueCast = valueCast;
   }
 
+  @Override
   public Object clone()
   {
     return new TypedHashMap(this, keyCast, valueCast);
@@ -84,6 +86,7 @@ public class TypedHashMap extends HashMap
     return valueCast;
   }
 
+  @Override
   public Set entrySet()
   {
     if(entries == null)
@@ -94,6 +97,7 @@ public class TypedHashMap extends HashMap
     return entries;
   }
 
+  @Override
   public Object put(Object key, Object value)
   {
     return super.put(keyCast.cast(key), valueCast.cast(value));
@@ -111,11 +115,13 @@ public class TypedHashMap extends HashMap
                    ;
     }
 
+    @Override
     public int size()
     {
       return set.size();
     }
 
+    @Override
     public Iterator iterator()
     {
       return new EntryIterator(set.iterator());
@@ -131,16 +137,19 @@ public class TypedHashMap extends HashMap
       this.iterator = iterator;
     }
 
+    @Override
     public boolean hasNext()
     {
       return iterator.hasNext();
     }
 
+    @Override
     public Object next()
     {
       return new TypedEntry((Map.Entry) iterator.next());
     }
 
+    @Override
     public void remove
       ()
     {
@@ -157,16 +166,19 @@ public class TypedHashMap extends HashMap
       this.entry = entry;
     }
 
+    @Override
     public Object getKey()
     {
       return entry.getKey();
     }
 
+    @Override
     public Object getValue()
     {
       return entry.getValue();
     }
 
+    @Override
     public Object setValue(Object value)
     {
       return entry.setValue(valueCast.cast(value));
diff --git a/src/org/sablecc/sablecc/TypedLinkedList.java b/src/org/sablecc/sablecc/TypedLinkedList.java
index 2e1494b..135ddae 100644
--- a/src/org/sablecc/sablecc/TypedLinkedList.java
+++ b/src/org/sablecc/sablecc/TypedLinkedList.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class TypedLinkedList extends LinkedList
 {
   Cast cast;
@@ -46,16 +47,19 @@ public class TypedLinkedList extends LinkedList
     return cast;
   }
 
+  @Override
   public void addFirst(Object o)
   {
     super.addFirst(cast.cast(o));
   }
 
+  @Override
   public void addLast(Object o)
   {
     super.addLast(cast.cast(o));
   }
 
+  @Override
   public ListIterator listIterator(int index)
   {
     return new TypedLinkedListIterator(super.listIterator(index));
@@ -70,48 +74,57 @@ public class TypedLinkedList extends LinkedList
       this.iterator = iterator;
     }
 
+    @Override
     public boolean hasNext()
     {
       return iterator.hasNext();
     }
 
+    @Override
     public Object next()
     {
       return iterator.next();
     }
 
+    @Override
     public boolean hasPrevious()
     {
       return iterator.hasPrevious();
     }
 
+    @Override
     public Object previous()
     {
       return iterator.previous();
     }
 
+    @Override
     public int nextIndex()
     {
       return iterator.nextIndex();
     }
 
+    @Override
     public int previousIndex()
     {
       return iterator.previousIndex();
     }
 
+    @Override
     public void remove
       ()
     {
       iterator.remove();
     }
 
+    @Override
     public void set
       (Object o)
     {
       iterator.set(cast.cast(o));
     }
 
+    @Override
     public void add
       (Object o)
     {
diff --git a/src/org/sablecc/sablecc/TypedTreeMap.java b/src/org/sablecc/sablecc/TypedTreeMap.java
index e0b3ec2..6381fbd 100644
--- a/src/org/sablecc/sablecc/TypedTreeMap.java
+++ b/src/org/sablecc/sablecc/TypedTreeMap.java
@@ -9,6 +9,7 @@ package org.sablecc.sablecc;
 
 import java.util.*;
 
+ at SuppressWarnings({"rawtypes","unchecked"})
 public class TypedTreeMap extends TreeMap
 {
   private Cast keyCast;
@@ -95,6 +96,7 @@ public class TypedTreeMap extends TreeMap
     this.valueCast = valueCast;
   }
 
+  @Override
   public Object clone()
   {
     return new TypedTreeMap(this, keyCast, valueCast);
@@ -160,6 +162,7 @@ public class TypedTreeMap extends TreeMap
     return valueCast;
   }
 
+  @Override
   public Set entrySet()
   {
     if(entries == null)
@@ -170,6 +173,7 @@ public class TypedTreeMap extends TreeMap
     return entries;
   }
 
+  @Override
   public Object put(Object key, Object value)
   {
     return super.put(keyCast.cast(key), valueCast.cast(value));
@@ -187,11 +191,13 @@ public class TypedTreeMap extends TreeMap
                    ;
     }
 
+    @Override
     public int size()
     {
       return set.size();
     }
 
+    @Override
     public Iterator iterator()
     {
       return new EntryIterator(set.iterator());
@@ -207,16 +213,19 @@ public class TypedTreeMap extends TreeMap
       this.iterator = iterator;
     }
 
+    @Override
     public boolean hasNext()
     {
       return iterator.hasNext();
     }
 
+    @Override
     public Object next()
     {
       return new TypedEntry((Map.Entry) iterator.next());
     }
 
+    @Override
     public void remove
       ()
     {
@@ -233,16 +242,19 @@ public class TypedTreeMap extends TreeMap
       this.entry = entry;
     }
 
+    @Override
     public Object getKey()
     {
       return entry.getKey();
     }
 
+    @Override
     public Object getValue()
     {
       return entry.getValue();
     }
 
+    @Override
     public Object setValue(Object value)
     {
       return entry.setValue(valueCast.cast(value));
diff --git a/src/org/sablecc/sablecc/Version.java b/src/org/sablecc/sablecc/Version.java
index c835fb3..975881e 100644
--- a/src/org/sablecc/sablecc/Version.java
+++ b/src/org/sablecc/sablecc/Version.java
@@ -2,5 +2,5 @@ package org.sablecc.sablecc;
 
 public class Version
 {
-  public static final String VERSION = "3.2";
+  public static final String VERSION = "3.7";
 }
diff --git a/src/org/sablecc/sablecc/alternatives.txt b/src/org/sablecc/sablecc/alternatives.txt
index 8714aa5..d81d331 100644
--- a/src/org/sablecc/sablecc/alternatives.txt
+++ b/src/org/sablecc/sablecc/alternatives.txt
@@ -49,7 +49,7 @@ $
 
 Macro:ConstructorHeaderDeclList
 
-        @SuppressWarnings("hiding") List<$0$> _$1$_$2$
+        @SuppressWarnings("hiding") List<?> _$1$_$2$
 $
 
 Macro:ConstructorBodyHeader
@@ -102,6 +102,7 @@ $
 
 Macro:Apply
 
+    @Override
     public void apply(Switch sw)
     {
         ((Analysis) sw).case$0$(this);
@@ -145,18 +146,24 @@ Macro:GetSetList
         return this._$1$_;
     }
 
-    public void set$0$(List<$2$> list)
+    public void set$0$(List<?> list)
     {
+        for($2$ e : this._$1$_)
+        {
+            e.parent(null);
+        }
         this._$1$_.clear();
-        this._$1$_.addAll(list);
-        for($2$ e : list)
+
+        for(Object obj_e : list)
         {
+            $2$ e = ($2$) obj_e;
             if(e.parent() != null)
             {
                 e.parent().removeChild(e);
             }
 
             e.parent(this);
+            this._$1$_.add(e);
         }
     }
 
diff --git a/src/org/sablecc/sablecc/analyses.txt b/src/org/sablecc/sablecc/analyses.txt
index 949fb5b..69cc9c7 100644
--- a/src/org/sablecc/sablecc/analyses.txt
+++ b/src/org/sablecc/sablecc/analyses.txt
@@ -33,6 +33,7 @@ $
 
 Macro:AnalysisTail
     void caseEOF(EOF node);
+    void caseInvalidToken(InvalidToken node);
 }
 
 $
@@ -50,6 +51,7 @@ public class AnalysisAdapter implements Analysis
     private Hashtable<Node,Object> in;
     private Hashtable<Node,Object> out;
 
+    @Override
     public Object getIn(Node node)
     {
         if(this.in == null)
@@ -60,6 +62,7 @@ public class AnalysisAdapter implements Analysis
         return this.in.get(node);
     }
 
+    @Override
     public void setIn(Node node, Object o)
     {
         if(this.in == null)
@@ -77,6 +80,7 @@ public class AnalysisAdapter implements Analysis
         }
     }
 
+    @Override
     public Object getOut(Node node)
     {
         if(this.out == null)
@@ -87,6 +91,7 @@ public class AnalysisAdapter implements Analysis
         return this.out.get(node);
     }
 
+    @Override
     public void setOut(Node node, Object o)
     {
         if(this.out == null)
@@ -108,6 +113,7 @@ $
 
 Macro:AnalysisAdapterStart
 
+    @Override
     public void caseStart(Start node)
     {
         defaultCase(node);
@@ -117,6 +123,7 @@ $
 
 Macro:AnalysisAdapterBody
 
+    @Override
     public void case$0$($0$ node)
     {
         defaultCase(node);
@@ -126,11 +133,18 @@ $
 
 Macro:AnalysisAdapterTail
 
+    @Override
     public void caseEOF(EOF node)
     {
         defaultCase(node);
     }
 
+    @Override
+    public void caseInvalidToken(InvalidToken node)
+    {
+        defaultCase(node);
+    }
+
     public void defaultCase(@SuppressWarnings("unused") Node node)
     {
         // do nothing
diff --git a/src/org/sablecc/sablecc/analysis/Analysis.java b/src/org/sablecc/sablecc/analysis/Analysis.java
index ebd3638..185f3a7 100644
--- a/src/org/sablecc/sablecc/analysis/Analysis.java
+++ b/src/org/sablecc/sablecc/analysis/Analysis.java
@@ -6,97 +6,98 @@ import org.sablecc.sablecc.node.*;
 
 public interface Analysis extends Switch
 {
-  Object getIn(Node node);
-  void setIn(Node node, Object in);
-  Object getOut(Node node);
-  void setOut(Node node, Object out);
+    Object getIn(Node node);
+    void setIn(Node node, Object o);
+    Object getOut(Node node);
+    void setOut(Node node, Object o);
 
-  void caseStart(Start node);
-  void caseAGrammar(AGrammar node);
-  void caseAHelpers(AHelpers node);
-  void caseAHelperDef(AHelperDef node);
-  void caseAStates(AStates node);
-  void caseATokens(ATokens node);
-  void caseATokenDef(ATokenDef node);
-  void caseAStateList(AStateList node);
-  void caseAStateListTail(AStateListTail node);
-  void caseATransition(ATransition node);
-  void caseAIgnTokens(AIgnTokens node);
-  void caseARegExp(ARegExp node);
-  void caseAConcat(AConcat node);
-  void caseAUnExp(AUnExp node);
-  void caseACharBasic(ACharBasic node);
-  void caseASetBasic(ASetBasic node);
-  void caseAStringBasic(AStringBasic node);
-  void caseAIdBasic(AIdBasic node);
-  void caseARegExpBasic(ARegExpBasic node);
-  void caseACharChar(ACharChar node);
-  void caseADecChar(ADecChar node);
-  void caseAHexChar(AHexChar node);
-  void caseAOperationSet(AOperationSet node);
-  void caseAIntervalSet(AIntervalSet node);
-  void caseAStarUnOp(AStarUnOp node);
-  void caseAQMarkUnOp(AQMarkUnOp node);
-  void caseAPlusUnOp(APlusUnOp node);
-  void caseAPlusBinOp(APlusBinOp node);
-  void caseAMinusBinOp(AMinusBinOp node);
-  void caseAProductions(AProductions node);
-  void caseAProd(AProd node);
-  void caseAAlt(AAlt node);
-  void caseAAltTransform(AAltTransform node);
-  void caseANewTerm(ANewTerm node);
-  void caseAListTerm(AListTerm node);
-  void caseASimpleTerm(ASimpleTerm node);
-  void caseANullTerm(ANullTerm node);
-  void caseANewListTerm(ANewListTerm node);
-  void caseASimpleListTerm(ASimpleListTerm node);
-  void caseAProdName(AProdName node);
-  void caseAElem(AElem node);
-  void caseATokenSpecifier(ATokenSpecifier node);
-  void caseAProductionSpecifier(AProductionSpecifier node);
-  void caseAAst(AAst node);
-  void caseAAstProd(AAstProd node);
-  void caseAAstAlt(AAstAlt node);
+    void caseStart(Start node);
+    void caseAGrammar(AGrammar node);
+    void caseAHelpers(AHelpers node);
+    void caseAHelperDef(AHelperDef node);
+    void caseAStates(AStates node);
+    void caseATokens(ATokens node);
+    void caseATokenDef(ATokenDef node);
+    void caseAStateList(AStateList node);
+    void caseAStateListTail(AStateListTail node);
+    void caseATransition(ATransition node);
+    void caseAIgnTokens(AIgnTokens node);
+    void caseARegExp(ARegExp node);
+    void caseAConcat(AConcat node);
+    void caseAUnExp(AUnExp node);
+    void caseACharBasic(ACharBasic node);
+    void caseASetBasic(ASetBasic node);
+    void caseAStringBasic(AStringBasic node);
+    void caseAIdBasic(AIdBasic node);
+    void caseARegExpBasic(ARegExpBasic node);
+    void caseACharChar(ACharChar node);
+    void caseADecChar(ADecChar node);
+    void caseAHexChar(AHexChar node);
+    void caseAOperationSet(AOperationSet node);
+    void caseAIntervalSet(AIntervalSet node);
+    void caseAStarUnOp(AStarUnOp node);
+    void caseAQMarkUnOp(AQMarkUnOp node);
+    void caseAPlusUnOp(APlusUnOp node);
+    void caseAPlusBinOp(APlusBinOp node);
+    void caseAMinusBinOp(AMinusBinOp node);
+    void caseAProductions(AProductions node);
+    void caseAProd(AProd node);
+    void caseAAlt(AAlt node);
+    void caseAAltTransform(AAltTransform node);
+    void caseANewTerm(ANewTerm node);
+    void caseAListTerm(AListTerm node);
+    void caseASimpleTerm(ASimpleTerm node);
+    void caseANullTerm(ANullTerm node);
+    void caseANewListTerm(ANewListTerm node);
+    void caseASimpleListTerm(ASimpleListTerm node);
+    void caseAProdName(AProdName node);
+    void caseAElem(AElem node);
+    void caseATokenSpecifier(ATokenSpecifier node);
+    void caseAProductionSpecifier(AProductionSpecifier node);
+    void caseAAst(AAst node);
+    void caseAAstProd(AAstProd node);
+    void caseAAstAlt(AAstAlt node);
 
-  void caseTPkgId(TPkgId node);
-  void caseTPackage(TPackage node);
-  void caseTStates(TStates node);
-  void caseTHelpers(THelpers node);
-  void caseTTokens(TTokens node);
-  void caseTIgnored(TIgnored node);
-  void caseTProductions(TProductions node);
-  void caseTAbstract(TAbstract node);
-  void caseTSyntax(TSyntax node);
-  void caseTTree(TTree node);
-  void caseTNew(TNew node);
-  void caseTNull(TNull node);
-  void caseTTokenSpecifier(TTokenSpecifier node);
-  void caseTProductionSpecifier(TProductionSpecifier node);
-  void caseTDot(TDot node);
-  void caseTDDot(TDDot node);
-  void caseTSemicolon(TSemicolon node);
-  void caseTEqual(TEqual node);
-  void caseTLBkt(TLBkt node);
-  void caseTRBkt(TRBkt node);
-  void caseTLPar(TLPar node);
-  void caseTRPar(TRPar node);
-  void caseTLBrace(TLBrace node);
-  void caseTRBrace(TRBrace node);
-  void caseTPlus(TPlus node);
-  void caseTMinus(TMinus node);
-  void caseTQMark(TQMark node);
-  void caseTStar(TStar node);
-  void caseTBar(TBar node);
-  void caseTComma(TComma node);
-  void caseTSlash(TSlash node);
-  void caseTArrow(TArrow node);
-  void caseTColon(TColon node);
-  void caseTId(TId node);
-  void caseTChar(TChar node);
-  void caseTDecChar(TDecChar node);
-  void caseTHexChar(THexChar node);
-  void caseTString(TString node);
-  void caseTBlank(TBlank node);
-  void caseTComment(TComment node);
-  void caseEOF(EOF node);
+    void caseTPkgId(TPkgId node);
+    void caseTPackage(TPackage node);
+    void caseTStates(TStates node);
+    void caseTHelpers(THelpers node);
+    void caseTTokens(TTokens node);
+    void caseTIgnored(TIgnored node);
+    void caseTProductions(TProductions node);
+    void caseTAbstract(TAbstract node);
+    void caseTSyntax(TSyntax node);
+    void caseTTree(TTree node);
+    void caseTNew(TNew node);
+    void caseTNull(TNull node);
+    void caseTTokenSpecifier(TTokenSpecifier node);
+    void caseTProductionSpecifier(TProductionSpecifier node);
+    void caseTDot(TDot node);
+    void caseTDDot(TDDot node);
+    void caseTSemicolon(TSemicolon node);
+    void caseTEqual(TEqual node);
+    void caseTLBkt(TLBkt node);
+    void caseTRBkt(TRBkt node);
+    void caseTLPar(TLPar node);
+    void caseTRPar(TRPar node);
+    void caseTLBrace(TLBrace node);
+    void caseTRBrace(TRBrace node);
+    void caseTPlus(TPlus node);
+    void caseTMinus(TMinus node);
+    void caseTQMark(TQMark node);
+    void caseTStar(TStar node);
+    void caseTBar(TBar node);
+    void caseTComma(TComma node);
+    void caseTSlash(TSlash node);
+    void caseTArrow(TArrow node);
+    void caseTColon(TColon node);
+    void caseTId(TId node);
+    void caseTChar(TChar node);
+    void caseTDecChar(TDecChar node);
+    void caseTHexChar(THexChar node);
+    void caseTString(TString node);
+    void caseTBlank(TBlank node);
+    void caseTComment(TComment node);
+    void caseEOF(EOF node);
+    void caseInvalidToken(InvalidToken node);
 }
diff --git a/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java b/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
index b128fdf..c574e75 100644
--- a/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
+++ b/src/org/sablecc/sablecc/analysis/AnalysisAdapter.java
@@ -7,497 +7,597 @@ import org.sablecc.sablecc.node.*;
 
 public class AnalysisAdapter implements Analysis
 {
-  private Hashtable in;
-  private Hashtable out;
+    private Hashtable<Node,Object> in;
+    private Hashtable<Node,Object> out;
 
-  public Object getIn(Node node)
-  {
-    if(in == null)
+    @Override
+    public Object getIn(Node node)
     {
-      return null;
+        if(this.in == null)
+        {
+            return null;
+        }
+
+        return this.in.get(node);
+    }
+
+    @Override
+    public void setIn(Node node, Object o)
+    {
+        if(this.in == null)
+        {
+            this.in = new Hashtable<Node,Object>(1);
+        }
+
+        if(o != null)
+        {
+            this.in.put(node, o);
+        }
+        else
+        {
+            this.in.remove(node);
+        }
+    }
+
+    @Override
+    public Object getOut(Node node)
+    {
+        if(this.out == null)
+        {
+            return null;
+        }
+
+        return this.out.get(node);
+    }
+
+    @Override
+    public void setOut(Node node, Object o)
+    {
+        if(this.out == null)
+        {
+            this.out = new Hashtable<Node,Object>(1);
+        }
+
+        if(o != null)
+        {
+            this.out.put(node, o);
+        }
+        else
+        {
+            this.out.remove(node);
+        }
+    }
+
+    @Override
+    public void caseStart(Start node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAGrammar(AGrammar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAHelpers(AHelpers node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAHelperDef(AHelperDef node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAStates(AStates node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseATokens(ATokens node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseATokenDef(ATokenDef node)
+    {
+        defaultCase(node);
     }
 
-    return in.get(node);
-  }
+    @Override
+    public void caseAStateList(AStateList node)
+    {
+        defaultCase(node);
+    }
 
-  public void setIn(Node node, Object in)
-  {
-    if(this.in == null)
+    @Override
+    public void caseAStateListTail(AStateListTail node)
     {
-      this.in = new Hashtable(1);
+        defaultCase(node);
     }
 
-    if(in != null)
+    @Override
+    public void caseATransition(ATransition node)
     {
-      this.in.put(node, in);
+        defaultCase(node);
     }
-    else
+
+    @Override
+    public void caseAIgnTokens(AIgnTokens node)
     {
-      this.in.remove(node);
+        defaultCase(node);
     }
-  }
 
-  public Object getOut(Node node)
-  {
-    if(out == null)
+    @Override
+    public void caseARegExp(ARegExp node)
     {
-      return null;
+        defaultCase(node);
     }
 
-    return out.get(node);
-  }
+    @Override
+    public void caseAConcat(AConcat node)
+    {
+        defaultCase(node);
+    }
 
-  public void setOut(Node node, Object out)
-  {
-    if(this.out == null)
+    @Override
+    public void caseAUnExp(AUnExp node)
     {
-      this.out = new Hashtable(1);
+        defaultCase(node);
     }
 
-    if(out != null)
+    @Override
+    public void caseACharBasic(ACharBasic node)
     {
-      this.out.put(node, out);
+        defaultCase(node);
     }
-    else
+
+    @Override
+    public void caseASetBasic(ASetBasic node)
     {
-      this.out.remove(node);
+        defaultCase(node);
     }
-  }
-  public void caseStart(Start node)
-  {
-    defaultCase(node);
-  }
 
-  public void caseAGrammar(AGrammar node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAStringBasic(AStringBasic node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAHelpers(AHelpers node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAIdBasic(AIdBasic node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAHelperDef(AHelperDef node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseARegExpBasic(ARegExpBasic node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAStates(AStates node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseACharChar(ACharChar node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseATokens(ATokens node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseADecChar(ADecChar node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseATokenDef(ATokenDef node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAHexChar(AHexChar node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAStateList(AStateList node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAOperationSet(AOperationSet node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAStateListTail(AStateListTail node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAIntervalSet(AIntervalSet node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseATransition(ATransition node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAStarUnOp(AStarUnOp node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAIgnTokens(AIgnTokens node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAQMarkUnOp(AQMarkUnOp node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseARegExp(ARegExp node)
-  {
-    defaultCase(node);
-  }
+    @Override
+    public void caseAPlusUnOp(APlusUnOp node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAPlusBinOp(APlusBinOp node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAMinusBinOp(AMinusBinOp node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAProductions(AProductions node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAProd(AProd node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAAlt(AAlt node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAAltTransform(AAltTransform node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseANewTerm(ANewTerm node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAListTerm(AListTerm node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseASimpleTerm(ASimpleTerm node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseANullTerm(ANullTerm node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseANewListTerm(ANewListTerm node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseASimpleListTerm(ASimpleListTerm node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAProdName(AProdName node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAElem(AElem node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseATokenSpecifier(ATokenSpecifier node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAProductionSpecifier(AProductionSpecifier node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAAst(AAst node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAAstProd(AAstProd node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseAAstAlt(AAstAlt node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTPkgId(TPkgId node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTPackage(TPackage node)
+    {
+        defaultCase(node);
+    }
 
-  public void caseAConcat(AConcat node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAUnExp(AUnExp node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseACharBasic(ACharBasic node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseASetBasic(ASetBasic node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAStringBasic(AStringBasic node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAIdBasic(AIdBasic node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseARegExpBasic(ARegExpBasic node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseACharChar(ACharChar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseADecChar(ADecChar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAHexChar(AHexChar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAOperationSet(AOperationSet node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAIntervalSet(AIntervalSet node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAStarUnOp(AStarUnOp node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAQMarkUnOp(AQMarkUnOp node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAPlusUnOp(APlusUnOp node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAPlusBinOp(APlusBinOp node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAMinusBinOp(AMinusBinOp node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAProductions(AProductions node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAProd(AProd node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAAlt(AAlt node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAAltTransform(AAltTransform node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseANewTerm(ANewTerm node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAListTerm(AListTerm node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseASimpleTerm(ASimpleTerm node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseANullTerm(ANullTerm node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseANewListTerm(ANewListTerm node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseASimpleListTerm(ASimpleListTerm node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAProdName(AProdName node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAElem(AElem node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseATokenSpecifier(ATokenSpecifier node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAProductionSpecifier(AProductionSpecifier node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAAst(AAst node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAAstProd(AAstProd node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseAAstAlt(AAstAlt node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTPkgId(TPkgId node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTPackage(TPackage node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTStates(TStates node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTHelpers(THelpers node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTTokens(TTokens node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTIgnored(TIgnored node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTProductions(TProductions node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTAbstract(TAbstract node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTSyntax(TSyntax node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTTree(TTree node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTNew(TNew node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTNull(TNull node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTTokenSpecifier(TTokenSpecifier node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTProductionSpecifier(TProductionSpecifier node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTDot(TDot node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTDDot(TDDot node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTSemicolon(TSemicolon node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTEqual(TEqual node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTLBkt(TLBkt node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTRBkt(TRBkt node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTLPar(TLPar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTRPar(TRPar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTLBrace(TLBrace node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTRBrace(TRBrace node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTPlus(TPlus node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTMinus(TMinus node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTQMark(TQMark node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTStar(TStar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTBar(TBar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTComma(TComma node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTSlash(TSlash node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTArrow(TArrow node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTColon(TColon node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTId(TId node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTChar(TChar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTDecChar(TDecChar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTHexChar(THexChar node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTString(TString node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTBlank(TBlank node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseTComment(TComment node)
-  {
-    defaultCase(node);
-  }
-
-  public void caseEOF(EOF node)
-  {
-    defaultCase(node);
-  }
-
-  public void defaultCase(Node node)
-  {}
+    @Override
+    public void caseTStates(TStates node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTHelpers(THelpers node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTTokens(TTokens node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTIgnored(TIgnored node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTProductions(TProductions node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTAbstract(TAbstract node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTSyntax(TSyntax node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTTree(TTree node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTNew(TNew node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTNull(TNull node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTTokenSpecifier(TTokenSpecifier node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTProductionSpecifier(TProductionSpecifier node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTDot(TDot node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTDDot(TDDot node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTSemicolon(TSemicolon node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTEqual(TEqual node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTLBkt(TLBkt node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTRBkt(TRBkt node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTLPar(TLPar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTRPar(TRPar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTLBrace(TLBrace node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTRBrace(TRBrace node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTPlus(TPlus node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTMinus(TMinus node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTQMark(TQMark node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTStar(TStar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTBar(TBar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTComma(TComma node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTSlash(TSlash node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTArrow(TArrow node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTColon(TColon node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTId(TId node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTChar(TChar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTDecChar(TDecChar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTHexChar(THexChar node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTString(TString node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTBlank(TBlank node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseTComment(TComment node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseEOF(EOF node)
+    {
+        defaultCase(node);
+    }
+
+    @Override
+    public void caseInvalidToken(InvalidToken node)
+    {
+        defaultCase(node);
+    }
+
+    public void defaultCase(@SuppressWarnings("unused") Node node)
+    {
+        // do nothing
+    }
 }
diff --git a/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java b/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
index 156967d..447d821 100644
--- a/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
+++ b/src/org/sablecc/sablecc/analysis/DepthFirstAdapter.java
@@ -7,1124 +7,1174 @@ import org.sablecc.sablecc.node.*;
 
 public class DepthFirstAdapter extends AnalysisAdapter
 {
-  public void inStart(Start node)
-  {
-    defaultIn(node);
-  }
-
-  public void outStart(Start node)
-  {
-    defaultOut(node);
-  }
-
-  public void defaultIn(Node node)
-  {}
-
-  public void defaultOut(Node node)
-  {}
-
-  public void caseStart(Start node)
-  {
-    inStart(node);
-    node.getPGrammar().apply(this);
-    node.getEOF().apply(this);
-    outStart(node);
-  }
-
-  public void inAGrammar(AGrammar node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAGrammar(AGrammar node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAGrammar(AGrammar node)
-  {
-    inAGrammar(node);
+    public void inStart(Start node)
     {
-      Object temp[] = node.getPackage().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((TPkgId) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    if(node.getHelpers() != null)
+
+    public void outStart(Start node)
     {
-      node.getHelpers().apply(this);
+        defaultOut(node);
     }
-    if(node.getStates() != null)
+
+    public void defaultIn(@SuppressWarnings("unused") Node node)
     {
-      node.getStates().apply(this);
+        // Do nothing
     }
-    if(node.getTokens() != null)
+
+    public void defaultOut(@SuppressWarnings("unused") Node node)
     {
-      node.getTokens().apply(this);
+        // Do nothing
     }
-    if(node.getIgnTokens() != null)
+
+    @Override
+    public void caseStart(Start node)
     {
-      node.getIgnTokens().apply(this);
+        inStart(node);
+        node.getPGrammar().apply(this);
+        node.getEOF().apply(this);
+        outStart(node);
     }
-    if(node.getProductions() != null)
+
+    public void inAGrammar(AGrammar node)
     {
-      node.getProductions().apply(this);
+        defaultIn(node);
     }
-    if(node.getAst() != null)
+
+    public void outAGrammar(AGrammar node)
     {
-      node.getAst().apply(this);
+        defaultOut(node);
     }
-    outAGrammar(node);
-  }
 
-  public void inAHelpers(AHelpers node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAHelpers(AHelpers node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAHelpers(AHelpers node)
-  {
-    inAHelpers(node);
+    @Override
+    public void caseAGrammar(AGrammar node)
     {
-      Object temp[] = node.getHelperDefs().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PHelperDef) temp[i]).apply(this);
-      }
+        inAGrammar(node);
+        {
+            List<TPkgId> copy = new ArrayList<TPkgId>(node.getPackage());
+            for(TPkgId e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getHelpers() != null)
+        {
+            node.getHelpers().apply(this);
+        }
+        if(node.getStates() != null)
+        {
+            node.getStates().apply(this);
+        }
+        if(node.getTokens() != null)
+        {
+            node.getTokens().apply(this);
+        }
+        if(node.getIgnTokens() != null)
+        {
+            node.getIgnTokens().apply(this);
+        }
+        if(node.getProductions() != null)
+        {
+            node.getProductions().apply(this);
+        }
+        if(node.getAst() != null)
+        {
+            node.getAst().apply(this);
+        }
+        outAGrammar(node);
     }
-    outAHelpers(node);
-  }
-
-  public void inAHelperDef(AHelperDef node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAHelperDef(AHelperDef node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAHelperDef(AHelperDef node)
-  {
-    inAHelperDef(node);
-    if(node.getId() != null)
+    public void inAHelpers(AHelpers node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getRegExp() != null)
+
+    public void outAHelpers(AHelpers node)
     {
-      node.getRegExp().apply(this);
+        defaultOut(node);
     }
-    outAHelperDef(node);
-  }
-
-  public void inAStates(AStates node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAStates(AStates node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAStates(AStates node)
-  {
-    inAStates(node);
+    @Override
+    public void caseAHelpers(AHelpers node)
     {
-      Object temp[] = node.getListId().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((TId) temp[i]).apply(this);
-      }
+        inAHelpers(node);
+        {
+            List<PHelperDef> copy = new ArrayList<PHelperDef>(node.getHelperDefs());
+            for(PHelperDef e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAHelpers(node);
     }
-    outAStates(node);
-  }
-
-  public void inATokens(ATokens node)
-  {
-    defaultIn(node);
-  }
-
-  public void outATokens(ATokens node)
-  {
-    defaultOut(node);
-  }
 
-  public void caseATokens(ATokens node)
-  {
-    inATokens(node);
+    public void inAHelperDef(AHelperDef node)
     {
-      Object temp[] = node.getTokenDefs().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PTokenDef) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outATokens(node);
-  }
 
-  public void inATokenDef(ATokenDef node)
-  {
-    defaultIn(node);
-  }
-
-  public void outATokenDef(ATokenDef node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseATokenDef(ATokenDef node)
-  {
-    inATokenDef(node);
-    if(node.getStateList() != null)
+    public void outAHelperDef(AHelperDef node)
     {
-      node.getStateList().apply(this);
+        defaultOut(node);
     }
-    if(node.getId() != null)
+
+    @Override
+    public void caseAHelperDef(AHelperDef node)
     {
-      node.getId().apply(this);
+        inAHelperDef(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getRegExp() != null)
+        {
+            node.getRegExp().apply(this);
+        }
+        outAHelperDef(node);
     }
-    if(node.getRegExp() != null)
+
+    public void inAStates(AStates node)
     {
-      node.getRegExp().apply(this);
+        defaultIn(node);
     }
-    if(node.getSlash() != null)
+
+    public void outAStates(AStates node)
     {
-      node.getSlash().apply(this);
+        defaultOut(node);
     }
-    if(node.getLookAhead() != null)
+
+    @Override
+    public void caseAStates(AStates node)
     {
-      node.getLookAhead().apply(this);
+        inAStates(node);
+        {
+            List<TId> copy = new ArrayList<TId>(node.getListId());
+            for(TId e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAStates(node);
     }
-    outATokenDef(node);
-  }
-
-  public void inAStateList(AStateList node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAStateList(AStateList node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAStateList(AStateList node)
-  {
-    inAStateList(node);
-    if(node.getId() != null)
+    public void inATokens(ATokens node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getTransition() != null)
+
+    public void outATokens(ATokens node)
     {
-      node.getTransition().apply(this);
+        defaultOut(node);
     }
+
+    @Override
+    public void caseATokens(ATokens node)
     {
-      Object temp[] = node.getStateLists().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PStateListTail) temp[i]).apply(this);
-      }
+        inATokens(node);
+        {
+            List<PTokenDef> copy = new ArrayList<PTokenDef>(node.getTokenDefs());
+            for(PTokenDef e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outATokens(node);
     }
-    outAStateList(node);
-  }
 
-  public void inAStateListTail(AStateListTail node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAStateListTail(AStateListTail node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAStateListTail(AStateListTail node)
-  {
-    inAStateListTail(node);
-    if(node.getId() != null)
+    public void inATokenDef(ATokenDef node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getTransition() != null)
+
+    public void outATokenDef(ATokenDef node)
     {
-      node.getTransition().apply(this);
+        defaultOut(node);
     }
-    outAStateListTail(node);
-  }
 
-  public void inATransition(ATransition node)
-  {
-    defaultIn(node);
-  }
-
-  public void outATransition(ATransition node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseATransition(ATransition node)
-  {
-    inATransition(node);
-    if(node.getId() != null)
+    @Override
+    public void caseATokenDef(ATokenDef node)
     {
-      node.getId().apply(this);
+        inATokenDef(node);
+        if(node.getStateList() != null)
+        {
+            node.getStateList().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getRegExp() != null)
+        {
+            node.getRegExp().apply(this);
+        }
+        if(node.getSlash() != null)
+        {
+            node.getSlash().apply(this);
+        }
+        if(node.getLookAhead() != null)
+        {
+            node.getLookAhead().apply(this);
+        }
+        outATokenDef(node);
     }
-    outATransition(node);
-  }
-
-  public void inAIgnTokens(AIgnTokens node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAIgnTokens(AIgnTokens node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAIgnTokens(AIgnTokens node)
-  {
-    inAIgnTokens(node);
+    public void inAStateList(AStateList node)
     {
-      Object temp[] = node.getListId().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((TId) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outAIgnTokens(node);
-  }
-
-  public void inARegExp(ARegExp node)
-  {
-    defaultIn(node);
-  }
-
-  public void outARegExp(ARegExp node)
-  {
-    defaultOut(node);
-  }
 
-  public void caseARegExp(ARegExp node)
-  {
-    inARegExp(node);
+    public void outAStateList(AStateList node)
     {
-      Object temp[] = node.getConcats().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PConcat) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    outARegExp(node);
-  }
 
-  public void inAConcat(AConcat node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAConcat(AConcat node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAConcat(AConcat node)
-  {
-    inAConcat(node);
+    @Override
+    public void caseAStateList(AStateList node)
     {
-      Object temp[] = node.getUnExps().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PUnExp) temp[i]).apply(this);
-      }
+        inAStateList(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getTransition() != null)
+        {
+            node.getTransition().apply(this);
+        }
+        {
+            List<PStateListTail> copy = new ArrayList<PStateListTail>(node.getStateLists());
+            for(PStateListTail e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAStateList(node);
     }
-    outAConcat(node);
-  }
-
-  public void inAUnExp(AUnExp node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAUnExp(AUnExp node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAUnExp(AUnExp node)
-  {
-    inAUnExp(node);
-    if(node.getBasic() != null)
-    {
-      node.getBasic().apply(this);
-    }
-    if(node.getUnOp() != null)
-    {
-      node.getUnOp().apply(this);
+    public void inAStateListTail(AStateListTail node)
+    {
+        defaultIn(node);
     }
-    outAUnExp(node);
-  }
 
-  public void inACharBasic(ACharBasic node)
-  {
-    defaultIn(node);
-  }
-
-  public void outACharBasic(ACharBasic node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseACharBasic(ACharBasic node)
-  {
-    inACharBasic(node);
-    if(node.getChar() != null)
-    {
-      node.getChar().apply(this);
+    public void outAStateListTail(AStateListTail node)
+    {
+        defaultOut(node);
     }
-    outACharBasic(node);
-  }
-
-  public void inASetBasic(ASetBasic node)
-  {
-    defaultIn(node);
-  }
 
-  public void outASetBasic(ASetBasic node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseASetBasic(ASetBasic node)
-  {
-    inASetBasic(node);
-    if(node.getSet() != null)
+    @Override
+    public void caseAStateListTail(AStateListTail node)
     {
-      node.getSet().apply(this);
+        inAStateListTail(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getTransition() != null)
+        {
+            node.getTransition().apply(this);
+        }
+        outAStateListTail(node);
     }
-    outASetBasic(node);
-  }
-
-  public void inAStringBasic(AStringBasic node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAStringBasic(AStringBasic node)
-  {
-    defaultOut(node);
-  }
 
-  public void caseAStringBasic(AStringBasic node)
-  {
-    inAStringBasic(node);
-    if(node.getString() != null)
+    public void inATransition(ATransition node)
     {
-      node.getString().apply(this);
+        defaultIn(node);
     }
-    outAStringBasic(node);
-  }
 
-  public void inAIdBasic(AIdBasic node)
-  {
-    defaultIn(node);
-  }
+    public void outATransition(ATransition node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAIdBasic(AIdBasic node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseATransition(ATransition node)
+    {
+        inATransition(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outATransition(node);
+    }
 
-  public void caseAIdBasic(AIdBasic node)
-  {
-    inAIdBasic(node);
-    if(node.getId() != null)
+    public void inAIgnTokens(AIgnTokens node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    outAIdBasic(node);
-  }
 
-  public void inARegExpBasic(ARegExpBasic node)
-  {
-    defaultIn(node);
-  }
+    public void outAIgnTokens(AIgnTokens node)
+    {
+        defaultOut(node);
+    }
 
-  public void outARegExpBasic(ARegExpBasic node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAIgnTokens(AIgnTokens node)
+    {
+        inAIgnTokens(node);
+        {
+            List<TId> copy = new ArrayList<TId>(node.getListId());
+            for(TId e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAIgnTokens(node);
+    }
 
-  public void caseARegExpBasic(ARegExpBasic node)
-  {
-    inARegExpBasic(node);
-    if(node.getRegExp() != null)
+    public void inARegExp(ARegExp node)
     {
-      node.getRegExp().apply(this);
+        defaultIn(node);
     }
-    outARegExpBasic(node);
-  }
 
-  public void inACharChar(ACharChar node)
-  {
-    defaultIn(node);
-  }
+    public void outARegExp(ARegExp node)
+    {
+        defaultOut(node);
+    }
 
-  public void outACharChar(ACharChar node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseARegExp(ARegExp node)
+    {
+        inARegExp(node);
+        {
+            List<PConcat> copy = new ArrayList<PConcat>(node.getConcats());
+            for(PConcat e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outARegExp(node);
+    }
 
-  public void caseACharChar(ACharChar node)
-  {
-    inACharChar(node);
-    if(node.getChar() != null)
+    public void inAConcat(AConcat node)
     {
-      node.getChar().apply(this);
+        defaultIn(node);
     }
-    outACharChar(node);
-  }
 
-  public void inADecChar(ADecChar node)
-  {
-    defaultIn(node);
-  }
+    public void outAConcat(AConcat node)
+    {
+        defaultOut(node);
+    }
 
-  public void outADecChar(ADecChar node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAConcat(AConcat node)
+    {
+        inAConcat(node);
+        {
+            List<PUnExp> copy = new ArrayList<PUnExp>(node.getUnExps());
+            for(PUnExp e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAConcat(node);
+    }
 
-  public void caseADecChar(ADecChar node)
-  {
-    inADecChar(node);
-    if(node.getDecChar() != null)
+    public void inAUnExp(AUnExp node)
     {
-      node.getDecChar().apply(this);
+        defaultIn(node);
     }
-    outADecChar(node);
-  }
 
-  public void inAHexChar(AHexChar node)
-  {
-    defaultIn(node);
-  }
+    public void outAUnExp(AUnExp node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAHexChar(AHexChar node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAUnExp(AUnExp node)
+    {
+        inAUnExp(node);
+        if(node.getBasic() != null)
+        {
+            node.getBasic().apply(this);
+        }
+        if(node.getUnOp() != null)
+        {
+            node.getUnOp().apply(this);
+        }
+        outAUnExp(node);
+    }
 
-  public void caseAHexChar(AHexChar node)
-  {
-    inAHexChar(node);
-    if(node.getHexChar() != null)
+    public void inACharBasic(ACharBasic node)
     {
-      node.getHexChar().apply(this);
+        defaultIn(node);
     }
-    outAHexChar(node);
-  }
 
-  public void inAOperationSet(AOperationSet node)
-  {
-    defaultIn(node);
-  }
+    public void outACharBasic(ACharBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAOperationSet(AOperationSet node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseACharBasic(ACharBasic node)
+    {
+        inACharBasic(node);
+        if(node.getChar() != null)
+        {
+            node.getChar().apply(this);
+        }
+        outACharBasic(node);
+    }
 
-  public void caseAOperationSet(AOperationSet node)
-  {
-    inAOperationSet(node);
-    if(node.getLeft() != null)
+    public void inASetBasic(ASetBasic node)
     {
-      node.getLeft().apply(this);
+        defaultIn(node);
     }
-    if(node.getBinOp() != null)
+
+    public void outASetBasic(ASetBasic node)
     {
-      node.getBinOp().apply(this);
+        defaultOut(node);
     }
-    if(node.getRight() != null)
+
+    @Override
+    public void caseASetBasic(ASetBasic node)
     {
-      node.getRight().apply(this);
+        inASetBasic(node);
+        if(node.getSet() != null)
+        {
+            node.getSet().apply(this);
+        }
+        outASetBasic(node);
     }
-    outAOperationSet(node);
-  }
 
-  public void inAIntervalSet(AIntervalSet node)
-  {
-    defaultIn(node);
-  }
+    public void inAStringBasic(AStringBasic node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAIntervalSet(AIntervalSet node)
-  {
-    defaultOut(node);
-  }
+    public void outAStringBasic(AStringBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAIntervalSet(AIntervalSet node)
-  {
-    inAIntervalSet(node);
-    if(node.getLeft() != null)
+    @Override
+    public void caseAStringBasic(AStringBasic node)
     {
-      node.getLeft().apply(this);
+        inAStringBasic(node);
+        if(node.getString() != null)
+        {
+            node.getString().apply(this);
+        }
+        outAStringBasic(node);
     }
-    if(node.getRight() != null)
+
+    public void inAIdBasic(AIdBasic node)
     {
-      node.getRight().apply(this);
+        defaultIn(node);
     }
-    outAIntervalSet(node);
-  }
 
-  public void inAStarUnOp(AStarUnOp node)
-  {
-    defaultIn(node);
-  }
+    public void outAIdBasic(AIdBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAStarUnOp(AStarUnOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAIdBasic(AIdBasic node)
+    {
+        inAIdBasic(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAIdBasic(node);
+    }
 
-  public void caseAStarUnOp(AStarUnOp node)
-  {
-    inAStarUnOp(node);
-    if(node.getStar() != null)
+    public void inARegExpBasic(ARegExpBasic node)
     {
-      node.getStar().apply(this);
+        defaultIn(node);
     }
-    outAStarUnOp(node);
-  }
 
-  public void inAQMarkUnOp(AQMarkUnOp node)
-  {
-    defaultIn(node);
-  }
+    public void outARegExpBasic(ARegExpBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAQMarkUnOp(AQMarkUnOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseARegExpBasic(ARegExpBasic node)
+    {
+        inARegExpBasic(node);
+        if(node.getRegExp() != null)
+        {
+            node.getRegExp().apply(this);
+        }
+        outARegExpBasic(node);
+    }
 
-  public void caseAQMarkUnOp(AQMarkUnOp node)
-  {
-    inAQMarkUnOp(node);
-    if(node.getQMark() != null)
+    public void inACharChar(ACharChar node)
     {
-      node.getQMark().apply(this);
+        defaultIn(node);
     }
-    outAQMarkUnOp(node);
-  }
 
-  public void inAPlusUnOp(APlusUnOp node)
-  {
-    defaultIn(node);
-  }
+    public void outACharChar(ACharChar node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAPlusUnOp(APlusUnOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseACharChar(ACharChar node)
+    {
+        inACharChar(node);
+        if(node.getChar() != null)
+        {
+            node.getChar().apply(this);
+        }
+        outACharChar(node);
+    }
 
-  public void caseAPlusUnOp(APlusUnOp node)
-  {
-    inAPlusUnOp(node);
-    if(node.getPlus() != null)
+    public void inADecChar(ADecChar node)
     {
-      node.getPlus().apply(this);
+        defaultIn(node);
     }
-    outAPlusUnOp(node);
-  }
 
-  public void inAPlusBinOp(APlusBinOp node)
-  {
-    defaultIn(node);
-  }
+    public void outADecChar(ADecChar node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAPlusBinOp(APlusBinOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseADecChar(ADecChar node)
+    {
+        inADecChar(node);
+        if(node.getDecChar() != null)
+        {
+            node.getDecChar().apply(this);
+        }
+        outADecChar(node);
+    }
 
-  public void caseAPlusBinOp(APlusBinOp node)
-  {
-    inAPlusBinOp(node);
-    outAPlusBinOp(node);
-  }
+    public void inAHexChar(AHexChar node)
+    {
+        defaultIn(node);
+    }
 
-  public void inAMinusBinOp(AMinusBinOp node)
-  {
-    defaultIn(node);
-  }
+    public void outAHexChar(AHexChar node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAMinusBinOp(AMinusBinOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAHexChar(AHexChar node)
+    {
+        inAHexChar(node);
+        if(node.getHexChar() != null)
+        {
+            node.getHexChar().apply(this);
+        }
+        outAHexChar(node);
+    }
 
-  public void caseAMinusBinOp(AMinusBinOp node)
-  {
-    inAMinusBinOp(node);
-    outAMinusBinOp(node);
-  }
+    public void inAOperationSet(AOperationSet node)
+    {
+        defaultIn(node);
+    }
 
-  public void inAProductions(AProductions node)
-  {
-    defaultIn(node);
-  }
+    public void outAOperationSet(AOperationSet node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAProductions(AProductions node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAOperationSet(AOperationSet node)
+    {
+        inAOperationSet(node);
+        if(node.getLeft() != null)
+        {
+            node.getLeft().apply(this);
+        }
+        if(node.getBinOp() != null)
+        {
+            node.getBinOp().apply(this);
+        }
+        if(node.getRight() != null)
+        {
+            node.getRight().apply(this);
+        }
+        outAOperationSet(node);
+    }
 
-  public void caseAProductions(AProductions node)
-  {
-    inAProductions(node);
+    public void inAIntervalSet(AIntervalSet node)
     {
-      Object temp[] = node.getProds().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PProd) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outAProductions(node);
-  }
 
-  public void inAProd(AProd node)
-  {
-    defaultIn(node);
-  }
+    public void outAIntervalSet(AIntervalSet node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAProd(AProd node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAIntervalSet(AIntervalSet node)
+    {
+        inAIntervalSet(node);
+        if(node.getLeft() != null)
+        {
+            node.getLeft().apply(this);
+        }
+        if(node.getRight() != null)
+        {
+            node.getRight().apply(this);
+        }
+        outAIntervalSet(node);
+    }
 
-  public void caseAProd(AProd node)
-  {
-    inAProd(node);
-    if(node.getId() != null)
+    public void inAStarUnOp(AStarUnOp node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getArrow() != null)
+
+    public void outAStarUnOp(AStarUnOp node)
     {
-      node.getArrow().apply(this);
+        defaultOut(node);
     }
+
+    @Override
+    public void caseAStarUnOp(AStarUnOp node)
     {
-      Object temp[] = node.getProdTransform().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PElem) temp[i]).apply(this);
-      }
+        inAStarUnOp(node);
+        if(node.getStar() != null)
+        {
+            node.getStar().apply(this);
+        }
+        outAStarUnOp(node);
     }
+
+    public void inAQMarkUnOp(AQMarkUnOp node)
     {
-      Object temp[] = node.getAlts().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PAlt) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outAProd(node);
-  }
 
-  public void inAAlt(AAlt node)
-  {
-    defaultIn(node);
-  }
+    public void outAQMarkUnOp(AQMarkUnOp node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAAlt(AAlt node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAQMarkUnOp(AQMarkUnOp node)
+    {
+        inAQMarkUnOp(node);
+        if(node.getQMark() != null)
+        {
+            node.getQMark().apply(this);
+        }
+        outAQMarkUnOp(node);
+    }
 
-  public void caseAAlt(AAlt node)
-  {
-    inAAlt(node);
-    if(node.getAltName() != null)
+    public void inAPlusUnOp(APlusUnOp node)
     {
-      node.getAltName().apply(this);
+        defaultIn(node);
     }
+
+    public void outAPlusUnOp(APlusUnOp node)
     {
-      Object temp[] = node.getElems().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PElem) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    if(node.getAltTransform() != null)
+
+    @Override
+    public void caseAPlusUnOp(APlusUnOp node)
     {
-      node.getAltTransform().apply(this);
+        inAPlusUnOp(node);
+        if(node.getPlus() != null)
+        {
+            node.getPlus().apply(this);
+        }
+        outAPlusUnOp(node);
     }
-    outAAlt(node);
-  }
 
-  public void inAAltTransform(AAltTransform node)
-  {
-    defaultIn(node);
-  }
+    public void inAPlusBinOp(APlusBinOp node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAAltTransform(AAltTransform node)
-  {
-    defaultOut(node);
-  }
+    public void outAPlusBinOp(APlusBinOp node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAAltTransform(AAltTransform node)
-  {
-    inAAltTransform(node);
-    if(node.getLBrace() != null)
+    @Override
+    public void caseAPlusBinOp(APlusBinOp node)
     {
-      node.getLBrace().apply(this);
+        inAPlusBinOp(node);
+        outAPlusBinOp(node);
     }
+
+    public void inAMinusBinOp(AMinusBinOp node)
     {
-      Object temp[] = node.getTerms().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PTerm) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    if(node.getRBrace() != null)
+
+    public void outAMinusBinOp(AMinusBinOp node)
     {
-      node.getRBrace().apply(this);
+        defaultOut(node);
     }
-    outAAltTransform(node);
-  }
 
-  public void inANewTerm(ANewTerm node)
-  {
-    defaultIn(node);
-  }
+    @Override
+    public void caseAMinusBinOp(AMinusBinOp node)
+    {
+        inAMinusBinOp(node);
+        outAMinusBinOp(node);
+    }
 
-  public void outANewTerm(ANewTerm node)
-  {
-    defaultOut(node);
-  }
+    public void inAProductions(AProductions node)
+    {
+        defaultIn(node);
+    }
 
-  public void caseANewTerm(ANewTerm node)
-  {
-    inANewTerm(node);
-    if(node.getProdName() != null)
+    public void outAProductions(AProductions node)
     {
-      node.getProdName().apply(this);
+        defaultOut(node);
     }
-    if(node.getLPar() != null)
+
+    @Override
+    public void caseAProductions(AProductions node)
     {
-      node.getLPar().apply(this);
+        inAProductions(node);
+        {
+            List<PProd> copy = new ArrayList<PProd>(node.getProds());
+            for(PProd e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAProductions(node);
     }
+
+    public void inAProd(AProd node)
     {
-      Object temp[] = node.getParams().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PTerm) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outANewTerm(node);
-  }
 
-  public void inAListTerm(AListTerm node)
-  {
-    defaultIn(node);
-  }
+    public void outAProd(AProd node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAListTerm(AListTerm node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAProd(AProd node)
+    {
+        inAProd(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getArrow() != null)
+        {
+            node.getArrow().apply(this);
+        }
+        {
+            List<PElem> copy = new ArrayList<PElem>(node.getProdTransform());
+            for(PElem e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        {
+            List<PAlt> copy = new ArrayList<PAlt>(node.getAlts());
+            for(PAlt e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAProd(node);
+    }
 
-  public void caseAListTerm(AListTerm node)
-  {
-    inAListTerm(node);
-    if(node.getLBkt() != null)
+    public void inAAlt(AAlt node)
     {
-      node.getLBkt().apply(this);
+        defaultIn(node);
     }
+
+    public void outAAlt(AAlt node)
     {
-      Object temp[] = node.getListTerms().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PListTerm) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    outAListTerm(node);
-  }
 
-  public void inASimpleTerm(ASimpleTerm node)
-  {
-    defaultIn(node);
-  }
+    @Override
+    public void caseAAlt(AAlt node)
+    {
+        inAAlt(node);
+        if(node.getAltName() != null)
+        {
+            node.getAltName().apply(this);
+        }
+        {
+            List<PElem> copy = new ArrayList<PElem>(node.getElems());
+            for(PElem e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getAltTransform() != null)
+        {
+            node.getAltTransform().apply(this);
+        }
+        outAAlt(node);
+    }
 
-  public void outASimpleTerm(ASimpleTerm node)
-  {
-    defaultOut(node);
-  }
+    public void inAAltTransform(AAltTransform node)
+    {
+        defaultIn(node);
+    }
 
-  public void caseASimpleTerm(ASimpleTerm node)
-  {
-    inASimpleTerm(node);
-    if(node.getSpecifier() != null)
+    public void outAAltTransform(AAltTransform node)
     {
-      node.getSpecifier().apply(this);
+        defaultOut(node);
     }
-    if(node.getId() != null)
+
+    @Override
+    public void caseAAltTransform(AAltTransform node)
     {
-      node.getId().apply(this);
+        inAAltTransform(node);
+        if(node.getLBrace() != null)
+        {
+            node.getLBrace().apply(this);
+        }
+        {
+            List<PTerm> copy = new ArrayList<PTerm>(node.getTerms());
+            for(PTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getRBrace() != null)
+        {
+            node.getRBrace().apply(this);
+        }
+        outAAltTransform(node);
     }
-    if(node.getSimpleTermTail() != null)
+
+    public void inANewTerm(ANewTerm node)
     {
-      node.getSimpleTermTail().apply(this);
+        defaultIn(node);
     }
-    outASimpleTerm(node);
-  }
 
-  public void inANullTerm(ANullTerm node)
-  {
-    defaultIn(node);
-  }
+    public void outANewTerm(ANewTerm node)
+    {
+        defaultOut(node);
+    }
 
-  public void outANullTerm(ANullTerm node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseANewTerm(ANewTerm node)
+    {
+        inANewTerm(node);
+        if(node.getProdName() != null)
+        {
+            node.getProdName().apply(this);
+        }
+        if(node.getLPar() != null)
+        {
+            node.getLPar().apply(this);
+        }
+        {
+            List<PTerm> copy = new ArrayList<PTerm>(node.getParams());
+            for(PTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outANewTerm(node);
+    }
 
-  public void caseANullTerm(ANullTerm node)
-  {
-    inANullTerm(node);
-    outANullTerm(node);
-  }
+    public void inAListTerm(AListTerm node)
+    {
+        defaultIn(node);
+    }
 
-  public void inANewListTerm(ANewListTerm node)
-  {
-    defaultIn(node);
-  }
+    public void outAListTerm(AListTerm node)
+    {
+        defaultOut(node);
+    }
 
-  public void outANewListTerm(ANewListTerm node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAListTerm(AListTerm node)
+    {
+        inAListTerm(node);
+        if(node.getLBkt() != null)
+        {
+            node.getLBkt().apply(this);
+        }
+        {
+            List<PListTerm> copy = new ArrayList<PListTerm>(node.getListTerms());
+            for(PListTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAListTerm(node);
+    }
 
-  public void caseANewListTerm(ANewListTerm node)
-  {
-    inANewListTerm(node);
-    if(node.getProdName() != null)
+    public void inASimpleTerm(ASimpleTerm node)
     {
-      node.getProdName().apply(this);
+        defaultIn(node);
     }
-    if(node.getLPar() != null)
+
+    public void outASimpleTerm(ASimpleTerm node)
     {
-      node.getLPar().apply(this);
+        defaultOut(node);
     }
+
+    @Override
+    public void caseASimpleTerm(ASimpleTerm node)
     {
-      Object temp[] = node.getParams().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PTerm) temp[i]).apply(this);
-      }
+        inASimpleTerm(node);
+        if(node.getSpecifier() != null)
+        {
+            node.getSpecifier().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getSimpleTermTail() != null)
+        {
+            node.getSimpleTermTail().apply(this);
+        }
+        outASimpleTerm(node);
     }
-    outANewListTerm(node);
-  }
 
-  public void inASimpleListTerm(ASimpleListTerm node)
-  {
-    defaultIn(node);
-  }
+    public void inANullTerm(ANullTerm node)
+    {
+        defaultIn(node);
+    }
 
-  public void outASimpleListTerm(ASimpleListTerm node)
-  {
-    defaultOut(node);
-  }
+    public void outANullTerm(ANullTerm node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseASimpleListTerm(ASimpleListTerm node)
-  {
-    inASimpleListTerm(node);
-    if(node.getSpecifier() != null)
+    @Override
+    public void caseANullTerm(ANullTerm node)
     {
-      node.getSpecifier().apply(this);
+        inANullTerm(node);
+        outANullTerm(node);
     }
-    if(node.getId() != null)
+
+    public void inANewListTerm(ANewListTerm node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getSimpleTermTail() != null)
+
+    public void outANewListTerm(ANewListTerm node)
     {
-      node.getSimpleTermTail().apply(this);
+        defaultOut(node);
     }
-    outASimpleListTerm(node);
-  }
 
-  public void inAProdName(AProdName node)
-  {
-    defaultIn(node);
-  }
+    @Override
+    public void caseANewListTerm(ANewListTerm node)
+    {
+        inANewListTerm(node);
+        if(node.getProdName() != null)
+        {
+            node.getProdName().apply(this);
+        }
+        if(node.getLPar() != null)
+        {
+            node.getLPar().apply(this);
+        }
+        {
+            List<PTerm> copy = new ArrayList<PTerm>(node.getParams());
+            for(PTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outANewListTerm(node);
+    }
 
-  public void outAProdName(AProdName node)
-  {
-    defaultOut(node);
-  }
+    public void inASimpleListTerm(ASimpleListTerm node)
+    {
+        defaultIn(node);
+    }
 
-  public void caseAProdName(AProdName node)
-  {
-    inAProdName(node);
-    if(node.getId() != null)
+    public void outASimpleListTerm(ASimpleListTerm node)
     {
-      node.getId().apply(this);
+        defaultOut(node);
     }
-    if(node.getProdNameTail() != null)
+
+    @Override
+    public void caseASimpleListTerm(ASimpleListTerm node)
     {
-      node.getProdNameTail().apply(this);
+        inASimpleListTerm(node);
+        if(node.getSpecifier() != null)
+        {
+            node.getSpecifier().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getSimpleTermTail() != null)
+        {
+            node.getSimpleTermTail().apply(this);
+        }
+        outASimpleListTerm(node);
     }
-    outAProdName(node);
-  }
 
-  public void inAElem(AElem node)
-  {
-    defaultIn(node);
-  }
+    public void inAProdName(AProdName node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAElem(AElem node)
-  {
-    defaultOut(node);
-  }
+    public void outAProdName(AProdName node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAElem(AElem node)
-  {
-    inAElem(node);
-    if(node.getElemName() != null)
+    @Override
+    public void caseAProdName(AProdName node)
     {
-      node.getElemName().apply(this);
+        inAProdName(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getProdNameTail() != null)
+        {
+            node.getProdNameTail().apply(this);
+        }
+        outAProdName(node);
     }
-    if(node.getSpecifier() != null)
+
+    public void inAElem(AElem node)
     {
-      node.getSpecifier().apply(this);
+        defaultIn(node);
     }
-    if(node.getId() != null)
+
+    public void outAElem(AElem node)
     {
-      node.getId().apply(this);
+        defaultOut(node);
     }
-    if(node.getUnOp() != null)
+
+    @Override
+    public void caseAElem(AElem node)
     {
-      node.getUnOp().apply(this);
+        inAElem(node);
+        if(node.getElemName() != null)
+        {
+            node.getElemName().apply(this);
+        }
+        if(node.getSpecifier() != null)
+        {
+            node.getSpecifier().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getUnOp() != null)
+        {
+            node.getUnOp().apply(this);
+        }
+        outAElem(node);
     }
-    outAElem(node);
-  }
 
-  public void inATokenSpecifier(ATokenSpecifier node)
-  {
-    defaultIn(node);
-  }
+    public void inATokenSpecifier(ATokenSpecifier node)
+    {
+        defaultIn(node);
+    }
 
-  public void outATokenSpecifier(ATokenSpecifier node)
-  {
-    defaultOut(node);
-  }
+    public void outATokenSpecifier(ATokenSpecifier node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseATokenSpecifier(ATokenSpecifier node)
-  {
-    inATokenSpecifier(node);
-    outATokenSpecifier(node);
-  }
+    @Override
+    public void caseATokenSpecifier(ATokenSpecifier node)
+    {
+        inATokenSpecifier(node);
+        outATokenSpecifier(node);
+    }
 
-  public void inAProductionSpecifier(AProductionSpecifier node)
-  {
-    defaultIn(node);
-  }
+    public void inAProductionSpecifier(AProductionSpecifier node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAProductionSpecifier(AProductionSpecifier node)
-  {
-    defaultOut(node);
-  }
+    public void outAProductionSpecifier(AProductionSpecifier node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAProductionSpecifier(AProductionSpecifier node)
-  {
-    inAProductionSpecifier(node);
-    outAProductionSpecifier(node);
-  }
+    @Override
+    public void caseAProductionSpecifier(AProductionSpecifier node)
+    {
+        inAProductionSpecifier(node);
+        outAProductionSpecifier(node);
+    }
 
-  public void inAAst(AAst node)
-  {
-    defaultIn(node);
-  }
+    public void inAAst(AAst node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAAst(AAst node)
-  {
-    defaultOut(node);
-  }
+    public void outAAst(AAst node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAAst(AAst node)
-  {
-    inAAst(node);
+    @Override
+    public void caseAAst(AAst node)
     {
-      Object temp[] = node.getProds().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PAstProd) temp[i]).apply(this);
-      }
+        inAAst(node);
+        {
+            List<PAstProd> copy = new ArrayList<PAstProd>(node.getProds());
+            for(PAstProd e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAAst(node);
     }
-    outAAst(node);
-  }
 
-  public void inAAstProd(AAstProd node)
-  {
-    defaultIn(node);
-  }
+    public void inAAstProd(AAstProd node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAAstProd(AAstProd node)
-  {
-    defaultOut(node);
-  }
+    public void outAAstProd(AAstProd node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAAstProd(AAstProd node)
-  {
-    inAAstProd(node);
-    if(node.getId() != null)
+    @Override
+    public void caseAAstProd(AAstProd node)
     {
-      node.getId().apply(this);
+        inAAstProd(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        {
+            List<PAstAlt> copy = new ArrayList<PAstAlt>(node.getAlts());
+            for(PAstAlt e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAAstProd(node);
     }
+
+    public void inAAstAlt(AAstAlt node)
     {
-      Object temp[] = node.getAlts().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PAstAlt) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outAAstProd(node);
-  }
 
-  public void inAAstAlt(AAstAlt node)
-  {
-    defaultIn(node);
-  }
+    public void outAAstAlt(AAstAlt node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAAstAlt(AAstAlt node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAAstAlt(AAstAlt node)
-  {
-    inAAstAlt(node);
-    if(node.getAltName() != null)
-    {
-      node.getAltName().apply(this);
-    }
-    {
-      Object temp[] = node.getElems().toArray();
-      for(int i = 0; i < temp.length; i++)
-      {
-        ((PElem) temp[i]).apply(this);
-      }
-    }
-    outAAstAlt(node);
-  }
+    @Override
+    public void caseAAstAlt(AAstAlt node)
+    {
+        inAAstAlt(node);
+        if(node.getAltName() != null)
+        {
+            node.getAltName().apply(this);
+        }
+        {
+            List<PElem> copy = new ArrayList<PElem>(node.getElems());
+            for(PElem e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAAstAlt(node);
+    }
 }
diff --git a/src/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java b/src/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
index b5401eb..4778a91 100644
--- a/src/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
+++ b/src/org/sablecc/sablecc/analysis/ReversedDepthFirstAdapter.java
@@ -2,1128 +2,1198 @@
 
 package org.sablecc.sablecc.analysis;
 
+import java.util.*;
 import org.sablecc.sablecc.node.*;
 
 public class ReversedDepthFirstAdapter extends AnalysisAdapter
 {
-  public void inStart(Start node)
-  {
-    defaultIn(node);
-  }
-
-  public void outStart(Start node)
-  {
-    defaultOut(node);
-  }
-
-  public void defaultIn(Node node)
-  {}
-
-  public void defaultOut(Node node)
-  {}
-
-  public void caseStart(Start node)
-  {
-    inStart(node);
-    node.getEOF().apply(this);
-    node.getPGrammar().apply(this);
-    outStart(node);
-  }
-
-  public void inAGrammar(AGrammar node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAGrammar(AGrammar node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAGrammar(AGrammar node)
-  {
-    inAGrammar(node);
-    if(node.getAst() != null)
+    public void inStart(Start node)
     {
-      node.getAst().apply(this);
+        defaultIn(node);
     }
-    if(node.getProductions() != null)
+
+    public void outStart(Start node)
     {
-      node.getProductions().apply(this);
+        defaultOut(node);
     }
-    if(node.getIgnTokens() != null)
+
+    public void defaultIn(@SuppressWarnings("unused") Node node)
     {
-      node.getIgnTokens().apply(this);
+        // Do nothing
     }
-    if(node.getTokens() != null)
+
+    public void defaultOut(@SuppressWarnings("unused") Node node)
     {
-      node.getTokens().apply(this);
+        // Do nothing
     }
-    if(node.getStates() != null)
+
+    @Override
+    public void caseStart(Start node)
     {
-      node.getStates().apply(this);
+        inStart(node);
+        node.getEOF().apply(this);
+        node.getPGrammar().apply(this);
+        outStart(node);
     }
-    if(node.getHelpers() != null)
+
+    public void inAGrammar(AGrammar node)
     {
-      node.getHelpers().apply(this);
+        defaultIn(node);
     }
+
+    public void outAGrammar(AGrammar node)
     {
-      Object temp[] = node.getPackage().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((TPkgId) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    outAGrammar(node);
-  }
 
-  public void inAHelpers(AHelpers node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAHelpers(AHelpers node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAHelpers(AHelpers node)
-  {
-    inAHelpers(node);
+    @Override
+    public void caseAGrammar(AGrammar node)
     {
-      Object temp[] = node.getHelperDefs().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PHelperDef) temp[i]).apply(this);
-      }
+        inAGrammar(node);
+        if(node.getAst() != null)
+        {
+            node.getAst().apply(this);
+        }
+        if(node.getProductions() != null)
+        {
+            node.getProductions().apply(this);
+        }
+        if(node.getIgnTokens() != null)
+        {
+            node.getIgnTokens().apply(this);
+        }
+        if(node.getTokens() != null)
+        {
+            node.getTokens().apply(this);
+        }
+        if(node.getStates() != null)
+        {
+            node.getStates().apply(this);
+        }
+        if(node.getHelpers() != null)
+        {
+            node.getHelpers().apply(this);
+        }
+        {
+            List<TPkgId> copy = new ArrayList<TPkgId>(node.getPackage());
+            Collections.reverse(copy);
+            for(TPkgId e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAGrammar(node);
     }
-    outAHelpers(node);
-  }
-
-  public void inAHelperDef(AHelperDef node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAHelperDef(AHelperDef node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAHelperDef(AHelperDef node)
-  {
-    inAHelperDef(node);
-    if(node.getRegExp() != null)
+    public void inAHelpers(AHelpers node)
     {
-      node.getRegExp().apply(this);
+        defaultIn(node);
     }
-    if(node.getId() != null)
+
+    public void outAHelpers(AHelpers node)
     {
-      node.getId().apply(this);
+        defaultOut(node);
     }
-    outAHelperDef(node);
-  }
-
-  public void inAStates(AStates node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAStates(AStates node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAStates(AStates node)
-  {
-    inAStates(node);
+    @Override
+    public void caseAHelpers(AHelpers node)
     {
-      Object temp[] = node.getListId().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((TId) temp[i]).apply(this);
-      }
+        inAHelpers(node);
+        {
+            List<PHelperDef> copy = new ArrayList<PHelperDef>(node.getHelperDefs());
+            Collections.reverse(copy);
+            for(PHelperDef e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAHelpers(node);
     }
-    outAStates(node);
-  }
-
-  public void inATokens(ATokens node)
-  {
-    defaultIn(node);
-  }
-
-  public void outATokens(ATokens node)
-  {
-    defaultOut(node);
-  }
 
-  public void caseATokens(ATokens node)
-  {
-    inATokens(node);
+    public void inAHelperDef(AHelperDef node)
     {
-      Object temp[] = node.getTokenDefs().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PTokenDef) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outATokens(node);
-  }
 
-  public void inATokenDef(ATokenDef node)
-  {
-    defaultIn(node);
-  }
-
-  public void outATokenDef(ATokenDef node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseATokenDef(ATokenDef node)
-  {
-    inATokenDef(node);
-    if(node.getLookAhead() != null)
+    public void outAHelperDef(AHelperDef node)
     {
-      node.getLookAhead().apply(this);
+        defaultOut(node);
     }
-    if(node.getSlash() != null)
+
+    @Override
+    public void caseAHelperDef(AHelperDef node)
     {
-      node.getSlash().apply(this);
+        inAHelperDef(node);
+        if(node.getRegExp() != null)
+        {
+            node.getRegExp().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAHelperDef(node);
     }
-    if(node.getRegExp() != null)
+
+    public void inAStates(AStates node)
     {
-      node.getRegExp().apply(this);
+        defaultIn(node);
     }
-    if(node.getId() != null)
+
+    public void outAStates(AStates node)
     {
-      node.getId().apply(this);
+        defaultOut(node);
     }
-    if(node.getStateList() != null)
+
+    @Override
+    public void caseAStates(AStates node)
     {
-      node.getStateList().apply(this);
+        inAStates(node);
+        {
+            List<TId> copy = new ArrayList<TId>(node.getListId());
+            Collections.reverse(copy);
+            for(TId e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAStates(node);
     }
-    outATokenDef(node);
-  }
-
-  public void inAStateList(AStateList node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAStateList(AStateList node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAStateList(AStateList node)
-  {
-    inAStateList(node);
+    public void inATokens(ATokens node)
     {
-      Object temp[] = node.getStateLists().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PStateListTail) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    if(node.getTransition() != null)
+
+    public void outATokens(ATokens node)
     {
-      node.getTransition().apply(this);
+        defaultOut(node);
     }
-    if(node.getId() != null)
+
+    @Override
+    public void caseATokens(ATokens node)
     {
-      node.getId().apply(this);
+        inATokens(node);
+        {
+            List<PTokenDef> copy = new ArrayList<PTokenDef>(node.getTokenDefs());
+            Collections.reverse(copy);
+            for(PTokenDef e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outATokens(node);
     }
-    outAStateList(node);
-  }
 
-  public void inAStateListTail(AStateListTail node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAStateListTail(AStateListTail node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAStateListTail(AStateListTail node)
-  {
-    inAStateListTail(node);
-    if(node.getTransition() != null)
+    public void inATokenDef(ATokenDef node)
     {
-      node.getTransition().apply(this);
+        defaultIn(node);
     }
-    if(node.getId() != null)
+
+    public void outATokenDef(ATokenDef node)
     {
-      node.getId().apply(this);
+        defaultOut(node);
     }
-    outAStateListTail(node);
-  }
 
-  public void inATransition(ATransition node)
-  {
-    defaultIn(node);
-  }
-
-  public void outATransition(ATransition node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseATransition(ATransition node)
-  {
-    inATransition(node);
-    if(node.getId() != null)
+    @Override
+    public void caseATokenDef(ATokenDef node)
     {
-      node.getId().apply(this);
+        inATokenDef(node);
+        if(node.getLookAhead() != null)
+        {
+            node.getLookAhead().apply(this);
+        }
+        if(node.getSlash() != null)
+        {
+            node.getSlash().apply(this);
+        }
+        if(node.getRegExp() != null)
+        {
+            node.getRegExp().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getStateList() != null)
+        {
+            node.getStateList().apply(this);
+        }
+        outATokenDef(node);
     }
-    outATransition(node);
-  }
-
-  public void inAIgnTokens(AIgnTokens node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAIgnTokens(AIgnTokens node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAIgnTokens(AIgnTokens node)
-  {
-    inAIgnTokens(node);
+    public void inAStateList(AStateList node)
     {
-      Object temp[] = node.getListId().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((TId) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outAIgnTokens(node);
-  }
-
-  public void inARegExp(ARegExp node)
-  {
-    defaultIn(node);
-  }
-
-  public void outARegExp(ARegExp node)
-  {
-    defaultOut(node);
-  }
 
-  public void caseARegExp(ARegExp node)
-  {
-    inARegExp(node);
+    public void outAStateList(AStateList node)
     {
-      Object temp[] = node.getConcats().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PConcat) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    outARegExp(node);
-  }
 
-  public void inAConcat(AConcat node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAConcat(AConcat node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAConcat(AConcat node)
-  {
-    inAConcat(node);
+    @Override
+    public void caseAStateList(AStateList node)
     {
-      Object temp[] = node.getUnExps().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PUnExp) temp[i]).apply(this);
-      }
+        inAStateList(node);
+        {
+            List<PStateListTail> copy = new ArrayList<PStateListTail>(node.getStateLists());
+            Collections.reverse(copy);
+            for(PStateListTail e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getTransition() != null)
+        {
+            node.getTransition().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAStateList(node);
     }
-    outAConcat(node);
-  }
-
-  public void inAUnExp(AUnExp node)
-  {
-    defaultIn(node);
-  }
 
-  public void outAUnExp(AUnExp node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAUnExp(AUnExp node)
-  {
-    inAUnExp(node);
-    if(node.getUnOp() != null)
-    {
-      node.getUnOp().apply(this);
-    }
-    if(node.getBasic() != null)
-    {
-      node.getBasic().apply(this);
+    public void inAStateListTail(AStateListTail node)
+    {
+        defaultIn(node);
     }
-    outAUnExp(node);
-  }
 
-  public void inACharBasic(ACharBasic node)
-  {
-    defaultIn(node);
-  }
-
-  public void outACharBasic(ACharBasic node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseACharBasic(ACharBasic node)
-  {
-    inACharBasic(node);
-    if(node.getChar() != null)
-    {
-      node.getChar().apply(this);
+    public void outAStateListTail(AStateListTail node)
+    {
+        defaultOut(node);
     }
-    outACharBasic(node);
-  }
-
-  public void inASetBasic(ASetBasic node)
-  {
-    defaultIn(node);
-  }
 
-  public void outASetBasic(ASetBasic node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseASetBasic(ASetBasic node)
-  {
-    inASetBasic(node);
-    if(node.getSet() != null)
+    @Override
+    public void caseAStateListTail(AStateListTail node)
     {
-      node.getSet().apply(this);
+        inAStateListTail(node);
+        if(node.getTransition() != null)
+        {
+            node.getTransition().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAStateListTail(node);
     }
-    outASetBasic(node);
-  }
-
-  public void inAStringBasic(AStringBasic node)
-  {
-    defaultIn(node);
-  }
-
-  public void outAStringBasic(AStringBasic node)
-  {
-    defaultOut(node);
-  }
 
-  public void caseAStringBasic(AStringBasic node)
-  {
-    inAStringBasic(node);
-    if(node.getString() != null)
+    public void inATransition(ATransition node)
     {
-      node.getString().apply(this);
+        defaultIn(node);
     }
-    outAStringBasic(node);
-  }
 
-  public void inAIdBasic(AIdBasic node)
-  {
-    defaultIn(node);
-  }
+    public void outATransition(ATransition node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAIdBasic(AIdBasic node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseATransition(ATransition node)
+    {
+        inATransition(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outATransition(node);
+    }
 
-  public void caseAIdBasic(AIdBasic node)
-  {
-    inAIdBasic(node);
-    if(node.getId() != null)
+    public void inAIgnTokens(AIgnTokens node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    outAIdBasic(node);
-  }
 
-  public void inARegExpBasic(ARegExpBasic node)
-  {
-    defaultIn(node);
-  }
+    public void outAIgnTokens(AIgnTokens node)
+    {
+        defaultOut(node);
+    }
 
-  public void outARegExpBasic(ARegExpBasic node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAIgnTokens(AIgnTokens node)
+    {
+        inAIgnTokens(node);
+        {
+            List<TId> copy = new ArrayList<TId>(node.getListId());
+            Collections.reverse(copy);
+            for(TId e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAIgnTokens(node);
+    }
 
-  public void caseARegExpBasic(ARegExpBasic node)
-  {
-    inARegExpBasic(node);
-    if(node.getRegExp() != null)
+    public void inARegExp(ARegExp node)
     {
-      node.getRegExp().apply(this);
+        defaultIn(node);
     }
-    outARegExpBasic(node);
-  }
 
-  public void inACharChar(ACharChar node)
-  {
-    defaultIn(node);
-  }
+    public void outARegExp(ARegExp node)
+    {
+        defaultOut(node);
+    }
 
-  public void outACharChar(ACharChar node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseARegExp(ARegExp node)
+    {
+        inARegExp(node);
+        {
+            List<PConcat> copy = new ArrayList<PConcat>(node.getConcats());
+            Collections.reverse(copy);
+            for(PConcat e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outARegExp(node);
+    }
 
-  public void caseACharChar(ACharChar node)
-  {
-    inACharChar(node);
-    if(node.getChar() != null)
+    public void inAConcat(AConcat node)
     {
-      node.getChar().apply(this);
+        defaultIn(node);
     }
-    outACharChar(node);
-  }
 
-  public void inADecChar(ADecChar node)
-  {
-    defaultIn(node);
-  }
+    public void outAConcat(AConcat node)
+    {
+        defaultOut(node);
+    }
 
-  public void outADecChar(ADecChar node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAConcat(AConcat node)
+    {
+        inAConcat(node);
+        {
+            List<PUnExp> copy = new ArrayList<PUnExp>(node.getUnExps());
+            Collections.reverse(copy);
+            for(PUnExp e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAConcat(node);
+    }
 
-  public void caseADecChar(ADecChar node)
-  {
-    inADecChar(node);
-    if(node.getDecChar() != null)
+    public void inAUnExp(AUnExp node)
     {
-      node.getDecChar().apply(this);
+        defaultIn(node);
     }
-    outADecChar(node);
-  }
 
-  public void inAHexChar(AHexChar node)
-  {
-    defaultIn(node);
-  }
+    public void outAUnExp(AUnExp node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAHexChar(AHexChar node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAUnExp(AUnExp node)
+    {
+        inAUnExp(node);
+        if(node.getUnOp() != null)
+        {
+            node.getUnOp().apply(this);
+        }
+        if(node.getBasic() != null)
+        {
+            node.getBasic().apply(this);
+        }
+        outAUnExp(node);
+    }
 
-  public void caseAHexChar(AHexChar node)
-  {
-    inAHexChar(node);
-    if(node.getHexChar() != null)
+    public void inACharBasic(ACharBasic node)
     {
-      node.getHexChar().apply(this);
+        defaultIn(node);
     }
-    outAHexChar(node);
-  }
 
-  public void inAOperationSet(AOperationSet node)
-  {
-    defaultIn(node);
-  }
+    public void outACharBasic(ACharBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAOperationSet(AOperationSet node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseACharBasic(ACharBasic node)
+    {
+        inACharBasic(node);
+        if(node.getChar() != null)
+        {
+            node.getChar().apply(this);
+        }
+        outACharBasic(node);
+    }
 
-  public void caseAOperationSet(AOperationSet node)
-  {
-    inAOperationSet(node);
-    if(node.getRight() != null)
+    public void inASetBasic(ASetBasic node)
     {
-      node.getRight().apply(this);
+        defaultIn(node);
     }
-    if(node.getBinOp() != null)
+
+    public void outASetBasic(ASetBasic node)
     {
-      node.getBinOp().apply(this);
+        defaultOut(node);
     }
-    if(node.getLeft() != null)
+
+    @Override
+    public void caseASetBasic(ASetBasic node)
     {
-      node.getLeft().apply(this);
+        inASetBasic(node);
+        if(node.getSet() != null)
+        {
+            node.getSet().apply(this);
+        }
+        outASetBasic(node);
     }
-    outAOperationSet(node);
-  }
 
-  public void inAIntervalSet(AIntervalSet node)
-  {
-    defaultIn(node);
-  }
+    public void inAStringBasic(AStringBasic node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAIntervalSet(AIntervalSet node)
-  {
-    defaultOut(node);
-  }
+    public void outAStringBasic(AStringBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAIntervalSet(AIntervalSet node)
-  {
-    inAIntervalSet(node);
-    if(node.getRight() != null)
+    @Override
+    public void caseAStringBasic(AStringBasic node)
     {
-      node.getRight().apply(this);
+        inAStringBasic(node);
+        if(node.getString() != null)
+        {
+            node.getString().apply(this);
+        }
+        outAStringBasic(node);
     }
-    if(node.getLeft() != null)
+
+    public void inAIdBasic(AIdBasic node)
     {
-      node.getLeft().apply(this);
+        defaultIn(node);
     }
-    outAIntervalSet(node);
-  }
 
-  public void inAStarUnOp(AStarUnOp node)
-  {
-    defaultIn(node);
-  }
+    public void outAIdBasic(AIdBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAStarUnOp(AStarUnOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAIdBasic(AIdBasic node)
+    {
+        inAIdBasic(node);
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAIdBasic(node);
+    }
 
-  public void caseAStarUnOp(AStarUnOp node)
-  {
-    inAStarUnOp(node);
-    if(node.getStar() != null)
+    public void inARegExpBasic(ARegExpBasic node)
     {
-      node.getStar().apply(this);
+        defaultIn(node);
     }
-    outAStarUnOp(node);
-  }
 
-  public void inAQMarkUnOp(AQMarkUnOp node)
-  {
-    defaultIn(node);
-  }
+    public void outARegExpBasic(ARegExpBasic node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAQMarkUnOp(AQMarkUnOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseARegExpBasic(ARegExpBasic node)
+    {
+        inARegExpBasic(node);
+        if(node.getRegExp() != null)
+        {
+            node.getRegExp().apply(this);
+        }
+        outARegExpBasic(node);
+    }
 
-  public void caseAQMarkUnOp(AQMarkUnOp node)
-  {
-    inAQMarkUnOp(node);
-    if(node.getQMark() != null)
+    public void inACharChar(ACharChar node)
     {
-      node.getQMark().apply(this);
+        defaultIn(node);
     }
-    outAQMarkUnOp(node);
-  }
 
-  public void inAPlusUnOp(APlusUnOp node)
-  {
-    defaultIn(node);
-  }
+    public void outACharChar(ACharChar node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAPlusUnOp(APlusUnOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseACharChar(ACharChar node)
+    {
+        inACharChar(node);
+        if(node.getChar() != null)
+        {
+            node.getChar().apply(this);
+        }
+        outACharChar(node);
+    }
 
-  public void caseAPlusUnOp(APlusUnOp node)
-  {
-    inAPlusUnOp(node);
-    if(node.getPlus() != null)
+    public void inADecChar(ADecChar node)
     {
-      node.getPlus().apply(this);
+        defaultIn(node);
     }
-    outAPlusUnOp(node);
-  }
 
-  public void inAPlusBinOp(APlusBinOp node)
-  {
-    defaultIn(node);
-  }
+    public void outADecChar(ADecChar node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAPlusBinOp(APlusBinOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseADecChar(ADecChar node)
+    {
+        inADecChar(node);
+        if(node.getDecChar() != null)
+        {
+            node.getDecChar().apply(this);
+        }
+        outADecChar(node);
+    }
 
-  public void caseAPlusBinOp(APlusBinOp node)
-  {
-    inAPlusBinOp(node);
-    outAPlusBinOp(node);
-  }
+    public void inAHexChar(AHexChar node)
+    {
+        defaultIn(node);
+    }
 
-  public void inAMinusBinOp(AMinusBinOp node)
-  {
-    defaultIn(node);
-  }
+    public void outAHexChar(AHexChar node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAMinusBinOp(AMinusBinOp node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAHexChar(AHexChar node)
+    {
+        inAHexChar(node);
+        if(node.getHexChar() != null)
+        {
+            node.getHexChar().apply(this);
+        }
+        outAHexChar(node);
+    }
 
-  public void caseAMinusBinOp(AMinusBinOp node)
-  {
-    inAMinusBinOp(node);
-    outAMinusBinOp(node);
-  }
+    public void inAOperationSet(AOperationSet node)
+    {
+        defaultIn(node);
+    }
 
-  public void inAProductions(AProductions node)
-  {
-    defaultIn(node);
-  }
+    public void outAOperationSet(AOperationSet node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAProductions(AProductions node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAOperationSet(AOperationSet node)
+    {
+        inAOperationSet(node);
+        if(node.getRight() != null)
+        {
+            node.getRight().apply(this);
+        }
+        if(node.getBinOp() != null)
+        {
+            node.getBinOp().apply(this);
+        }
+        if(node.getLeft() != null)
+        {
+            node.getLeft().apply(this);
+        }
+        outAOperationSet(node);
+    }
 
-  public void caseAProductions(AProductions node)
-  {
-    inAProductions(node);
+    public void inAIntervalSet(AIntervalSet node)
     {
-      Object temp[] = node.getProds().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PProd) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    outAProductions(node);
-  }
 
-  public void inAProd(AProd node)
-  {
-    defaultIn(node);
-  }
+    public void outAIntervalSet(AIntervalSet node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAProd(AProd node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAIntervalSet(AIntervalSet node)
+    {
+        inAIntervalSet(node);
+        if(node.getRight() != null)
+        {
+            node.getRight().apply(this);
+        }
+        if(node.getLeft() != null)
+        {
+            node.getLeft().apply(this);
+        }
+        outAIntervalSet(node);
+    }
 
-  public void caseAProd(AProd node)
-  {
-    inAProd(node);
+    public void inAStarUnOp(AStarUnOp node)
     {
-      Object temp[] = node.getAlts().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PAlt) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
+
+    public void outAStarUnOp(AStarUnOp node)
     {
-      Object temp[] = node.getProdTransform().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PElem) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    if(node.getArrow() != null)
+
+    @Override
+    public void caseAStarUnOp(AStarUnOp node)
     {
-      node.getArrow().apply(this);
+        inAStarUnOp(node);
+        if(node.getStar() != null)
+        {
+            node.getStar().apply(this);
+        }
+        outAStarUnOp(node);
     }
-    if(node.getId() != null)
+
+    public void inAQMarkUnOp(AQMarkUnOp node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    outAProd(node);
-  }
 
-  public void inAAlt(AAlt node)
-  {
-    defaultIn(node);
-  }
+    public void outAQMarkUnOp(AQMarkUnOp node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAAlt(AAlt node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAQMarkUnOp(AQMarkUnOp node)
+    {
+        inAQMarkUnOp(node);
+        if(node.getQMark() != null)
+        {
+            node.getQMark().apply(this);
+        }
+        outAQMarkUnOp(node);
+    }
 
-  public void caseAAlt(AAlt node)
-  {
-    inAAlt(node);
-    if(node.getAltTransform() != null)
+    public void inAPlusUnOp(APlusUnOp node)
     {
-      node.getAltTransform().apply(this);
+        defaultIn(node);
     }
+
+    public void outAPlusUnOp(APlusUnOp node)
     {
-      Object temp[] = node.getElems().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PElem) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    if(node.getAltName() != null)
+
+    @Override
+    public void caseAPlusUnOp(APlusUnOp node)
     {
-      node.getAltName().apply(this);
+        inAPlusUnOp(node);
+        if(node.getPlus() != null)
+        {
+            node.getPlus().apply(this);
+        }
+        outAPlusUnOp(node);
     }
-    outAAlt(node);
-  }
 
-  public void inAAltTransform(AAltTransform node)
-  {
-    defaultIn(node);
-  }
+    public void inAPlusBinOp(APlusBinOp node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAAltTransform(AAltTransform node)
-  {
-    defaultOut(node);
-  }
+    public void outAPlusBinOp(APlusBinOp node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAAltTransform(AAltTransform node)
-  {
-    inAAltTransform(node);
-    if(node.getRBrace() != null)
+    @Override
+    public void caseAPlusBinOp(APlusBinOp node)
     {
-      node.getRBrace().apply(this);
+        inAPlusBinOp(node);
+        outAPlusBinOp(node);
     }
+
+    public void inAMinusBinOp(AMinusBinOp node)
     {
-      Object temp[] = node.getTerms().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PTerm) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    if(node.getLBrace() != null)
+
+    public void outAMinusBinOp(AMinusBinOp node)
     {
-      node.getLBrace().apply(this);
+        defaultOut(node);
     }
-    outAAltTransform(node);
-  }
 
-  public void inANewTerm(ANewTerm node)
-  {
-    defaultIn(node);
-  }
+    @Override
+    public void caseAMinusBinOp(AMinusBinOp node)
+    {
+        inAMinusBinOp(node);
+        outAMinusBinOp(node);
+    }
 
-  public void outANewTerm(ANewTerm node)
-  {
-    defaultOut(node);
-  }
+    public void inAProductions(AProductions node)
+    {
+        defaultIn(node);
+    }
 
-  public void caseANewTerm(ANewTerm node)
-  {
-    inANewTerm(node);
+    public void outAProductions(AProductions node)
     {
-      Object temp[] = node.getParams().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PTerm) temp[i]).apply(this);
-      }
+        defaultOut(node);
     }
-    if(node.getLPar() != null)
+
+    @Override
+    public void caseAProductions(AProductions node)
     {
-      node.getLPar().apply(this);
+        inAProductions(node);
+        {
+            List<PProd> copy = new ArrayList<PProd>(node.getProds());
+            Collections.reverse(copy);
+            for(PProd e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAProductions(node);
     }
-    if(node.getProdName() != null)
+
+    public void inAProd(AProd node)
     {
-      node.getProdName().apply(this);
+        defaultIn(node);
     }
-    outANewTerm(node);
-  }
 
-  public void inAListTerm(AListTerm node)
-  {
-    defaultIn(node);
-  }
+    public void outAProd(AProd node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAListTerm(AListTerm node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAProd(AProd node)
+    {
+        inAProd(node);
+        {
+            List<PAlt> copy = new ArrayList<PAlt>(node.getAlts());
+            Collections.reverse(copy);
+            for(PAlt e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        {
+            List<PElem> copy = new ArrayList<PElem>(node.getProdTransform());
+            Collections.reverse(copy);
+            for(PElem e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getArrow() != null)
+        {
+            node.getArrow().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAProd(node);
+    }
 
-  public void caseAListTerm(AListTerm node)
-  {
-    inAListTerm(node);
+    public void inAAlt(AAlt node)
     {
-      Object temp[] = node.getListTerms().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PListTerm) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    if(node.getLBkt() != null)
+
+    public void outAAlt(AAlt node)
     {
-      node.getLBkt().apply(this);
+        defaultOut(node);
     }
-    outAListTerm(node);
-  }
 
-  public void inASimpleTerm(ASimpleTerm node)
-  {
-    defaultIn(node);
-  }
+    @Override
+    public void caseAAlt(AAlt node)
+    {
+        inAAlt(node);
+        if(node.getAltTransform() != null)
+        {
+            node.getAltTransform().apply(this);
+        }
+        {
+            List<PElem> copy = new ArrayList<PElem>(node.getElems());
+            Collections.reverse(copy);
+            for(PElem e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getAltName() != null)
+        {
+            node.getAltName().apply(this);
+        }
+        outAAlt(node);
+    }
 
-  public void outASimpleTerm(ASimpleTerm node)
-  {
-    defaultOut(node);
-  }
+    public void inAAltTransform(AAltTransform node)
+    {
+        defaultIn(node);
+    }
 
-  public void caseASimpleTerm(ASimpleTerm node)
-  {
-    inASimpleTerm(node);
-    if(node.getSimpleTermTail() != null)
+    public void outAAltTransform(AAltTransform node)
     {
-      node.getSimpleTermTail().apply(this);
+        defaultOut(node);
     }
-    if(node.getId() != null)
+
+    @Override
+    public void caseAAltTransform(AAltTransform node)
     {
-      node.getId().apply(this);
+        inAAltTransform(node);
+        if(node.getRBrace() != null)
+        {
+            node.getRBrace().apply(this);
+        }
+        {
+            List<PTerm> copy = new ArrayList<PTerm>(node.getTerms());
+            Collections.reverse(copy);
+            for(PTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getLBrace() != null)
+        {
+            node.getLBrace().apply(this);
+        }
+        outAAltTransform(node);
     }
-    if(node.getSpecifier() != null)
+
+    public void inANewTerm(ANewTerm node)
     {
-      node.getSpecifier().apply(this);
+        defaultIn(node);
     }
-    outASimpleTerm(node);
-  }
 
-  public void inANullTerm(ANullTerm node)
-  {
-    defaultIn(node);
-  }
+    public void outANewTerm(ANewTerm node)
+    {
+        defaultOut(node);
+    }
 
-  public void outANullTerm(ANullTerm node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseANewTerm(ANewTerm node)
+    {
+        inANewTerm(node);
+        {
+            List<PTerm> copy = new ArrayList<PTerm>(node.getParams());
+            Collections.reverse(copy);
+            for(PTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getLPar() != null)
+        {
+            node.getLPar().apply(this);
+        }
+        if(node.getProdName() != null)
+        {
+            node.getProdName().apply(this);
+        }
+        outANewTerm(node);
+    }
 
-  public void caseANullTerm(ANullTerm node)
-  {
-    inANullTerm(node);
-    outANullTerm(node);
-  }
+    public void inAListTerm(AListTerm node)
+    {
+        defaultIn(node);
+    }
 
-  public void inANewListTerm(ANewListTerm node)
-  {
-    defaultIn(node);
-  }
+    public void outAListTerm(AListTerm node)
+    {
+        defaultOut(node);
+    }
 
-  public void outANewListTerm(ANewListTerm node)
-  {
-    defaultOut(node);
-  }
+    @Override
+    public void caseAListTerm(AListTerm node)
+    {
+        inAListTerm(node);
+        {
+            List<PListTerm> copy = new ArrayList<PListTerm>(node.getListTerms());
+            Collections.reverse(copy);
+            for(PListTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getLBkt() != null)
+        {
+            node.getLBkt().apply(this);
+        }
+        outAListTerm(node);
+    }
 
-  public void caseANewListTerm(ANewListTerm node)
-  {
-    inANewListTerm(node);
+    public void inASimpleTerm(ASimpleTerm node)
     {
-      Object temp[] = node.getParams().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PTerm) temp[i]).apply(this);
-      }
+        defaultIn(node);
     }
-    if(node.getLPar() != null)
+
+    public void outASimpleTerm(ASimpleTerm node)
     {
-      node.getLPar().apply(this);
+        defaultOut(node);
     }
-    if(node.getProdName() != null)
+
+    @Override
+    public void caseASimpleTerm(ASimpleTerm node)
     {
-      node.getProdName().apply(this);
+        inASimpleTerm(node);
+        if(node.getSimpleTermTail() != null)
+        {
+            node.getSimpleTermTail().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getSpecifier() != null)
+        {
+            node.getSpecifier().apply(this);
+        }
+        outASimpleTerm(node);
     }
-    outANewListTerm(node);
-  }
 
-  public void inASimpleListTerm(ASimpleListTerm node)
-  {
-    defaultIn(node);
-  }
+    public void inANullTerm(ANullTerm node)
+    {
+        defaultIn(node);
+    }
 
-  public void outASimpleListTerm(ASimpleListTerm node)
-  {
-    defaultOut(node);
-  }
+    public void outANullTerm(ANullTerm node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseASimpleListTerm(ASimpleListTerm node)
-  {
-    inASimpleListTerm(node);
-    if(node.getSimpleTermTail() != null)
+    @Override
+    public void caseANullTerm(ANullTerm node)
     {
-      node.getSimpleTermTail().apply(this);
+        inANullTerm(node);
+        outANullTerm(node);
     }
-    if(node.getId() != null)
+
+    public void inANewListTerm(ANewListTerm node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getSpecifier() != null)
+
+    public void outANewListTerm(ANewListTerm node)
     {
-      node.getSpecifier().apply(this);
+        defaultOut(node);
     }
-    outASimpleListTerm(node);
-  }
 
-  public void inAProdName(AProdName node)
-  {
-    defaultIn(node);
-  }
+    @Override
+    public void caseANewListTerm(ANewListTerm node)
+    {
+        inANewListTerm(node);
+        {
+            List<PTerm> copy = new ArrayList<PTerm>(node.getParams());
+            Collections.reverse(copy);
+            for(PTerm e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getLPar() != null)
+        {
+            node.getLPar().apply(this);
+        }
+        if(node.getProdName() != null)
+        {
+            node.getProdName().apply(this);
+        }
+        outANewListTerm(node);
+    }
 
-  public void outAProdName(AProdName node)
-  {
-    defaultOut(node);
-  }
+    public void inASimpleListTerm(ASimpleListTerm node)
+    {
+        defaultIn(node);
+    }
 
-  public void caseAProdName(AProdName node)
-  {
-    inAProdName(node);
-    if(node.getProdNameTail() != null)
+    public void outASimpleListTerm(ASimpleListTerm node)
     {
-      node.getProdNameTail().apply(this);
+        defaultOut(node);
     }
-    if(node.getId() != null)
+
+    @Override
+    public void caseASimpleListTerm(ASimpleListTerm node)
     {
-      node.getId().apply(this);
+        inASimpleListTerm(node);
+        if(node.getSimpleTermTail() != null)
+        {
+            node.getSimpleTermTail().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getSpecifier() != null)
+        {
+            node.getSpecifier().apply(this);
+        }
+        outASimpleListTerm(node);
     }
-    outAProdName(node);
-  }
 
-  public void inAElem(AElem node)
-  {
-    defaultIn(node);
-  }
+    public void inAProdName(AProdName node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAElem(AElem node)
-  {
-    defaultOut(node);
-  }
+    public void outAProdName(AProdName node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAElem(AElem node)
-  {
-    inAElem(node);
-    if(node.getUnOp() != null)
+    @Override
+    public void caseAProdName(AProdName node)
     {
-      node.getUnOp().apply(this);
+        inAProdName(node);
+        if(node.getProdNameTail() != null)
+        {
+            node.getProdNameTail().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAProdName(node);
     }
-    if(node.getId() != null)
+
+    public void inAElem(AElem node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    if(node.getSpecifier() != null)
+
+    public void outAElem(AElem node)
     {
-      node.getSpecifier().apply(this);
+        defaultOut(node);
     }
-    if(node.getElemName() != null)
+
+    @Override
+    public void caseAElem(AElem node)
     {
-      node.getElemName().apply(this);
+        inAElem(node);
+        if(node.getUnOp() != null)
+        {
+            node.getUnOp().apply(this);
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        if(node.getSpecifier() != null)
+        {
+            node.getSpecifier().apply(this);
+        }
+        if(node.getElemName() != null)
+        {
+            node.getElemName().apply(this);
+        }
+        outAElem(node);
     }
-    outAElem(node);
-  }
 
-  public void inATokenSpecifier(ATokenSpecifier node)
-  {
-    defaultIn(node);
-  }
+    public void inATokenSpecifier(ATokenSpecifier node)
+    {
+        defaultIn(node);
+    }
 
-  public void outATokenSpecifier(ATokenSpecifier node)
-  {
-    defaultOut(node);
-  }
+    public void outATokenSpecifier(ATokenSpecifier node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseATokenSpecifier(ATokenSpecifier node)
-  {
-    inATokenSpecifier(node);
-    outATokenSpecifier(node);
-  }
+    @Override
+    public void caseATokenSpecifier(ATokenSpecifier node)
+    {
+        inATokenSpecifier(node);
+        outATokenSpecifier(node);
+    }
 
-  public void inAProductionSpecifier(AProductionSpecifier node)
-  {
-    defaultIn(node);
-  }
+    public void inAProductionSpecifier(AProductionSpecifier node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAProductionSpecifier(AProductionSpecifier node)
-  {
-    defaultOut(node);
-  }
+    public void outAProductionSpecifier(AProductionSpecifier node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAProductionSpecifier(AProductionSpecifier node)
-  {
-    inAProductionSpecifier(node);
-    outAProductionSpecifier(node);
-  }
+    @Override
+    public void caseAProductionSpecifier(AProductionSpecifier node)
+    {
+        inAProductionSpecifier(node);
+        outAProductionSpecifier(node);
+    }
 
-  public void inAAst(AAst node)
-  {
-    defaultIn(node);
-  }
+    public void inAAst(AAst node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAAst(AAst node)
-  {
-    defaultOut(node);
-  }
+    public void outAAst(AAst node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAAst(AAst node)
-  {
-    inAAst(node);
+    @Override
+    public void caseAAst(AAst node)
     {
-      Object temp[] = node.getProds().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PAstProd) temp[i]).apply(this);
-      }
+        inAAst(node);
+        {
+            List<PAstProd> copy = new ArrayList<PAstProd>(node.getProds());
+            Collections.reverse(copy);
+            for(PAstProd e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        outAAst(node);
     }
-    outAAst(node);
-  }
 
-  public void inAAstProd(AAstProd node)
-  {
-    defaultIn(node);
-  }
+    public void inAAstProd(AAstProd node)
+    {
+        defaultIn(node);
+    }
 
-  public void outAAstProd(AAstProd node)
-  {
-    defaultOut(node);
-  }
+    public void outAAstProd(AAstProd node)
+    {
+        defaultOut(node);
+    }
 
-  public void caseAAstProd(AAstProd node)
-  {
-    inAAstProd(node);
+    @Override
+    public void caseAAstProd(AAstProd node)
     {
-      Object temp[] = node.getAlts().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PAstAlt) temp[i]).apply(this);
-      }
+        inAAstProd(node);
+        {
+            List<PAstAlt> copy = new ArrayList<PAstAlt>(node.getAlts());
+            Collections.reverse(copy);
+            for(PAstAlt e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getId() != null)
+        {
+            node.getId().apply(this);
+        }
+        outAAstProd(node);
     }
-    if(node.getId() != null)
+
+    public void inAAstAlt(AAstAlt node)
     {
-      node.getId().apply(this);
+        defaultIn(node);
     }
-    outAAstProd(node);
-  }
 
-  public void inAAstAlt(AAstAlt node)
-  {
-    defaultIn(node);
-  }
+    public void outAAstAlt(AAstAlt node)
+    {
+        defaultOut(node);
+    }
 
-  public void outAAstAlt(AAstAlt node)
-  {
-    defaultOut(node);
-  }
-
-  public void caseAAstAlt(AAstAlt node)
-  {
-    inAAstAlt(node);
-    {
-      Object temp[] = node.getElems().toArray();
-      for(int i = temp.length - 1; i >= 0; i--)
-      {
-        ((PElem) temp[i]).apply(this);
-      }
-    }
-    if(node.getAltName() != null)
-    {
-      node.getAltName().apply(this);
-    }
-    outAAstAlt(node);
-  }
+    @Override
+    public void caseAAstAlt(AAstAlt node)
+    {
+        inAAstAlt(node);
+        {
+            List<PElem> copy = new ArrayList<PElem>(node.getElems());
+            Collections.reverse(copy);
+            for(PElem e : copy)
+            {
+                e.apply(this);
+            }
+        }
+        if(node.getAltName() != null)
+        {
+            node.getAltName().apply(this);
+        }
+        outAAstAlt(node);
+    }
 }
diff --git a/src/org/sablecc/sablecc/lexer.txt b/src/org/sablecc/sablecc/lexer.txt
index f02d14c..bab79e2 100644
--- a/src/org/sablecc/sablecc/lexer.txt
+++ b/src/org/sablecc/sablecc/lexer.txt
@@ -10,17 +10,43 @@ Macro:LexerException
 
 package $0$;
 
+import $1$.*;
+
 @SuppressWarnings("serial")
 public class LexerException extends Exception
 {
-    public LexerException(String message)
+    private InvalidToken invalidToken;
+    
+    public LexerException(@SuppressWarnings("hiding") InvalidToken invalidToken, String message)
     {
         super(message);
+        this.invalidToken = invalidToken;
+    }
+
+    public InvalidToken getToken()
+    {
+        return this.invalidToken;
     }
 }
 
 $
 
+Macro:IPushbackReader
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import java.io.*;
+
+ at SuppressWarnings("serial")
+public interface IPushbackReader
+{
+    public int read() throws IOException;
+    public void unread(int c) throws IOException;
+}
+
+$
+
 Macro:LexerHeader
 /* This file was generated by SableCC (http://www.sablecc.org/). */
 
@@ -35,7 +61,7 @@ public class Lexer
     protected Token token;
     protected State state = State.$2$;
 
-    private PushbackReader in;
+    private IPushbackReader in;
     private int line;
     private int pos;
     private boolean cr;
@@ -48,7 +74,25 @@ public class Lexer
         // Do nothing
     }
 
-    public Lexer(@SuppressWarnings("hiding") PushbackReader in)
+    public Lexer(@SuppressWarnings("hiding") final PushbackReader in)
+    {
+        this.in = new IPushbackReader() {
+
+            private PushbackReader pushbackReader = in;
+            
+            @Override
+            public void unread(int c) throws IOException {
+                pushbackReader.unread(c);
+            }
+            
+            @Override
+            public int read() throws IOException {
+                return pushbackReader.read();
+            }
+        };
+    }
+ 
+    public Lexer(@SuppressWarnings("hiding") IPushbackReader in)
     {
         this.in = in;
     }
@@ -138,7 +182,8 @@ public class Lexer
 
                     while(low <= high)
                     {
-                        int middle = (low + high) / 2;
+                        // int middle = (low + high) / 2;
+                        int middle = (low + high) >>> 1;
                         int[] tmp2 = tmp1[middle];
 
                         if(c < tmp2[0])
@@ -237,6 +282,7 @@ Macro:LexerBody1
                     if(this.text.length() > 0)
                     {
                         throw new LexerException(
+                            new InvalidToken(this.text.substring(0, 1), start_line + 1, start_pos + 1),
                             "[" + (start_line + 1) + "," + (start_pos + 1) + "]" +
                             " Unknown token: " + this.text);
                     }
diff --git a/src/org/sablecc/sablecc/lexer/IPushbackReader.java b/src/org/sablecc/sablecc/lexer/IPushbackReader.java
new file mode 100644
index 0000000..f4b5dd9
--- /dev/null
+++ b/src/org/sablecc/sablecc/lexer/IPushbackReader.java
@@ -0,0 +1,12 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package org.sablecc.sablecc.lexer;
+
+import java.io.*;
+
+ at SuppressWarnings("serial")
+public interface IPushbackReader
+{
+    public int read() throws IOException;
+    public void unread(int c) throws IOException;
+}
diff --git a/src/org/sablecc/sablecc/lexer/Lexer.java b/src/org/sablecc/sablecc/lexer/Lexer.java
index d2de0b5..cbf1ce9 100644
--- a/src/org/sablecc/sablecc/lexer/Lexer.java
+++ b/src/org/sablecc/sablecc/lexer/Lexer.java
@@ -3,1149 +3,1041 @@
 package org.sablecc.sablecc.lexer;
 
 import java.io.*;
-import java.util.*;
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings("nls")
 public class Lexer
 {
-  protected Token token;
-  protected State state = State.NORMAL;
+    protected Token token;
+    protected State state = State.NORMAL;
 
-  private PushbackReader in;
-  private int line;
-  private int pos;
-  private boolean cr;
-  private boolean eof;
-  private final StringBuffer text = new StringBuffer();
+    private IPushbackReader in;
+    private int line;
+    private int pos;
+    private boolean cr;
+    private boolean eof;
+    private final StringBuffer text = new StringBuffer();
 
-  protected void filter() throws LexerException, IOException
-    {}
-
-  public Lexer(PushbackReader in)
-  {
-    this.in = in;
-  }
-
-  public Token peek() throws LexerException, IOException
-  {
-    while(token == null)
+    @SuppressWarnings("unused")
+    protected void filter() throws LexerException, IOException
     {
-      token = getToken();
-      filter();
+        // Do nothing
     }
 
-    return token;
-  }
+    public Lexer(@SuppressWarnings("hiding") final PushbackReader in)
+    {
+        this.in = new IPushbackReader() {
 
-  public Token next() throws LexerException, IOException
-  {
-    while(token == null)
+            private PushbackReader pushbackReader = in;
+            
+            @Override
+            public void unread(int c) throws IOException {
+                pushbackReader.unread(c);
+            }
+            
+            @Override
+            public int read() throws IOException {
+                return pushbackReader.read();
+            }
+        };
+    }
+ 
+    public Lexer(@SuppressWarnings("hiding") IPushbackReader in)
     {
-      token = getToken();
-      filter();
+        this.in = in;
     }
+ 
+    public Token peek() throws LexerException, IOException
+    {
+        while(this.token == null)
+        {
+            this.token = getToken();
+            filter();
+        }
 
-    Token result = token;
-    token = null;
-    return result;
-  }
+        return this.token;
+    }
 
-  protected Token getToken() throws IOException, LexerException
-  {
-    int dfa_state = 0;
+    public Token next() throws LexerException, IOException
+    {
+        while(this.token == null)
+        {
+            this.token = getToken();
+            filter();
+        }
 
-    int start_pos = pos;
-    int start_line = line;
+        Token result = this.token;
+        this.token = null;
+        return result;
+    }
 
-    int accept_state = -1;
-    int accept_token = -1;
-    int accept_length = -1;
-    int accept_pos = -1;
-    int accept_line = -1;
+    protected Token getToken() throws IOException, LexerException
+    {
+        int dfa_state = 0;
 
-    int[][][] gotoTable = this.gotoTable[state.id()];
-    int[] accept = this.accept[state.id()];
-    text.setLength(0);
+        int start_pos = this.pos;
+        int start_line = this.line;
 
-    while(true)
-    {
-      int c = getChar();
+        int accept_state = -1;
+        int accept_token = -1;
+        int accept_length = -1;
+        int accept_pos = -1;
+        int accept_line = -1;
 
-      if(c != -1)
-      {
-        switch(c)
+        @SuppressWarnings("hiding") int[][][] gotoTable = Lexer.gotoTable[this.state.id()];
+        @SuppressWarnings("hiding") int[] accept = Lexer.accept[this.state.id()];
+        this.text.setLength(0);
+
+        while(true)
         {
-        case 10:
-          if(cr)
-          {
-            cr = false;
-          }
-          else
-          {
-            line++;
-            pos = 0;
-          }
-          break;
-        case 13:
-          line++;
-          pos = 0;
-          cr = true;
-          break;
-        default:
-          pos++;
-          cr = false;
-          break;
-        };
+            int c = getChar();
 
-        text.append((char) c);
+            if(c != -1)
+            {
+                switch(c)
+                {
+                case 10:
+                    if(this.cr)
+                    {
+                        this.cr = false;
+                    }
+                    else
+                    {
+                        this.line++;
+                        this.pos = 0;
+                    }
+                    break;
+                case 13:
+                    this.line++;
+                    this.pos = 0;
+                    this.cr = true;
+                    break;
+                default:
+                    this.pos++;
+                    this.cr = false;
+                    break;
+                }
 
-        do
-        {
-          int oldState = (dfa_state < -1) ? (-2 -dfa_state) : dfa_state;
+                this.text.append((char) c);
 
-          dfa_state = -1;
+                do
+                {
+                    int oldState = (dfa_state < -1) ? (-2 -dfa_state) : dfa_state;
 
-          int[][] tmp1 =  gotoTable[oldState];
-          int low = 0;
-          int high = tmp1.length - 1;
+                    dfa_state = -1;
 
-          while(low <= high)
-          {
-            int middle = (low + high) / 2;
-            int[] tmp2 = tmp1[middle];
+                    int[][] tmp1 =  gotoTable[oldState];
+                    int low = 0;
+                    int high = tmp1.length - 1;
 
-            if(c < tmp2[0])
-            {
-              high = middle - 1;
-            }
-            else if(c > tmp2[1])
-            {
-              low = middle + 1;
+                    while(low <= high)
+                    {
+                        // int middle = (low + high) / 2;
+                        int middle = (low + high) >>> 1;
+                        int[] tmp2 = tmp1[middle];
+
+                        if(c < tmp2[0])
+                        {
+                            high = middle - 1;
+                        }
+                        else if(c > tmp2[1])
+                        {
+                            low = middle + 1;
+                        }
+                        else
+                        {
+                            dfa_state = tmp2[2];
+                            break;
+                        }
+                    }
+                }while(dfa_state < -1);
             }
             else
             {
-              dfa_state = tmp2[2];
-              break;
+                dfa_state = -1;
             }
-          }
-        }
-        while(dfa_state < -1);
-      }
-      else
-      {
-        dfa_state = -1;
-      }
 
-      if(dfa_state >= 0)
-      {
-        if(accept[dfa_state] != -1)
-        {
-          accept_state = dfa_state;
-          accept_token = accept[dfa_state];
-          accept_length = text.length();
-          accept_pos = pos;
-          accept_line = line;
-        }
-      }
-      else
-      {
-        if(accept_state != -1)
-        {
-          switch(accept_token)
-          {
-          case 0:
-            {
-              Token token = new0(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              switch(state.id())
-              {
-              case 1:
-                state = State.PACKAGE;
-                break;
-              }
-              return token;
-            }
-          case 1:
-            {
-              Token token = new1(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              switch(state.id())
-              {
-              case 0:
-                state = State.PACKAGE;
-                break;
-              }
-              return token;
-            }
-          case 2:
-            {
-              Token token = new2(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 3:
-            {
-              Token token = new3(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 4:
-            {
-              Token token = new4(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 5:
-            {
-              Token token = new5(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 6:
-            {
-              Token token = new6(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 7:
-            {
-              Token token = new7(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 8:
-            {
-              Token token = new8(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 9:
-            {
-              Token token = new9(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 10:
-            {
-              Token token = new10(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 11:
-            {
-              Token token = new11(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 12:
-            {
-              Token token = new12(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 13:
-            {
-              Token token = new13(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 14:
-            {
-              Token token = new14(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 15:
-            {
-              Token token = new15(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 16:
-            {
-              Token token = new16(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              switch(state.id())
-              {
-              case 0:
-                state = State.NORMAL;
-                break;
-              case 1:
-                state = State.NORMAL;
-                break;
-              }
-              return token;
-            }
-          case 17:
-            {
-              Token token = new17(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 18:
-            {
-              Token token = new18(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 19:
-            {
-              Token token = new19(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 20:
-            {
-              Token token = new20(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 21:
-            {
-              Token token = new21(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 22:
-            {
-              Token token = new22(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 23:
-            {
-              Token token = new23(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 24:
-            {
-              Token token = new24(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 25:
-            {
-              Token token = new25(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 26:
-            {
-              Token token = new26(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 27:
-            {
-              Token token = new27(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 28:
-            {
-              Token token = new28(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 29:
-            {
-              Token token = new29(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 30:
-            {
-              Token token = new30(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 31:
-            {
-              Token token = new31(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 32:
+            if(dfa_state >= 0)
             {
-              Token token = new32(
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
+                if(accept[dfa_state] != -1)
+                {
+                    accept_state = dfa_state;
+                    accept_token = accept[dfa_state];
+                    accept_length = this.text.length();
+                    accept_pos = this.pos;
+                    accept_line = this.line;
+                }
             }
-          case 33:
-            {
-              Token token = new33(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 34:
-            {
-              Token token = new34(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 35:
-            {
-              Token token = new35(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 36:
-            {
-              Token token = new36(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 37:
-            {
-              Token token = new37(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 38:
-            {
-              Token token = new38(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
-            }
-          case 39:
+            else
             {
-              Token token = new39(
-                              getText(accept_length),
-                              start_line + 1,
-                              start_pos + 1);
-              pushBack(accept_length);
-              pos = accept_pos;
-              line = accept_line;
-              return token;
+                if(accept_state != -1)
+                {
+                    switch(accept_token)
+                    {
+                    case 0:
+                        {
+                            @SuppressWarnings("hiding") Token token = new0(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            switch(state.id())
+                            {
+                                case 1: state = State.PACKAGE; break;
+                            }
+                            return token;
+                        }
+                    case 1:
+                        {
+                            @SuppressWarnings("hiding") Token token = new1(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            switch(state.id())
+                            {
+                                case 0: state = State.PACKAGE; break;
+                            }
+                            return token;
+                        }
+                    case 2:
+                        {
+                            @SuppressWarnings("hiding") Token token = new2(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 3:
+                        {
+                            @SuppressWarnings("hiding") Token token = new3(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 4:
+                        {
+                            @SuppressWarnings("hiding") Token token = new4(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 5:
+                        {
+                            @SuppressWarnings("hiding") Token token = new5(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 6:
+                        {
+                            @SuppressWarnings("hiding") Token token = new6(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 7:
+                        {
+                            @SuppressWarnings("hiding") Token token = new7(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 8:
+                        {
+                            @SuppressWarnings("hiding") Token token = new8(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 9:
+                        {
+                            @SuppressWarnings("hiding") Token token = new9(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 10:
+                        {
+                            @SuppressWarnings("hiding") Token token = new10(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 11:
+                        {
+                            @SuppressWarnings("hiding") Token token = new11(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 12:
+                        {
+                            @SuppressWarnings("hiding") Token token = new12(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 13:
+                        {
+                            @SuppressWarnings("hiding") Token token = new13(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 14:
+                        {
+                            @SuppressWarnings("hiding") Token token = new14(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 15:
+                        {
+                            @SuppressWarnings("hiding") Token token = new15(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 16:
+                        {
+                            @SuppressWarnings("hiding") Token token = new16(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            switch(state.id())
+                            {
+                                case 0: state = State.NORMAL; break;
+                                case 1: state = State.NORMAL; break;
+                            }
+                            return token;
+                        }
+                    case 17:
+                        {
+                            @SuppressWarnings("hiding") Token token = new17(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 18:
+                        {
+                            @SuppressWarnings("hiding") Token token = new18(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 19:
+                        {
+                            @SuppressWarnings("hiding") Token token = new19(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 20:
+                        {
+                            @SuppressWarnings("hiding") Token token = new20(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 21:
+                        {
+                            @SuppressWarnings("hiding") Token token = new21(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 22:
+                        {
+                            @SuppressWarnings("hiding") Token token = new22(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 23:
+                        {
+                            @SuppressWarnings("hiding") Token token = new23(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 24:
+                        {
+                            @SuppressWarnings("hiding") Token token = new24(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 25:
+                        {
+                            @SuppressWarnings("hiding") Token token = new25(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 26:
+                        {
+                            @SuppressWarnings("hiding") Token token = new26(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 27:
+                        {
+                            @SuppressWarnings("hiding") Token token = new27(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 28:
+                        {
+                            @SuppressWarnings("hiding") Token token = new28(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 29:
+                        {
+                            @SuppressWarnings("hiding") Token token = new29(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 30:
+                        {
+                            @SuppressWarnings("hiding") Token token = new30(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 31:
+                        {
+                            @SuppressWarnings("hiding") Token token = new31(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 32:
+                        {
+                            @SuppressWarnings("hiding") Token token = new32(
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 33:
+                        {
+                            @SuppressWarnings("hiding") Token token = new33(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 34:
+                        {
+                            @SuppressWarnings("hiding") Token token = new34(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 35:
+                        {
+                            @SuppressWarnings("hiding") Token token = new35(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 36:
+                        {
+                            @SuppressWarnings("hiding") Token token = new36(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 37:
+                        {
+                            @SuppressWarnings("hiding") Token token = new37(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 38:
+                        {
+                            @SuppressWarnings("hiding") Token token = new38(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    case 39:
+                        {
+                            @SuppressWarnings("hiding") Token token = new39(
+                                getText(accept_length),
+                                start_line + 1,
+                                start_pos + 1);
+                            pushBack(accept_length);
+                            this.pos = accept_pos;
+                            this.line = accept_line;
+                            return token;
+                        }
+                    }
+                }
+                else
+                {
+                    if(this.text.length() > 0)
+                    {
+                        throw new LexerException(
+                            new InvalidToken(this.text.substring(0, 1), start_line + 1, start_pos + 1),
+                            "[" + (start_line + 1) + "," + (start_pos + 1) + "]" +
+                            " Unknown token: " + this.text);
+                    }
+
+                    @SuppressWarnings("hiding") EOF token = new EOF(
+                        start_line + 1,
+                        start_pos + 1);
+                    return token;
+                }
             }
-          }
         }
-        else
-        {
-          if(text.length() > 0)
-          {
-            throw new LexerException(
-              "[" + (start_line + 1) + "," + (start_pos + 1) + "]" +
-              " Unknown token: " + text);
-          }
-          else
-          {
-            EOF token = new EOF(
-                          start_line + 1,
-                          start_pos + 1);
-            return token;
-          }
-        }
-      }
     }
-  }
 
-  Token new0(String text, int line, int pos)
-  {
-    return new TPkgId(text, line, pos);
-  }
-  Token new1(int line, int pos)
-  {
-    return new TPackage(line, pos);
-  }
-  Token new2(int line, int pos)
-  {
-    return new TStates(line, pos);
-  }
-  Token new3(int line, int pos)
-  {
-    return new THelpers(line, pos);
-  }
-  Token new4(int line, int pos)
-  {
-    return new TTokens(line, pos);
-  }
-  Token new5(int line, int pos)
-  {
-    return new TIgnored(line, pos);
-  }
-  Token new6(int line, int pos)
-  {
-    return new TProductions(line, pos);
-  }
-  Token new7(int line, int pos)
-  {
-    return new TAbstract(line, pos);
-  }
-  Token new8(int line, int pos)
-  {
-    return new TSyntax(line, pos);
-  }
-  Token new9(int line, int pos)
-  {
-    return new TTree(line, pos);
-  }
-  Token new10(int line, int pos)
-  {
-    return new TNew(line, pos);
-  }
-  Token new11(int line, int pos)
-  {
-    return new TNull(line, pos);
-  }
-  Token new12(int line, int pos)
-  {
-    return new TTokenSpecifier(line, pos);
-  }
-  Token new13(int line, int pos)
-  {
-    return new TProductionSpecifier(line, pos);
-  }
-  Token new14(int line, int pos)
-  {
-    return new TDot(line, pos);
-  }
-  Token new15(int line, int pos)
-  {
-    return new TDDot(line, pos);
-  }
-  Token new16(int line, int pos)
-  {
-    return new TSemicolon(line, pos);
-  }
-  Token new17(int line, int pos)
-  {
-    return new TEqual(line, pos);
-  }
-  Token new18(int line, int pos)
-  {
-    return new TLBkt(line, pos);
-  }
-  Token new19(int line, int pos)
-  {
-    return new TRBkt(line, pos);
-  }
-  Token new20(int line, int pos)
-  {
-    return new TLPar(line, pos);
-  }
-  Token new21(int line, int pos)
-  {
-    return new TRPar(line, pos);
-  }
-  Token new22(int line, int pos)
-  {
-    return new TLBrace(line, pos);
-  }
-  Token new23(int line, int pos)
-  {
-    return new TRBrace(line, pos);
-  }
-  Token new24(int line, int pos)
-  {
-    return new TPlus(line, pos);
-  }
-  Token new25(int line, int pos)
-  {
-    return new TMinus(line, pos);
-  }
-  Token new26(int line, int pos)
-  {
-    return new TQMark(line, pos);
-  }
-  Token new27(int line, int pos)
-  {
-    return new TStar(line, pos);
-  }
-  Token new28(int line, int pos)
-  {
-    return new TBar(line, pos);
-  }
-  Token new29(int line, int pos)
-  {
-    return new TComma(line, pos);
-  }
-  Token new30(int line, int pos)
-  {
-    return new TSlash(line, pos);
-  }
-  Token new31(int line, int pos)
-  {
-    return new TArrow(line, pos);
-  }
-  Token new32(int line, int pos)
-  {
-    return new TColon(line, pos);
-  }
-  Token new33(String text, int line, int pos)
-  {
-    return new TId(text, line, pos);
-  }
-  Token new34(String text, int line, int pos)
-  {
-    return new TChar(text, line, pos);
-  }
-  Token new35(String text, int line, int pos)
-  {
-    return new TDecChar(text, line, pos);
-  }
-  Token new36(String text, int line, int pos)
-  {
-    return new THexChar(text, line, pos);
-  }
-  Token new37(String text, int line, int pos)
-  {
-    return new TString(text, line, pos);
-  }
-  Token new38(String text, int line, int pos)
-  {
-    return new TBlank(text, line, pos);
-  }
-  Token new39(String text, int line, int pos)
-  {
-    return new TComment(text, line, pos);
-  }
+    Token new0(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TPkgId(text, line, pos); }
+    Token new1(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TPackage(line, pos); }
+    Token new2(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TStates(line, pos); }
+    Token new3(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new THelpers(line, pos); }
+    Token new4(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TTokens(line, pos); }
+    Token new5(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TIgnored(line, pos); }
+    Token new6(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TProductions(line, pos); }
+    Token new7(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TAbstract(line, pos); }
+    Token new8(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSyntax(line, pos); }
+    Token new9(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TTree(line, pos); }
+    Token new10(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNew(line, pos); }
+    Token new11(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TNull(line, pos); }
+    Token new12(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TTokenSpecifier(line, pos); }
+    Token new13(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TProductionSpecifier(line, pos); }
+    Token new14(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TDot(line, pos); }
+    Token new15(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TDDot(line, pos); }
+    Token new16(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSemicolon(line, pos); }
+    Token new17(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TEqual(line, pos); }
+    Token new18(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLBkt(line, pos); }
+    Token new19(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TRBkt(line, pos); }
+    Token new20(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLPar(line, pos); }
+    Token new21(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TRPar(line, pos); }
+    Token new22(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TLBrace(line, pos); }
+    Token new23(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TRBrace(line, pos); }
+    Token new24(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TPlus(line, pos); }
+    Token new25(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TMinus(line, pos); }
+    Token new26(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TQMark(line, pos); }
+    Token new27(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TStar(line, pos); }
+    Token new28(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TBar(line, pos); }
+    Token new29(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TComma(line, pos); }
+    Token new30(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TSlash(line, pos); }
+    Token new31(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TArrow(line, pos); }
+    Token new32(@SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TColon(line, pos); }
+    Token new33(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TId(text, line, pos); }
+    Token new34(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TChar(text, line, pos); }
+    Token new35(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TDecChar(text, line, pos); }
+    Token new36(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new THexChar(text, line, pos); }
+    Token new37(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TString(text, line, pos); }
+    Token new38(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TBlank(text, line, pos); }
+    Token new39(@SuppressWarnings("hiding") String text, @SuppressWarnings("hiding") int line, @SuppressWarnings("hiding") int pos) { return new TComment(text, line, pos); }
 
-  private int getChar() throws IOException
-  {
-    if(eof)
+    private int getChar() throws IOException
     {
-      return -1;
-    }
+        if(this.eof)
+        {
+            return -1;
+        }
 
-    int result = in.read();
+        int result = this.in.read();
 
-    if(result == -1)
-    {
-      eof = true;
-    }
+        if(result == -1)
+        {
+            this.eof = true;
+        }
 
-    return result;
-  }
+        return result;
+    }
 
-  private void pushBack(int acceptLength) throws IOException
-  {
-    int length = text.length();
-    for(int i = length - 1; i >= acceptLength; i--)
+    private void pushBack(int acceptLength) throws IOException
     {
-      eof = false;
+        int length = this.text.length();
+        for(int i = length - 1; i >= acceptLength; i--)
+        {
+            this.eof = false;
 
-      in.unread(text.charAt(i));
+            this.in.unread(this.text.charAt(i));
+        }
     }
-  }
 
-  protected void unread(Token token) throws IOException
-  {
-    String text = token.getText();
-    int length = text.length();
-
-    for(int i = length - 1; i >= 0; i--)
+    protected void unread(@SuppressWarnings("hiding") Token token) throws IOException
     {
-      eof = false;
+        @SuppressWarnings("hiding") String text = token.getText();
+        int length = text.length();
 
-      in.unread(text.charAt(i));
-    }
+        for(int i = length - 1; i >= 0; i--)
+        {
+            this.eof = false;
 
-    pos = token.getPos() - 1;
-    line = token.getLine() - 1;
-  }
+            this.in.unread(text.charAt(i));
+        }
 
-  private String getText(int acceptLength)
-  {
-    StringBuffer s = new StringBuffer(acceptLength);
-    for(int i = 0; i < acceptLength; i++)
-    {
-      s.append(text.charAt(i));
+        this.pos = token.getPos() - 1;
+        this.line = token.getLine() - 1;
     }
 
-    return s.toString();
-  }
+    private String getText(int acceptLength)
+    {
+        StringBuffer s = new StringBuffer(acceptLength);
+        for(int i = 0; i < acceptLength; i++)
+        {
+            s.append(this.text.charAt(i));
+        }
 
-  private static int[][][][] gotoTable;
-  /*  {
-          { // NORMAL
-              {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {39, 39, 5}, {40, 40, 6}, {41, 41, 7}, {42, 42, 8}, {43, 43, 9}, {44, 44, 10}, {45, 45, 11}, {46, 46, 12}, {47, 47, 13}, {48, 48, 14}, {49, 57, 15}, {58, 58, 16}, {59, 59, 17}, {61, 61, 18}, {63, 63, 19}, {65, 65, 20}, {72, 72, 21}, {73, 73, 22}, {78, 78, 23}, {80, 80, 24}, {83, 83, 25}, {84, 84, 26}, {91, 91, 27}, {93, 93, 28}, {97, 122, 29}, {123, 123, 30}, {124, 124, 31}, {125, 125, 32}, },
-              {{9, 32, -2}, },
-              {{9, 32, -2}, },
-              {{9, 9, 1}, {10, 10, 33}, {13, 32, -2}, },
-              {{9, 32, -2}, },
-              {{0, 9, 34}, {11, 12, 34}, {14, 38, 34}, {39, 39, 35}, {40, 65535, 34}, },
-              {},
-              {},
-              {},
-              {},
-              {},
-              {{62, 62, 36}, },
-              {{46, 46, 37}, },
-              {{42, 42, 38}, {47, 47, 39}, },
-              {{48, 57, 15}, {88, 88, 40}, {120, 120, 41}, },
-              {{48, 57, 15}, },
-              {},
-              {},
-              {},
-              {},
-              {{98, 98, 42}, },
-              {{101, 101, 43}, },
-              {{103, 103, 44}, },
-              {{101, 101, 45}, {117, 117, 46}, },
-              {{97, 97, 47}, {114, 114, 48}, },
-              {{116, 116, 49}, {121, 121, 50}, },
-              {{111, 111, 51}, {114, 114, 52}, },
-              {},
-              {},
-              {{48, 57, 53}, {95, 95, 54}, {97, 122, 55}, },
-              {},
-              {},
-              {},
-              {{9, 32, -2}, },
-              {{0, 9, 56}, {11, 12, 56}, {14, 38, 56}, {39, 39, 57}, {40, 65535, 56}, },
-              {{39, 39, 58}, },
-              {},
-              {},
-              {{0, 41, 59}, {42, 42, 60}, {43, 65535, 59}, },
-              {{0, 9, 61}, {10, 10, 62}, {11, 12, 61}, {13, 13, 63}, {14, 65535, 61}, },
-              {{48, 57, 64}, {65, 70, 64}, {97, 102, 64}, },
-              {{48, 102, -42}, },
-              {{115, 115, 65}, },
-              {{108, 108, 66}, },
-              {{110, 110, 67}, },
-              {{119, 119, 68}, },
-              {{108, 108, 69}, },
-              {{99, 99, 70}, },
-              {{111, 111, 71}, },
-              {{97, 97, 72}, },
-              {{110, 110, 73}, },
-              {{107, 107, 74}, },
-              {{101, 101, 75}, },
-              {{48, 122, -31}, },
-              {{97, 122, 76}, },
-              {{48, 122, -31}, },
-              {{0, 38, -36}, {39, 39, 77}, {40, 65535, 56}, },
-              {},
-              {},
-              {{0, 65535, -40}, },
-              {{0, 41, 78}, {42, 42, 60}, {43, 46, 78}, {47, 47, 79}, {48, 65535, 78}, },
-              {{0, 65535, -41}, },
-              {},
-              {{10, 10, 80}, },
-              {{48, 102, -42}, },
-              {{116, 116, 81}, },
-              {{112, 112, 82}, },
-              {{111, 111, 83}, },
-              {},
-              {{108, 108, 84}, },
-              {{107, 107, 85}, },
-              {{100, 100, 86}, },
-              {{116, 116, 87}, },
-              {{116, 116, 88}, },
-              {{101, 101, 89}, },
-              {{101, 101, 90}, },
-              {{48, 57, 91}, {95, 95, 54}, {97, 122, 92}, },
-              {},
-              {{0, 41, 93}, {42, 42, 94}, {43, 65535, 93}, },
-              {},
-              {},
-              {{114, 114, 95}, },
-              {{101, 101, 96}, },
-              {{114, 114, 97}, },
-              {},
-              {{97, 97, 98}, },
-              {{117, 117, 99}, },
-              {{101, 101, 100}, },
-              {{97, 97, 101}, },
-              {{110, 110, 102}, },
-              {},
-              {{48, 122, -78}, },
-              {{48, 122, -78}, },
-              {{0, 65535, -80}, },
-              {{0, 41, 78}, {42, 42, 94}, {43, 65535, -62}, },
-              {{97, 97, 103}, },
-              {{114, 114, 104}, },
-              {{101, 101, 105}, },
-              {{103, 103, 106}, },
-              {{99, 99, 107}, },
-              {{115, 115, 108}, },
-              {{120, 120, 109}, },
-              {{115, 115, 110}, },
-              {{99, 99, 111}, },
-              {{115, 115, 112}, },
-              {{100, 100, 113}, },
-              {{101, 101, 114}, },
-              {{116, 116, 115}, },
-              {},
-              {},
-              {},
-              {{116, 116, 116}, },
-              {},
-              {},
-              {},
-              {{105, 105, 117}, },
-              {},
-              {{111, 111, 118}, },
-              {{110, 110, 119}, },
-              {{115, 115, 120}, },
-              {},
-          }
-          { // PACKAGE
-              {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {36, 36, 5}, {39, 39, 6}, {40, 40, 7}, {41, 41, 8}, {42, 42, 9}, {43, 43, 10}, {44, 44, 11}, {45, 45, 12}, {46, 46, 13}, {47, 47, 14}, {48, 48, 15}, {49, 57, 16}, {58, 58, 17}, {59, 59, 18}, {61, 61, 19}, {63, 63, 20}, {65, 65, 21}, {66, 71, 22}, {72, 72, 23}, {73, 73, 24}, {74, 77, 22}, {78, 78, 25}, {79, 79, 22}, {80, 80, 26}, {81, 82, 22}, {83, 83, 27}, {84, 84, 28}, {85, 90, 22}, {91, 91, 29}, {93, 93, 30}, {95, 95, 31} [...]
-              {{9, 32, -2}, },
-              {{9, 32, -2}, },
-              {{9, 9, 1}, {10, 10, 36}, {13, 32, -2}, },
-              {{9, 32, -2}, },
-              {{36, 36, 37}, {48, 57, 38}, {65, 90, 39}, {95, 95, 40}, {97, 122, 41}, },
-              {{0, 9, 42}, {11, 12, 42}, {14, 38, 42}, {39, 39, 43}, {40, 65535, 42}, },
-              {},
-              {},
-              {},
-              {},
-              {},
-              {{62, 62, 44}, },
-              {{46, 46, 45}, },
-              {{42, 42, 46}, {47, 47, 47}, },
-              {{48, 57, 16}, {88, 88, 48}, {120, 120, 49}, },
-              {{48, 57, 16}, },
-              {},
-              {},
-              {},
-              {},
-              {{36, 95, -7}, {97, 97, 41}, {98, 98, 50}, {99, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 95, -7}, {97, 100, 41}, {101, 101, 51}, {102, 122, 41}, },
-              {{36, 95, -7}, {97, 102, 41}, {103, 103, 52}, {104, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 53}, {102, 116, 41}, {117, 117, 54}, {118, 122, 41}, },
-              {{36, 95, -7}, {97, 113, 41}, {114, 114, 55}, {115, 122, 41}, },
-              {{36, 95, -7}, {97, 115, 41}, {116, 116, 56}, {117, 120, 41}, {121, 121, 57}, {122, 122, 41}, },
-              {{36, 95, -7}, {97, 110, 41}, {111, 111, 58}, {112, 113, 41}, {114, 114, 59}, {115, 122, 41}, },
-              {},
-              {},
-              {{36, 122, -7}, },
-              {{36, 36, 37}, {48, 57, 60}, {65, 90, 39}, {95, 95, 61}, {97, 122, 62}, },
-              {},
-              {},
-              {},
-              {{9, 32, -2}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{0, 9, 63}, {11, 12, 63}, {14, 38, 63}, {39, 39, 64}, {40, 65535, 63}, },
-              {{39, 39, 65}, },
-              {},
-              {},
-              {{0, 41, 66}, {42, 42, 67}, {43, 65535, 66}, },
-              {{0, 9, 68}, {10, 10, 69}, {11, 12, 68}, {13, 13, 70}, {14, 65535, 68}, },
-              {{48, 57, 71}, {65, 70, 71}, {97, 102, 71}, },
-              {{48, 102, -50}, },
-              {{36, 95, -7}, {97, 114, 41}, {115, 115, 72}, {116, 122, 41}, },
-              {{36, 95, -7}, {97, 107, 41}, {108, 108, 73}, {109, 122, 41}, },
-              {{36, 95, -7}, {97, 109, 41}, {110, 110, 74}, {111, 122, 41}, },
-              {{36, 95, -7}, {97, 118, 41}, {119, 119, 75}, {120, 122, 41}, },
-              {{36, 107, -53}, {108, 108, 76}, {109, 122, 41}, },
-              {{36, 110, -30}, {111, 111, 77}, {112, 122, 41}, },
-              {{36, 95, -7}, {97, 97, 78}, {98, 122, 41}, },
-              {{36, 109, -54}, {110, 110, 79}, {111, 122, 41}, },
-              {{36, 95, -7}, {97, 106, 41}, {107, 107, 80}, {108, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 81}, {102, 122, 41}, },
-              {{36, 122, -34}, },
-              {{36, 95, -7}, {97, 122, 82}, },
-              {{36, 122, -34}, },
-              {{0, 38, -44}, {39, 39, 83}, {40, 65535, 63}, },
-              {},
-              {},
-              {{0, 65535, -48}, },
-              {{0, 41, 84}, {42, 42, 67}, {43, 46, 84}, {47, 47, 85}, {48, 65535, 84}, },
-              {{0, 65535, -49}, },
-              {},
-              {{10, 10, 86}, },
-              {{48, 102, -50}, },
-              {{36, 115, -29}, {116, 116, 87}, {117, 122, 41}, },
-              {{36, 95, -7}, {97, 111, 41}, {112, 112, 88}, {113, 122, 41}, },
-              {{36, 110, -30}, {111, 111, 89}, {112, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 107, -53}, {108, 108, 90}, {109, 122, 41}, },
-              {{36, 95, -7}, {97, 99, 41}, {100, 100, 91}, {101, 122, 41}, },
-              {{36, 115, -29}, {116, 116, 92}, {117, 122, 41}, },
-              {{36, 115, -29}, {116, 116, 93}, {117, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 94}, {102, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 95}, {102, 122, 41}, },
-              {{36, 36, 37}, {48, 57, 96}, {65, 95, -34}, {97, 122, 97}, },
-              {},
-              {{0, 41, 98}, {42, 42, 99}, {43, 65535, 98}, },
-              {},
-              {},
-              {{36, 113, -28}, {114, 114, 100}, {115, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 101}, {102, 122, 41}, },
-              {{36, 113, -28}, {114, 114, 102}, {115, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 95, -7}, {97, 116, 41}, {117, 117, 103}, {118, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 104}, {102, 122, 41}, },
-              {{36, 95, -7}, {97, 97, 105}, {98, 122, 41}, },
-              {{36, 109, -54}, {110, 110, 106}, {111, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 122, -84}, },
-              {{36, 122, -84}, },
-              {{0, 65535, -86}, },
-              {{0, 41, 84}, {42, 42, 99}, {43, 65535, -69}, },
-              {{36, 95, -7}, {97, 97, 107}, {98, 122, 41}, },
-              {{36, 113, -28}, {114, 114, 108}, {115, 122, 41}, },
-              {{36, 100, -25}, {101, 101, 109}, {102, 122, 41}, },
-              {{36, 95, -7}, {97, 98, 41}, {99, 99, 110}, {100, 122, 41}, },
-              {{36, 114, -52}, {115, 115, 111}, {116, 122, 41}, },
-              {{36, 95, -7}, {97, 119, 41}, {120, 120, 112}, {121, 122, 41}, },
-              {{36, 114, -52}, {115, 115, 113}, {116, 122, 41}, },
-              {{36, 98, -105}, {99, 99, 114}, {100, 122, 41}, },
-              {{36, 114, -52}, {115, 115, 115}, {116, 122, 41}, },
-              {{36, 99, -79}, {100, 100, 116}, {101, 122, 41}, },
-              {{36, 115, -29}, {116, 116, 117}, {117, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{36, 115, -29}, {116, 116, 118}, {117, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 122, -7}, },
-              {{36, 95, -7}, {97, 104, 41}, {105, 105, 119}, {106, 122, 41}, },
-              {{36, 122, -7}, },
-              {{36, 110, -30}, {111, 111, 120}, {112, 122, 41}, },
-              {{36, 109, -54}, {110, 110, 121}, {111, 122, 41}, },
-              {{36, 114, -52}, {115, 115, 122}, {116, 122, 41}, },
-              {{36, 122, -7}, },
-          }
-      };*/
+        return s.toString();
+    }
 
-  private static int[][] accept;
-  /*  {
-          // NORMAL
-          {-1, 38, 38, 38, 38, -1, 20, 21, 27, 24, 29, 25, 14, 30, 35, 35, 32, 16, 17, 26, -1, -1, -1, -1, 13, -1, 12, 18, 19, 33, 22, 28, 23, 38, -1, -1, 31, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 33, -1, 34, 34, -1, -1, -1, 39, 39, 36, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, 33, 37, -1, 39, 39, -1, -1, -1, 11, -1, -1, -1, -1, -1, 9, 33, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 4, -1, 3, 5, 1, -1, 7, -1, -1, -1, 6, },
-          // PACKAGE
-          {-1, 38, 38, 38, 38, 0, -1, 20, 21, 27, 24, 29, 25, 14, 30, 35, 35, 32, 16, 17, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 22, 28, 23, 38, 0, 0, 0, 0, 0, -1, -1, 31, 15, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 34, -1, -1, -1, 39, 39, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, -1, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
-   
-      };*/
+    private static int[][][][] gotoTable;
+/*  {
+        { // NORMAL
+            {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {39, 39, 5}, {40, 40, 6}, {41, 41, 7}, {42, 42, 8}, {43, 43, 9}, {44, 44, 10}, {45, 45, 11}, {46, 46, 12}, {47, 47, 13}, {48, 48, 14}, {49, 57, 15}, {58, 58, 16}, {59, 59, 17}, {61, 61, 18}, {63, 63, 19}, {65, 65, 20}, {72, 72, 21}, {73, 73, 22}, {78, 78, 23}, {80, 80, 24}, {83, 83, 25}, {84, 84, 26}, {91, 91, 27}, {93, 93, 28}, {97, 122, 29}, {123, 123, 30}, {124, 124, 31}, {125, 125, 32}, },
+            {{9, 32, -2}, },
+            {{9, 32, -2}, },
+            {{9, 9, 1}, {10, 10, 33}, {13, 32, -2}, },
+            {{9, 32, -2}, },
+            {{0, 9, 34}, {11, 12, 34}, {14, 38, 34}, {39, 39, 35}, {40, 65535, 34}, },
+            {},
+            {},
+            {},
+            {},
+            {},
+            {{62, 62, 36}, },
+            {{46, 46, 37}, },
+            {{42, 42, 38}, {47, 47, 39}, },
+            {{48, 57, 15}, {88, 88, 40}, {120, 120, 41}, },
+            {{48, 57, 15}, },
+            {},
+            {},
+            {},
+            {},
+            {{98, 98, 42}, },
+            {{101, 101, 43}, },
+            {{103, 103, 44}, },
+            {{101, 101, 45}, {117, 117, 46}, },
+            {{97, 97, 47}, {114, 114, 48}, },
+            {{116, 116, 49}, {121, 121, 50}, },
+            {{111, 111, 51}, {114, 114, 52}, },
+            {},
+            {},
+            {{48, 57, 53}, {95, 95, 54}, {97, 122, 55}, },
+            {},
+            {},
+            {},
+            {{9, 32, -2}, },
+            {{0, 9, 56}, {11, 12, 56}, {14, 38, 56}, {39, 39, 57}, {40, 65535, 56}, },
+            {{39, 39, 58}, },
+            {},
+            {},
+            {{0, 41, 59}, {42, 42, 60}, {43, 65535, 59}, },
+            {{0, 9, 61}, {10, 10, 62}, {11, 12, 61}, {13, 13, 63}, {14, 65535, 61}, },
+            {{48, 57, 64}, {65, 70, 64}, {97, 102, 64}, },
+            {{48, 102, -42}, },
+            {{115, 115, 65}, },
+            {{108, 108, 66}, },
+            {{110, 110, 67}, },
+            {{119, 119, 68}, },
+            {{108, 108, 69}, },
+            {{99, 99, 70}, },
+            {{111, 111, 71}, },
+            {{97, 97, 72}, },
+            {{110, 110, 73}, },
+            {{107, 107, 74}, },
+            {{101, 101, 75}, },
+            {{48, 122, -31}, },
+            {{97, 122, 76}, },
+            {{48, 122, -31}, },
+            {{0, 38, -36}, {39, 39, 77}, {40, 65535, 56}, },
+            {},
+            {},
+            {{0, 65535, -40}, },
+            {{0, 41, 78}, {42, 42, 60}, {43, 46, 78}, {47, 47, 79}, {48, 65535, 78}, },
+            {{0, 65535, -41}, },
+            {},
+            {{10, 10, 80}, },
+            {{48, 102, -42}, },
+            {{116, 116, 81}, },
+            {{112, 112, 82}, },
+            {{111, 111, 83}, },
+            {},
+            {{108, 108, 84}, },
+            {{107, 107, 85}, },
+            {{100, 100, 86}, },
+            {{116, 116, 87}, },
+            {{116, 116, 88}, },
+            {{101, 101, 89}, },
+            {{101, 101, 90}, },
+            {{48, 57, 91}, {95, 95, 54}, {97, 122, 92}, },
+            {},
+            {{0, 41, 93}, {42, 42, 94}, {43, 65535, 93}, },
+            {},
+            {},
+            {{114, 114, 95}, },
+            {{101, 101, 96}, },
+            {{114, 114, 97}, },
+            {},
+            {{97, 97, 98}, },
+            {{117, 117, 99}, },
+            {{101, 101, 100}, },
+            {{97, 97, 101}, },
+            {{110, 110, 102}, },
+            {},
+            {{48, 122, -78}, },
+            {{48, 122, -78}, },
+            {{0, 65535, -80}, },
+            {{0, 41, 78}, {42, 42, 94}, {43, 65535, -62}, },
+            {{97, 97, 103}, },
+            {{114, 114, 104}, },
+            {{101, 101, 105}, },
+            {{103, 103, 106}, },
+            {{99, 99, 107}, },
+            {{115, 115, 108}, },
+            {{120, 120, 109}, },
+            {{115, 115, 110}, },
+            {{99, 99, 111}, },
+            {{115, 115, 112}, },
+            {{100, 100, 113}, },
+            {{101, 101, 114}, },
+            {{116, 116, 115}, },
+            {},
+            {},
+            {},
+            {{116, 116, 116}, },
+            {},
+            {},
+            {},
+            {{105, 105, 117}, },
+            {},
+            {{111, 111, 118}, },
+            {{110, 110, 119}, },
+            {{115, 115, 120}, },
+            {},
+        }
+        { // PACKAGE
+            {{9, 9, 1}, {10, 10, 2}, {13, 13, 3}, {32, 32, 4}, {36, 36, 5}, {39, 39, 6}, {40, 40, 7}, {41, 41, 8}, {42, 42, 9}, {43, 43, 10}, {44, 44, 11}, {45, 45, 12}, {46, 46, 13}, {47, 47, 14}, {48, 48, 15}, {49, 57, 16}, {58, 58, 17}, {59, 59, 18}, {61, 61, 19}, {63, 63, 20}, {65, 65, 21}, {66, 71, 22}, {72, 72, 23}, {73, 73, 24}, {74, 77, 22}, {78, 78, 25}, {79, 79, 22}, {80, 80, 26}, {81, 82, 22}, {83, 83, 27}, {84, 84, 28}, {85, 90, 22}, {91, 91, 29}, {93, 93, 30}, {95, 95, 31},  [...]
+            {{9, 32, -2}, },
+            {{9, 32, -2}, },
+            {{9, 9, 1}, {10, 10, 36}, {13, 32, -2}, },
+            {{9, 32, -2}, },
+            {{36, 36, 37}, {48, 57, 38}, {65, 90, 39}, {95, 95, 40}, {97, 122, 41}, },
+            {{0, 9, 42}, {11, 12, 42}, {14, 38, 42}, {39, 39, 43}, {40, 65535, 42}, },
+            {},
+            {},
+            {},
+            {},
+            {},
+            {{62, 62, 44}, },
+            {{46, 46, 45}, },
+            {{42, 42, 46}, {47, 47, 47}, },
+            {{48, 57, 16}, {88, 88, 48}, {120, 120, 49}, },
+            {{48, 57, 16}, },
+            {},
+            {},
+            {},
+            {},
+            {{36, 95, -7}, {97, 97, 41}, {98, 98, 50}, {99, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 95, -7}, {97, 100, 41}, {101, 101, 51}, {102, 122, 41}, },
+            {{36, 95, -7}, {97, 102, 41}, {103, 103, 52}, {104, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 53}, {102, 116, 41}, {117, 117, 54}, {118, 122, 41}, },
+            {{36, 95, -7}, {97, 113, 41}, {114, 114, 55}, {115, 122, 41}, },
+            {{36, 95, -7}, {97, 115, 41}, {116, 116, 56}, {117, 120, 41}, {121, 121, 57}, {122, 122, 41}, },
+            {{36, 95, -7}, {97, 110, 41}, {111, 111, 58}, {112, 113, 41}, {114, 114, 59}, {115, 122, 41}, },
+            {},
+            {},
+            {{36, 122, -7}, },
+            {{36, 36, 37}, {48, 57, 60}, {65, 90, 39}, {95, 95, 61}, {97, 122, 62}, },
+            {},
+            {},
+            {},
+            {{9, 32, -2}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{0, 9, 63}, {11, 12, 63}, {14, 38, 63}, {39, 39, 64}, {40, 65535, 63}, },
+            {{39, 39, 65}, },
+            {},
+            {},
+            {{0, 41, 66}, {42, 42, 67}, {43, 65535, 66}, },
+            {{0, 9, 68}, {10, 10, 69}, {11, 12, 68}, {13, 13, 70}, {14, 65535, 68}, },
+            {{48, 57, 71}, {65, 70, 71}, {97, 102, 71}, },
+            {{48, 102, -50}, },
+            {{36, 95, -7}, {97, 114, 41}, {115, 115, 72}, {116, 122, 41}, },
+            {{36, 95, -7}, {97, 107, 41}, {108, 108, 73}, {109, 122, 41}, },
+            {{36, 95, -7}, {97, 109, 41}, {110, 110, 74}, {111, 122, 41}, },
+            {{36, 95, -7}, {97, 118, 41}, {119, 119, 75}, {120, 122, 41}, },
+            {{36, 107, -53}, {108, 108, 76}, {109, 122, 41}, },
+            {{36, 110, -30}, {111, 111, 77}, {112, 122, 41}, },
+            {{36, 95, -7}, {97, 97, 78}, {98, 122, 41}, },
+            {{36, 109, -54}, {110, 110, 79}, {111, 122, 41}, },
+            {{36, 95, -7}, {97, 106, 41}, {107, 107, 80}, {108, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 81}, {102, 122, 41}, },
+            {{36, 122, -34}, },
+            {{36, 95, -7}, {97, 122, 82}, },
+            {{36, 122, -34}, },
+            {{0, 38, -44}, {39, 39, 83}, {40, 65535, 63}, },
+            {},
+            {},
+            {{0, 65535, -48}, },
+            {{0, 41, 84}, {42, 42, 67}, {43, 46, 84}, {47, 47, 85}, {48, 65535, 84}, },
+            {{0, 65535, -49}, },
+            {},
+            {{10, 10, 86}, },
+            {{48, 102, -50}, },
+            {{36, 115, -29}, {116, 116, 87}, {117, 122, 41}, },
+            {{36, 95, -7}, {97, 111, 41}, {112, 112, 88}, {113, 122, 41}, },
+            {{36, 110, -30}, {111, 111, 89}, {112, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 107, -53}, {108, 108, 90}, {109, 122, 41}, },
+            {{36, 95, -7}, {97, 99, 41}, {100, 100, 91}, {101, 122, 41}, },
+            {{36, 115, -29}, {116, 116, 92}, {117, 122, 41}, },
+            {{36, 115, -29}, {116, 116, 93}, {117, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 94}, {102, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 95}, {102, 122, 41}, },
+            {{36, 36, 37}, {48, 57, 96}, {65, 95, -34}, {97, 122, 97}, },
+            {},
+            {{0, 41, 98}, {42, 42, 99}, {43, 65535, 98}, },
+            {},
+            {},
+            {{36, 113, -28}, {114, 114, 100}, {115, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 101}, {102, 122, 41}, },
+            {{36, 113, -28}, {114, 114, 102}, {115, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 95, -7}, {97, 116, 41}, {117, 117, 103}, {118, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 104}, {102, 122, 41}, },
+            {{36, 95, -7}, {97, 97, 105}, {98, 122, 41}, },
+            {{36, 109, -54}, {110, 110, 106}, {111, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 122, -84}, },
+            {{36, 122, -84}, },
+            {{0, 65535, -86}, },
+            {{0, 41, 84}, {42, 42, 99}, {43, 65535, -69}, },
+            {{36, 95, -7}, {97, 97, 107}, {98, 122, 41}, },
+            {{36, 113, -28}, {114, 114, 108}, {115, 122, 41}, },
+            {{36, 100, -25}, {101, 101, 109}, {102, 122, 41}, },
+            {{36, 95, -7}, {97, 98, 41}, {99, 99, 110}, {100, 122, 41}, },
+            {{36, 114, -52}, {115, 115, 111}, {116, 122, 41}, },
+            {{36, 95, -7}, {97, 119, 41}, {120, 120, 112}, {121, 122, 41}, },
+            {{36, 114, -52}, {115, 115, 113}, {116, 122, 41}, },
+            {{36, 98, -105}, {99, 99, 114}, {100, 122, 41}, },
+            {{36, 114, -52}, {115, 115, 115}, {116, 122, 41}, },
+            {{36, 99, -79}, {100, 100, 116}, {101, 122, 41}, },
+            {{36, 115, -29}, {116, 116, 117}, {117, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{36, 115, -29}, {116, 116, 118}, {117, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 122, -7}, },
+            {{36, 95, -7}, {97, 104, 41}, {105, 105, 119}, {106, 122, 41}, },
+            {{36, 122, -7}, },
+            {{36, 110, -30}, {111, 111, 120}, {112, 122, 41}, },
+            {{36, 109, -54}, {110, 110, 121}, {111, 122, 41}, },
+            {{36, 114, -52}, {115, 115, 122}, {116, 122, 41}, },
+            {{36, 122, -7}, },
+        }
+    };*/
 
-  public static class State
-  {
-    public final static State NORMAL = new State(0);
-    public final static State PACKAGE = new State(1);
+    private static int[][] accept;
+/*  {
+        // NORMAL
+        {-1, 38, 38, 38, 38, -1, 20, 21, 27, 24, 29, 25, 14, 30, 35, 35, 32, 16, 17, 26, -1, -1, -1, -1, 13, -1, 12, 18, 19, 33, 22, 28, 23, 38, -1, -1, 31, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, 33, -1, 34, 34, -1, -1, -1, 39, 39, 36, -1, -1, -1, 10, -1, -1, -1, -1, -1, -1, -1, 33, 37, -1, 39, 39, -1, -1, -1, 11, -1, -1, -1, -1, -1, 9, 33, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 8, 4, -1, 3, 5, 1, -1, 7, -1, -1, -1, 6, },
+        // PACKAGE
+        {-1, 38, 38, 38, 38, 0, -1, 20, 21, 27, 24, 29, 25, 14, 30, 35, 35, 32, 16, 17, 26, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 22, 28, 23, 38, 0, 0, 0, 0, 0, -1, -1, 31, 15, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 34, -1, -1, -1, 39, 39, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, -1, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, },
 
-    private int id;
+    };*/
 
-    private State(int id)
+    public static class State
     {
-      this.id = id;
-    }
+        public final static State NORMAL = new State(0);
+        public final static State PACKAGE = new State(1);
 
-    public int id()
-    {
-      return id;
+        private int id;
+
+        private State(@SuppressWarnings("hiding") int id)
+        {
+            this.id = id;
+        }
+
+        public int id()
+        {
+            return this.id;
+        }
     }
-  }
 
-  static
-  {
-    try
+    static 
     {
-      DataInputStream s = new DataInputStream(
-                            new BufferedInputStream(
-                              Lexer.class.getResourceAsStream("lexer.dat")));
-
-      // read gotoTable
-      int length = s.readInt();
-      gotoTable = new int[length][][][];
-      for(int i = 0; i < gotoTable.length; i++)
-      {
-        length = s.readInt();
-        gotoTable[i] = new int[length][][];
-        for(int j = 0; j < gotoTable[i].length; j++)
+        try
         {
-          length = s.readInt();
-          gotoTable[i][j] = new int[length][3];
-          for(int k = 0; k < gotoTable[i][j].length; k++)
-          {
-            for(int l = 0; l < 3; l++)
+            DataInputStream s = new DataInputStream(
+                new BufferedInputStream(
+                Lexer.class.getResourceAsStream("lexer.dat")));
+
+            // read gotoTable
+            int length = s.readInt();
+            gotoTable = new int[length][][][];
+            for(int i = 0; i < gotoTable.length; i++)
             {
-              gotoTable[i][j][k][l] = s.readInt();
+                length = s.readInt();
+                gotoTable[i] = new int[length][][];
+                for(int j = 0; j < gotoTable[i].length; j++)
+                {
+                    length = s.readInt();
+                    gotoTable[i][j] = new int[length][3];
+                    for(int k = 0; k < gotoTable[i][j].length; k++)
+                    {
+                        for(int l = 0; l < 3; l++)
+                        {
+                            gotoTable[i][j][k][l] = s.readInt();
+                        }
+                    }
+                }
+            }
+
+            // read accept
+            length = s.readInt();
+            accept = new int[length][];
+            for(int i = 0; i < accept.length; i++)
+            {
+                length = s.readInt();
+                accept[i] = new int[length];
+                for(int j = 0; j < accept[i].length; j++)
+                {
+                    accept[i][j] = s.readInt();
+                }
             }
-          }
-        }
-      }
 
-      // read accept
-      length = s.readInt();
-      accept = new int[length][];
-      for(int i = 0; i < accept.length; i++)
-      {
-        length = s.readInt();
-        accept[i] = new int[length];
-        for(int j = 0; j < accept[i].length; j++)
+            s.close();
+        }
+        catch(Exception e)
         {
-          accept[i][j] = s.readInt();
+            throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted.");
         }
-      }
-
-      s.close();
-    }
-    catch(Exception e)
-    {
-      throw new RuntimeException("The file \"lexer.dat\" is either missing or corrupted.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/lexer/LexerException.java b/src/org/sablecc/sablecc/lexer/LexerException.java
index 3e888e4..e1065fa 100644
--- a/src/org/sablecc/sablecc/lexer/LexerException.java
+++ b/src/org/sablecc/sablecc/lexer/LexerException.java
@@ -2,10 +2,21 @@
 
 package org.sablecc.sablecc.lexer;
 
+import org.sablecc.sablecc.node.*;
+
+ at SuppressWarnings("serial")
 public class LexerException extends Exception
 {
-  public LexerException(String message)
-  {
-    super(message);
-  }
+    private InvalidToken invalidToken;
+    
+    public LexerException(@SuppressWarnings("hiding") InvalidToken invalidToken, String message)
+    {
+        super(message);
+        this.invalidToken = invalidToken;
+    }
+
+    public InvalidToken getToken()
+    {
+        return this.invalidToken;
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AAlt.java b/src/org/sablecc/sablecc/node/AAlt.java
index 97b1e8c..280d405 100644
--- a/src/org/sablecc/sablecc/node/AAlt.java
+++ b/src/org/sablecc/sablecc/node/AAlt.java
@@ -5,185 +5,190 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AAlt extends PAlt
 {
-  private TId _altName_;
-  private final LinkedList _elems_ = new TypedLinkedList(new Elems_Cast());
-  private PAltTransform _altTransform_;
+    private TId _altName_;
+    private final LinkedList<PElem> _elems_ = new LinkedList<PElem>();
+    private PAltTransform _altTransform_;
 
-  public AAlt()
-  {}
-
-  public AAlt(
-    TId _altName_,
-    List _elems_,
-    PAltTransform _altTransform_)
-  {
-    setAltName(_altName_);
+    public AAlt()
+    {
+        // Constructor
+    }
 
+    public AAlt(
+        @SuppressWarnings("hiding") TId _altName_,
+        @SuppressWarnings("hiding") List<?> _elems_,
+        @SuppressWarnings("hiding") PAltTransform _altTransform_)
     {
-      this._elems_.clear();
-      this._elems_.addAll(_elems_);
+        // Constructor
+        setAltName(_altName_);
+
+        setElems(_elems_);
+
+        setAltTransform(_altTransform_);
+
     }
 
-    setAltTransform(_altTransform_);
-
-  }
-  public Object clone()
-  {
-    return new AAlt(
-             (TId) cloneNode(_altName_),
-             cloneList(_elems_),
-             (PAltTransform) cloneNode(_altTransform_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAAlt(this);
-  }
-
-  public TId getAltName()
-  {
-    return _altName_;
-  }
-
-  public void setAltName(TId node)
-  {
-    if(_altName_ != null)
+    @Override
+    public Object clone()
     {
-      _altName_.parent(null);
+        return new AAlt(
+            cloneNode(this._altName_),
+            cloneList(this._elems_),
+            cloneNode(this._altTransform_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        ((Analysis) sw).caseAAlt(this);
+    }
 
-      node.parent(this);
+    public TId getAltName()
+    {
+        return this._altName_;
     }
 
-    _altName_ = node;
-  }
+    public void setAltName(TId node)
+    {
+        if(this._altName_ != null)
+        {
+            this._altName_.parent(null);
+        }
 
-  public LinkedList getElems()
-  {
-    return _elems_;
-  }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-  public void setElems(List list)
-  {
-    _elems_.clear();
-    _elems_.addAll(list);
-  }
+            node.parent(this);
+        }
 
-  public PAltTransform getAltTransform()
-  {
-    return _altTransform_;
-  }
+        this._altName_ = node;
+    }
 
-  public void setAltTransform(PAltTransform node)
-  {
-    if(_altTransform_ != null)
+    public LinkedList<PElem> getElems()
     {
-      _altTransform_.parent(null);
+        return this._elems_;
     }
 
-    if(node != null)
+    public void setElems(List<?> list)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        for(PElem e : this._elems_)
+        {
+            e.parent(null);
+        }
+        this._elems_.clear();
 
-      node.parent(this);
+        for(Object obj_e : list)
+        {
+            PElem e = (PElem) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._elems_.add(e);
+        }
     }
 
-    _altTransform_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_altName_)
-           + toString(_elems_)
-           + toString(_altTransform_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_altName_ == child)
+    public PAltTransform getAltTransform()
     {
-      _altName_ = null;
-      return;
+        return this._altTransform_;
     }
 
-    if(_elems_.remove(child))
+    public void setAltTransform(PAltTransform node)
     {
-      return;
-    }
+        if(this._altTransform_ != null)
+        {
+            this._altTransform_.parent(null);
+        }
 
-    if(_altTransform_ == child)
-    {
-      _altTransform_ = null;
-      return;
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-  }
+            node.parent(this);
+        }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_altName_ == oldChild)
+        this._altTransform_ = node;
+    }
+
+    @Override
+    public String toString()
     {
-      setAltName((TId) newChild);
-      return;
+        return ""
+            + toString(this._altName_)
+            + toString(this._elems_)
+            + toString(this._altTransform_);
     }
 
-    for(ListIterator i = _elems_.listIterator(); i.hasNext();)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        // Remove child
+        if(this._altName_ == child)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            this._altName_ = null;
+            return;
         }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
-    }
+        if(this._elems_.remove(child))
+        {
+            return;
+        }
 
-    if(_altTransform_ == oldChild)
-    {
-      setAltTransform((PAltTransform) newChild);
-      return;
-    }
+        if(this._altTransform_ == child)
+        {
+            this._altTransform_ = null;
+            return;
+        }
 
-  }
+        throw new RuntimeException("Not a child.");
+    }
 
-  private class Elems_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      PElem node = (PElem) o;
+        // Replace child
+        if(this._altName_ == oldChild)
+        {
+            setAltName((TId) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AAlt.this))
-      {
-        node.parent().removeChild(node);
-      }
+        for(ListIterator<PElem> i = this._elems_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PElem) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AAlt.this))
-      {
-        node.parent(AAlt.this);
-      }
+        if(this._altTransform_ == oldChild)
+        {
+            setAltTransform((PAltTransform) newChild);
+            return;
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AAltTransform.java b/src/org/sablecc/sablecc/node/AAltTransform.java
index 2cd658d..b812fb8 100644
--- a/src/org/sablecc/sablecc/node/AAltTransform.java
+++ b/src/org/sablecc/sablecc/node/AAltTransform.java
@@ -5,185 +5,190 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AAltTransform extends PAltTransform
 {
-  private TLBrace _lBrace_;
-  private final LinkedList _terms_ = new TypedLinkedList(new Terms_Cast());
-  private TRBrace _rBrace_;
+    private TLBrace _lBrace_;
+    private final LinkedList<PTerm> _terms_ = new LinkedList<PTerm>();
+    private TRBrace _rBrace_;
 
-  public AAltTransform()
-  {}
-
-  public AAltTransform(
-    TLBrace _lBrace_,
-    List _terms_,
-    TRBrace _rBrace_)
-  {
-    setLBrace(_lBrace_);
+    public AAltTransform()
+    {
+        // Constructor
+    }
 
+    public AAltTransform(
+        @SuppressWarnings("hiding") TLBrace _lBrace_,
+        @SuppressWarnings("hiding") List<?> _terms_,
+        @SuppressWarnings("hiding") TRBrace _rBrace_)
     {
-      this._terms_.clear();
-      this._terms_.addAll(_terms_);
+        // Constructor
+        setLBrace(_lBrace_);
+
+        setTerms(_terms_);
+
+        setRBrace(_rBrace_);
+
     }
 
-    setRBrace(_rBrace_);
-
-  }
-  public Object clone()
-  {
-    return new AAltTransform(
-             (TLBrace) cloneNode(_lBrace_),
-             cloneList(_terms_),
-             (TRBrace) cloneNode(_rBrace_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAAltTransform(this);
-  }
-
-  public TLBrace getLBrace()
-  {
-    return _lBrace_;
-  }
-
-  public void setLBrace(TLBrace node)
-  {
-    if(_lBrace_ != null)
+    @Override
+    public Object clone()
     {
-      _lBrace_.parent(null);
+        return new AAltTransform(
+            cloneNode(this._lBrace_),
+            cloneList(this._terms_),
+            cloneNode(this._rBrace_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        ((Analysis) sw).caseAAltTransform(this);
+    }
 
-      node.parent(this);
+    public TLBrace getLBrace()
+    {
+        return this._lBrace_;
     }
 
-    _lBrace_ = node;
-  }
+    public void setLBrace(TLBrace node)
+    {
+        if(this._lBrace_ != null)
+        {
+            this._lBrace_.parent(null);
+        }
 
-  public LinkedList getTerms()
-  {
-    return _terms_;
-  }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-  public void setTerms(List list)
-  {
-    _terms_.clear();
-    _terms_.addAll(list);
-  }
+            node.parent(this);
+        }
 
-  public TRBrace getRBrace()
-  {
-    return _rBrace_;
-  }
+        this._lBrace_ = node;
+    }
 
-  public void setRBrace(TRBrace node)
-  {
-    if(_rBrace_ != null)
+    public LinkedList<PTerm> getTerms()
     {
-      _rBrace_.parent(null);
+        return this._terms_;
     }
 
-    if(node != null)
+    public void setTerms(List<?> list)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        for(PTerm e : this._terms_)
+        {
+            e.parent(null);
+        }
+        this._terms_.clear();
 
-      node.parent(this);
+        for(Object obj_e : list)
+        {
+            PTerm e = (PTerm) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._terms_.add(e);
+        }
     }
 
-    _rBrace_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_lBrace_)
-           + toString(_terms_)
-           + toString(_rBrace_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_lBrace_ == child)
+    public TRBrace getRBrace()
     {
-      _lBrace_ = null;
-      return;
+        return this._rBrace_;
     }
 
-    if(_terms_.remove(child))
+    public void setRBrace(TRBrace node)
     {
-      return;
-    }
+        if(this._rBrace_ != null)
+        {
+            this._rBrace_.parent(null);
+        }
 
-    if(_rBrace_ == child)
-    {
-      _rBrace_ = null;
-      return;
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-  }
+            node.parent(this);
+        }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_lBrace_ == oldChild)
+        this._rBrace_ = node;
+    }
+
+    @Override
+    public String toString()
     {
-      setLBrace((TLBrace) newChild);
-      return;
+        return ""
+            + toString(this._lBrace_)
+            + toString(this._terms_)
+            + toString(this._rBrace_);
     }
 
-    for(ListIterator i = _terms_.listIterator(); i.hasNext();)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        // Remove child
+        if(this._lBrace_ == child)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            this._lBrace_ = null;
+            return;
         }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
-    }
+        if(this._terms_.remove(child))
+        {
+            return;
+        }
 
-    if(_rBrace_ == oldChild)
-    {
-      setRBrace((TRBrace) newChild);
-      return;
-    }
+        if(this._rBrace_ == child)
+        {
+            this._rBrace_ = null;
+            return;
+        }
 
-  }
+        throw new RuntimeException("Not a child.");
+    }
 
-  private class Terms_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      PTerm node = (PTerm) o;
+        // Replace child
+        if(this._lBrace_ == oldChild)
+        {
+            setLBrace((TLBrace) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AAltTransform.this))
-      {
-        node.parent().removeChild(node);
-      }
+        for(ListIterator<PTerm> i = this._terms_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PTerm) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AAltTransform.this))
-      {
-        node.parent(AAltTransform.this);
-      }
+        if(this._rBrace_ == oldChild)
+        {
+            setRBrace((TRBrace) newChild);
+            return;
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AAst.java b/src/org/sablecc/sablecc/node/AAst.java
index a7b682b..2f8ddb1 100644
--- a/src/org/sablecc/sablecc/node/AAst.java
+++ b/src/org/sablecc/sablecc/node/AAst.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AAst extends PAst
 {
-  private final LinkedList _prods_ = new TypedLinkedList(new Prods_Cast());
+    private final LinkedList<PAstProd> _prods_ = new LinkedList<PAstProd>();
 
-  public AAst()
-  {}
+    public AAst()
+    {
+        // Constructor
+    }
 
-  public AAst(
-    List _prods_)
-  {
+    public AAst(
+        @SuppressWarnings("hiding") List<?> _prods_)
     {
-      this._prods_.clear();
-      this._prods_.addAll(_prods_);
+        // Constructor
+        setProds(_prods_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new AAst(
-             cloneList(_prods_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAAst(this);
-  }
-
-  public LinkedList getProds()
-  {
-    return _prods_;
-  }
-
-  public void setProds(List list)
-  {
-    _prods_.clear();
-    _prods_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_prods_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_prods_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new AAst(
+            cloneList(this._prods_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAAst(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _prods_.listIterator(); i.hasNext();)
+    public LinkedList<PAstProd> getProds()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._prods_;
+    }
+
+    public void setProds(List<?> list)
+    {
+        for(PAstProd e : this._prods_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._prods_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PAstProd e = (PAstProd) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._prods_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._prods_);
+    }
 
-  private class Prods_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PAstProd node = (PAstProd) o;
+        // Remove child
+        if(this._prods_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AAst.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != AAst.this))
-      {
-        node.parent(AAst.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<PAstProd> i = this._prods_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PAstProd) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AAstAlt.java b/src/org/sablecc/sablecc/node/AAstAlt.java
index d47495f..1c9e1df 100644
--- a/src/org/sablecc/sablecc/node/AAstAlt.java
+++ b/src/org/sablecc/sablecc/node/AAstAlt.java
@@ -5,142 +5,147 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AAstAlt extends PAstAlt
 {
-  private TId _altName_;
-  private final LinkedList _elems_ = new TypedLinkedList(new Elems_Cast());
-
-  public AAstAlt()
-  {}
-
-  public AAstAlt(
-    TId _altName_,
-    List _elems_)
-  {
-    setAltName(_altName_);
+    private TId _altName_;
+    private final LinkedList<PElem> _elems_ = new LinkedList<PElem>();
 
+    public AAstAlt()
     {
-      this._elems_.clear();
-      this._elems_.addAll(_elems_);
+        // Constructor
     }
 
-  }
-  public Object clone()
-  {
-    return new AAstAlt(
-             (TId) cloneNode(_altName_),
-             cloneList(_elems_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAAstAlt(this);
-  }
-
-  public TId getAltName()
-  {
-    return _altName_;
-  }
-
-  public void setAltName(TId node)
-  {
-    if(_altName_ != null)
+    public AAstAlt(
+        @SuppressWarnings("hiding") TId _altName_,
+        @SuppressWarnings("hiding") List<?> _elems_)
     {
-      _altName_.parent(null);
+        // Constructor
+        setAltName(_altName_);
+
+        setElems(_elems_);
+
     }
 
-    if(node != null)
+    @Override
+    public Object clone()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return new AAstAlt(
+            cloneNode(this._altName_),
+            cloneList(this._elems_));
     }
 
-    _altName_ = node;
-  }
-
-  public LinkedList getElems()
-  {
-    return _elems_;
-  }
-
-  public void setElems(List list)
-  {
-    _elems_.clear();
-    _elems_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_altName_)
-           + toString(_elems_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_altName_ == child)
+    @Override
+    public void apply(Switch sw)
     {
-      _altName_ = null;
-      return;
+        ((Analysis) sw).caseAAstAlt(this);
     }
 
-    if(_elems_.remove(child))
+    public TId getAltName()
     {
-      return;
+        return this._altName_;
     }
 
-  }
+    public void setAltName(TId node)
+    {
+        if(this._altName_ != null)
+        {
+            this._altName_.parent(null);
+        }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_altName_ == oldChild)
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._altName_ = node;
+    }
+
+    public LinkedList<PElem> getElems()
     {
-      setAltName((TId) newChild);
-      return;
+        return this._elems_;
     }
 
-    for(ListIterator i = _elems_.listIterator(); i.hasNext();)
+    public void setElems(List<?> list)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        for(PElem e : this._elems_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._elems_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PElem e = (PElem) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._elems_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._altName_)
+            + toString(this._elems_);
+    }
 
-  private class Elems_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PElem node = (PElem) o;
+        // Remove child
+        if(this._altName_ == child)
+        {
+            this._altName_ = null;
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AAstAlt.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._elems_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AAstAlt.this))
-      {
-        node.parent(AAstAlt.this);
-      }
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._altName_ == oldChild)
+        {
+            setAltName((TId) newChild);
+            return;
+        }
+
+        for(ListIterator<PElem> i = this._elems_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PElem) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AAstProd.java b/src/org/sablecc/sablecc/node/AAstProd.java
index 85ee56f..f2a2f87 100644
--- a/src/org/sablecc/sablecc/node/AAstProd.java
+++ b/src/org/sablecc/sablecc/node/AAstProd.java
@@ -5,142 +5,147 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AAstProd extends PAstProd
 {
-  private TId _id_;
-  private final LinkedList _alts_ = new TypedLinkedList(new Alts_Cast());
-
-  public AAstProd()
-  {}
-
-  public AAstProd(
-    TId _id_,
-    List _alts_)
-  {
-    setId(_id_);
+    private TId _id_;
+    private final LinkedList<PAstAlt> _alts_ = new LinkedList<PAstAlt>();
 
+    public AAstProd()
     {
-      this._alts_.clear();
-      this._alts_.addAll(_alts_);
+        // Constructor
     }
 
-  }
-  public Object clone()
-  {
-    return new AAstProd(
-             (TId) cloneNode(_id_),
-             cloneList(_alts_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAAstProd(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    public AAstProd(
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") List<?> _alts_)
     {
-      _id_.parent(null);
+        // Constructor
+        setId(_id_);
+
+        setAlts(_alts_);
+
     }
 
-    if(node != null)
+    @Override
+    public Object clone()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return new AAstProd(
+            cloneNode(this._id_),
+            cloneList(this._alts_));
     }
 
-    _id_ = node;
-  }
-
-  public LinkedList getAlts()
-  {
-    return _alts_;
-  }
-
-  public void setAlts(List list)
-  {
-    _alts_.clear();
-    _alts_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_id_)
-           + toString(_alts_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    @Override
+    public void apply(Switch sw)
     {
-      _id_ = null;
-      return;
+        ((Analysis) sw).caseAAstProd(this);
     }
 
-    if(_alts_.remove(child))
+    public TId getId()
     {
-      return;
+        return this._id_;
     }
 
-  }
+    public void setId(TId node)
+    {
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
+    }
+
+    public LinkedList<PAstAlt> getAlts()
     {
-      setId((TId) newChild);
-      return;
+        return this._alts_;
     }
 
-    for(ListIterator i = _alts_.listIterator(); i.hasNext();)
+    public void setAlts(List<?> list)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        for(PAstAlt e : this._alts_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._alts_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PAstAlt e = (PAstAlt) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._alts_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._id_)
+            + toString(this._alts_);
+    }
 
-  private class Alts_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PAstAlt node = (PAstAlt) o;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AAstProd.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._alts_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AAstProd.this))
-      {
-        node.parent(AAstProd.this);
-      }
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        for(ListIterator<PAstAlt> i = this._alts_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PAstAlt) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ACharBasic.java b/src/org/sablecc/sablecc/node/ACharBasic.java
index e0c320a..18b39c0 100644
--- a/src/org/sablecc/sablecc/node/ACharBasic.java
+++ b/src/org/sablecc/sablecc/node/ACharBasic.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ACharBasic extends PBasic
 {
-  private PChar _char_;
-
-  public ACharBasic()
-  {}
-
-  public ACharBasic(
-    PChar _char_)
-  {
-    setChar(_char_);
-
-  }
-  public Object clone()
-  {
-    return new ACharBasic(
-             (PChar) cloneNode(_char_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseACharBasic(this);
-  }
-
-  public PChar getChar()
-  {
-    return _char_;
-  }
-
-  public void setChar(PChar node)
-  {
-    if(_char_ != null)
+    private PChar _char_;
+
+    public ACharBasic()
     {
-      _char_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ACharBasic(
+        @SuppressWarnings("hiding") PChar _char_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setChar(_char_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new ACharBasic(
+            cloneNode(this._char_));
     }
 
-    _char_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseACharBasic(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_char_);
-  }
+    public PChar getChar()
+    {
+        return this._char_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_char_ == child)
+    public void setChar(PChar node)
     {
-      _char_ = null;
-      return;
+        if(this._char_ != null)
+        {
+            this._char_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._char_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._char_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_char_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setChar((PChar) newChild);
-      return;
+        // Remove child
+        if(this._char_ == child)
+        {
+            this._char_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._char_ == oldChild)
+        {
+            setChar((PChar) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ACharChar.java b/src/org/sablecc/sablecc/node/ACharChar.java
index e7cd222..1d46118 100644
--- a/src/org/sablecc/sablecc/node/ACharChar.java
+++ b/src/org/sablecc/sablecc/node/ACharChar.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ACharChar extends PChar
 {
-  private TChar _char_;
-
-  public ACharChar()
-  {}
-
-  public ACharChar(
-    TChar _char_)
-  {
-    setChar(_char_);
-
-  }
-  public Object clone()
-  {
-    return new ACharChar(
-             (TChar) cloneNode(_char_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseACharChar(this);
-  }
-
-  public TChar getChar()
-  {
-    return _char_;
-  }
-
-  public void setChar(TChar node)
-  {
-    if(_char_ != null)
+    private TChar _char_;
+
+    public ACharChar()
     {
-      _char_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ACharChar(
+        @SuppressWarnings("hiding") TChar _char_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setChar(_char_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new ACharChar(
+            cloneNode(this._char_));
     }
 
-    _char_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseACharChar(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_char_);
-  }
+    public TChar getChar()
+    {
+        return this._char_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_char_ == child)
+    public void setChar(TChar node)
     {
-      _char_ = null;
-      return;
+        if(this._char_ != null)
+        {
+            this._char_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._char_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._char_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_char_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setChar((TChar) newChild);
-      return;
+        // Remove child
+        if(this._char_ == child)
+        {
+            this._char_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._char_ == oldChild)
+        {
+            setChar((TChar) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AConcat.java b/src/org/sablecc/sablecc/node/AConcat.java
index 41a8d0b..1a813d0 100644
--- a/src/org/sablecc/sablecc/node/AConcat.java
+++ b/src/org/sablecc/sablecc/node/AConcat.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AConcat extends PConcat
 {
-  private final LinkedList _unExps_ = new TypedLinkedList(new UnExps_Cast());
+    private final LinkedList<PUnExp> _unExps_ = new LinkedList<PUnExp>();
 
-  public AConcat()
-  {}
+    public AConcat()
+    {
+        // Constructor
+    }
 
-  public AConcat(
-    List _unExps_)
-  {
+    public AConcat(
+        @SuppressWarnings("hiding") List<?> _unExps_)
     {
-      this._unExps_.clear();
-      this._unExps_.addAll(_unExps_);
+        // Constructor
+        setUnExps(_unExps_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new AConcat(
-             cloneList(_unExps_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAConcat(this);
-  }
-
-  public LinkedList getUnExps()
-  {
-    return _unExps_;
-  }
-
-  public void setUnExps(List list)
-  {
-    _unExps_.clear();
-    _unExps_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_unExps_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_unExps_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new AConcat(
+            cloneList(this._unExps_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAConcat(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _unExps_.listIterator(); i.hasNext();)
+    public LinkedList<PUnExp> getUnExps()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._unExps_;
+    }
+
+    public void setUnExps(List<?> list)
+    {
+        for(PUnExp e : this._unExps_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._unExps_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PUnExp e = (PUnExp) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._unExps_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._unExps_);
+    }
 
-  private class UnExps_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PUnExp node = (PUnExp) o;
+        // Remove child
+        if(this._unExps_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AConcat.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != AConcat.this))
-      {
-        node.parent(AConcat.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<PUnExp> i = this._unExps_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PUnExp) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ADecChar.java b/src/org/sablecc/sablecc/node/ADecChar.java
index 6807187..2cc1735 100644
--- a/src/org/sablecc/sablecc/node/ADecChar.java
+++ b/src/org/sablecc/sablecc/node/ADecChar.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ADecChar extends PChar
 {
-  private TDecChar _decChar_;
-
-  public ADecChar()
-  {}
-
-  public ADecChar(
-    TDecChar _decChar_)
-  {
-    setDecChar(_decChar_);
-
-  }
-  public Object clone()
-  {
-    return new ADecChar(
-             (TDecChar) cloneNode(_decChar_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseADecChar(this);
-  }
-
-  public TDecChar getDecChar()
-  {
-    return _decChar_;
-  }
-
-  public void setDecChar(TDecChar node)
-  {
-    if(_decChar_ != null)
+    private TDecChar _decChar_;
+
+    public ADecChar()
     {
-      _decChar_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ADecChar(
+        @SuppressWarnings("hiding") TDecChar _decChar_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setDecChar(_decChar_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new ADecChar(
+            cloneNode(this._decChar_));
     }
 
-    _decChar_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseADecChar(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_decChar_);
-  }
+    public TDecChar getDecChar()
+    {
+        return this._decChar_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_decChar_ == child)
+    public void setDecChar(TDecChar node)
     {
-      _decChar_ = null;
-      return;
+        if(this._decChar_ != null)
+        {
+            this._decChar_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._decChar_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._decChar_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_decChar_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setDecChar((TDecChar) newChild);
-      return;
+        // Remove child
+        if(this._decChar_ == child)
+        {
+            this._decChar_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._decChar_ == oldChild)
+        {
+            setDecChar((TDecChar) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AElem.java b/src/org/sablecc/sablecc/node/AElem.java
index 891d0b6..7a3ecb3 100644
--- a/src/org/sablecc/sablecc/node/AElem.java
+++ b/src/org/sablecc/sablecc/node/AElem.java
@@ -2,210 +2,223 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AElem extends PElem
 {
-  private TId _elemName_;
-  private PSpecifier _specifier_;
-  private TId _id_;
-  private PUnOp _unOp_;
-
-  public AElem()
-  {}
-
-  public AElem(
-    TId _elemName_,
-    PSpecifier _specifier_,
-    TId _id_,
-    PUnOp _unOp_)
-  {
-    setElemName(_elemName_);
-
-    setSpecifier(_specifier_);
-
-    setId(_id_);
-
-    setUnOp(_unOp_);
-
-  }
-  public Object clone()
-  {
-    return new AElem(
-             (TId) cloneNode(_elemName_),
-             (PSpecifier) cloneNode(_specifier_),
-             (TId) cloneNode(_id_),
-             (PUnOp) cloneNode(_unOp_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAElem(this);
-  }
-
-  public TId getElemName()
-  {
-    return _elemName_;
-  }
-
-  public void setElemName(TId node)
-  {
-    if(_elemName_ != null)
+    private TId _elemName_;
+    private PSpecifier _specifier_;
+    private TId _id_;
+    private PUnOp _unOp_;
+
+    public AElem()
     {
-      _elemName_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AElem(
+        @SuppressWarnings("hiding") TId _elemName_,
+        @SuppressWarnings("hiding") PSpecifier _specifier_,
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") PUnOp _unOp_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setElemName(_elemName_);
 
-      node.parent(this);
-    }
+        setSpecifier(_specifier_);
 
-    _elemName_ = node;
-  }
+        setId(_id_);
 
-  public PSpecifier getSpecifier()
-  {
-    return _specifier_;
-  }
+        setUnOp(_unOp_);
 
-  public void setSpecifier(PSpecifier node)
-  {
-    if(_specifier_ != null)
-    {
-      _specifier_.parent(null);
     }
 
-    if(node != null)
+    @Override
+    public Object clone()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return new AElem(
+            cloneNode(this._elemName_),
+            cloneNode(this._specifier_),
+            cloneNode(this._id_),
+            cloneNode(this._unOp_));
     }
 
-    _specifier_ = node;
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAElem(this);
+    }
 
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    public TId getElemName()
     {
-      _id_.parent(null);
+        return this._elemName_;
     }
 
-    if(node != null)
+    public void setElemName(TId node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._elemName_ != null)
+        {
+            this._elemName_.parent(null);
+        }
 
-      node.parent(this);
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-    _id_ = node;
-  }
+            node.parent(this);
+        }
 
-  public PUnOp getUnOp()
-  {
-    return _unOp_;
-  }
+        this._elemName_ = node;
+    }
 
-  public void setUnOp(PUnOp node)
-  {
-    if(_unOp_ != null)
+    public PSpecifier getSpecifier()
     {
-      _unOp_.parent(null);
+        return this._specifier_;
     }
 
-    if(node != null)
+    public void setSpecifier(PSpecifier node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._specifier_ != null)
+        {
+            this._specifier_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-      node.parent(this);
+            node.parent(this);
+        }
+
+        this._specifier_ = node;
     }
 
-    _unOp_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_elemName_)
-           + toString(_specifier_)
-           + toString(_id_)
-           + toString(_unOp_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_elemName_ == child)
+    public TId getId()
     {
-      _elemName_ = null;
-      return;
+        return this._id_;
     }
 
-    if(_specifier_ == child)
+    public void setId(TId node)
     {
-      _specifier_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_id_ == child)
+    public PUnOp getUnOp()
     {
-      _id_ = null;
-      return;
+        return this._unOp_;
     }
 
-    if(_unOp_ == child)
+    public void setUnOp(PUnOp node)
     {
-      _unOp_ = null;
-      return;
-    }
+        if(this._unOp_ != null)
+        {
+            this._unOp_.parent(null);
+        }
 
-  }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_elemName_ == oldChild)
-    {
-      setElemName((TId) newChild);
-      return;
+            node.parent(this);
+        }
+
+        this._unOp_ = node;
     }
 
-    if(_specifier_ == oldChild)
+    @Override
+    public String toString()
     {
-      setSpecifier((PSpecifier) newChild);
-      return;
+        return ""
+            + toString(this._elemName_)
+            + toString(this._specifier_)
+            + toString(this._id_)
+            + toString(this._unOp_);
     }
 
-    if(_id_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setId((TId) newChild);
-      return;
+        // Remove child
+        if(this._elemName_ == child)
+        {
+            this._elemName_ = null;
+            return;
+        }
+
+        if(this._specifier_ == child)
+        {
+            this._specifier_ = null;
+            return;
+        }
+
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._unOp_ == child)
+        {
+            this._unOp_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-    if(_unOp_ == oldChild)
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      setUnOp((PUnOp) newChild);
-      return;
-    }
+        // Replace child
+        if(this._elemName_ == oldChild)
+        {
+            setElemName((TId) newChild);
+            return;
+        }
+
+        if(this._specifier_ == oldChild)
+        {
+            setSpecifier((PSpecifier) newChild);
+            return;
+        }
 
-  }
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._unOp_ == oldChild)
+        {
+            setUnOp((PUnOp) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AGrammar.java b/src/org/sablecc/sablecc/node/AGrammar.java
index c8b4fb3..5d8b16c 100644
--- a/src/org/sablecc/sablecc/node/AGrammar.java
+++ b/src/org/sablecc/sablecc/node/AGrammar.java
@@ -5,357 +5,362 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AGrammar extends PGrammar
 {
-  private final LinkedList _package_ = new TypedLinkedList(new Package_Cast());
-  private PHelpers _helpers_;
-  private PStates _states_;
-  private PTokens _tokens_;
-  private PIgnTokens _ignTokens_;
-  private PProductions _productions_;
-  private PAst _ast_;
-
-  public AGrammar()
-  {}
-
-  public AGrammar(
-    List _package_,
-    PHelpers _helpers_,
-    PStates _states_,
-    PTokens _tokens_,
-    PIgnTokens _ignTokens_,
-    PProductions _productions_,
-    PAst _ast_)
-  {
+    private final LinkedList<TPkgId> _package_ = new LinkedList<TPkgId>();
+    private PHelpers _helpers_;
+    private PStates _states_;
+    private PTokens _tokens_;
+    private PIgnTokens _ignTokens_;
+    private PProductions _productions_;
+    private PAst _ast_;
+
+    public AGrammar()
     {
-      this._package_.clear();
-      this._package_.addAll(_package_);
+        // Constructor
     }
 
-    setHelpers(_helpers_);
-
-    setStates(_states_);
-
-    setTokens(_tokens_);
-
-    setIgnTokens(_ignTokens_);
+    public AGrammar(
+        @SuppressWarnings("hiding") List<?> _package_,
+        @SuppressWarnings("hiding") PHelpers _helpers_,
+        @SuppressWarnings("hiding") PStates _states_,
+        @SuppressWarnings("hiding") PTokens _tokens_,
+        @SuppressWarnings("hiding") PIgnTokens _ignTokens_,
+        @SuppressWarnings("hiding") PProductions _productions_,
+        @SuppressWarnings("hiding") PAst _ast_)
+    {
+        // Constructor
+        setPackage(_package_);
 
-    setProductions(_productions_);
+        setHelpers(_helpers_);
 
-    setAst(_ast_);
+        setStates(_states_);
 
-  }
-  public Object clone()
-  {
-    return new AGrammar(
-             cloneList(_package_),
-             (PHelpers) cloneNode(_helpers_),
-             (PStates) cloneNode(_states_),
-             (PTokens) cloneNode(_tokens_),
-             (PIgnTokens) cloneNode(_ignTokens_),
-             (PProductions) cloneNode(_productions_),
-             (PAst) cloneNode(_ast_));
-  }
+        setTokens(_tokens_);
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAGrammar(this);
-  }
+        setIgnTokens(_ignTokens_);
 
-  public LinkedList getPackage()
-  {
-    return _package_;
-  }
+        setProductions(_productions_);
 
-  public void setPackage(List list)
-  {
-    _package_.clear();
-    _package_.addAll(list);
-  }
+        setAst(_ast_);
 
-  public PHelpers getHelpers()
-  {
-    return _helpers_;
-  }
+    }
 
-  public void setHelpers(PHelpers node)
-  {
-    if(_helpers_ != null)
+    @Override
+    public Object clone()
     {
-      _helpers_.parent(null);
+        return new AGrammar(
+            cloneList(this._package_),
+            cloneNode(this._helpers_),
+            cloneNode(this._states_),
+            cloneNode(this._tokens_),
+            cloneNode(this._ignTokens_),
+            cloneNode(this._productions_),
+            cloneNode(this._ast_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAGrammar(this);
     }
 
-    _helpers_ = node;
-  }
-
-  public PStates getStates()
-  {
-    return _states_;
-  }
-
-  public void setStates(PStates node)
-  {
-    if(_states_ != null)
+    public LinkedList<TPkgId> getPackage()
     {
-      _states_.parent(null);
+        return this._package_;
     }
 
-    if(node != null)
+    public void setPackage(List<?> list)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        for(TPkgId e : this._package_)
+        {
+            e.parent(null);
+        }
+        this._package_.clear();
 
-      node.parent(this);
+        for(Object obj_e : list)
+        {
+            TPkgId e = (TPkgId) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._package_.add(e);
+        }
     }
 
-    _states_ = node;
-  }
-
-  public PTokens getTokens()
-  {
-    return _tokens_;
-  }
-
-  public void setTokens(PTokens node)
-  {
-    if(_tokens_ != null)
+    public PHelpers getHelpers()
     {
-      _tokens_.parent(null);
+        return this._helpers_;
     }
 
-    if(node != null)
+    public void setHelpers(PHelpers node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._helpers_ != null)
+        {
+            this._helpers_.parent(null);
+        }
 
-      node.parent(this);
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-    _tokens_ = node;
-  }
+            node.parent(this);
+        }
 
-  public PIgnTokens getIgnTokens()
-  {
-    return _ignTokens_;
-  }
+        this._helpers_ = node;
+    }
 
-  public void setIgnTokens(PIgnTokens node)
-  {
-    if(_ignTokens_ != null)
+    public PStates getStates()
     {
-      _ignTokens_.parent(null);
+        return this._states_;
     }
 
-    if(node != null)
+    public void setStates(PStates node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._states_ != null)
+        {
+            this._states_.parent(null);
+        }
 
-      node.parent(this);
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-    _ignTokens_ = node;
-  }
+            node.parent(this);
+        }
 
-  public PProductions getProductions()
-  {
-    return _productions_;
-  }
+        this._states_ = node;
+    }
 
-  public void setProductions(PProductions node)
-  {
-    if(_productions_ != null)
+    public PTokens getTokens()
     {
-      _productions_.parent(null);
+        return this._tokens_;
     }
 
-    if(node != null)
+    public void setTokens(PTokens node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._tokens_ != null)
+        {
+            this._tokens_.parent(null);
+        }
 
-      node.parent(this);
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-    _productions_ = node;
-  }
+            node.parent(this);
+        }
 
-  public PAst getAst()
-  {
-    return _ast_;
-  }
+        this._tokens_ = node;
+    }
 
-  public void setAst(PAst node)
-  {
-    if(_ast_ != null)
+    public PIgnTokens getIgnTokens()
     {
-      _ast_.parent(null);
+        return this._ignTokens_;
     }
 
-    if(node != null)
+    public void setIgnTokens(PIgnTokens node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._ignTokens_ != null)
+        {
+            this._ignTokens_.parent(null);
+        }
 
-      node.parent(this);
-    }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-    _ast_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_package_)
-           + toString(_helpers_)
-           + toString(_states_)
-           + toString(_tokens_)
-           + toString(_ignTokens_)
-           + toString(_productions_)
-           + toString(_ast_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_package_.remove(child))
-    {
-      return;
+            node.parent(this);
+        }
+
+        this._ignTokens_ = node;
     }
 
-    if(_helpers_ == child)
+    public PProductions getProductions()
     {
-      _helpers_ = null;
-      return;
+        return this._productions_;
     }
 
-    if(_states_ == child)
+    public void setProductions(PProductions node)
     {
-      _states_ = null;
-      return;
+        if(this._productions_ != null)
+        {
+            this._productions_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._productions_ = node;
     }
 
-    if(_tokens_ == child)
+    public PAst getAst()
     {
-      _tokens_ = null;
-      return;
+        return this._ast_;
     }
 
-    if(_ignTokens_ == child)
+    public void setAst(PAst node)
     {
-      _ignTokens_ = null;
-      return;
+        if(this._ast_ != null)
+        {
+            this._ast_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._ast_ = node;
     }
 
-    if(_productions_ == child)
+    @Override
+    public String toString()
     {
-      _productions_ = null;
-      return;
+        return ""
+            + toString(this._package_)
+            + toString(this._helpers_)
+            + toString(this._states_)
+            + toString(this._tokens_)
+            + toString(this._ignTokens_)
+            + toString(this._productions_)
+            + toString(this._ast_);
     }
 
-    if(_ast_ == child)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      _ast_ = null;
-      return;
-    }
+        // Remove child
+        if(this._package_.remove(child))
+        {
+            return;
+        }
 
-  }
+        if(this._helpers_ == child)
+        {
+            this._helpers_ = null;
+            return;
+        }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _package_.listIterator(); i.hasNext();)
-    {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        if(this._states_ == child)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            this._states_ = null;
+            return;
         }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
-    }
+        if(this._tokens_ == child)
+        {
+            this._tokens_ = null;
+            return;
+        }
 
-    if(_helpers_ == oldChild)
-    {
-      setHelpers((PHelpers) newChild);
-      return;
-    }
+        if(this._ignTokens_ == child)
+        {
+            this._ignTokens_ = null;
+            return;
+        }
 
-    if(_states_ == oldChild)
-    {
-      setStates((PStates) newChild);
-      return;
-    }
+        if(this._productions_ == child)
+        {
+            this._productions_ = null;
+            return;
+        }
 
-    if(_tokens_ == oldChild)
-    {
-      setTokens((PTokens) newChild);
-      return;
-    }
+        if(this._ast_ == child)
+        {
+            this._ast_ = null;
+            return;
+        }
 
-    if(_ignTokens_ == oldChild)
-    {
-      setIgnTokens((PIgnTokens) newChild);
-      return;
+        throw new RuntimeException("Not a child.");
     }
 
-    if(_productions_ == oldChild)
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      setProductions((PProductions) newChild);
-      return;
-    }
+        // Replace child
+        for(ListIterator<TPkgId> i = this._package_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((TPkgId) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-    if(_ast_ == oldChild)
-    {
-      setAst((PAst) newChild);
-      return;
-    }
+        if(this._helpers_ == oldChild)
+        {
+            setHelpers((PHelpers) newChild);
+            return;
+        }
 
-  }
+        if(this._states_ == oldChild)
+        {
+            setStates((PStates) newChild);
+            return;
+        }
 
-  private class Package_Cast implements Cast
-  {
-    public Object cast(Object o)
-    {
-      TPkgId node = (TPkgId) o;
+        if(this._tokens_ == oldChild)
+        {
+            setTokens((PTokens) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AGrammar.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._ignTokens_ == oldChild)
+        {
+            setIgnTokens((PIgnTokens) newChild);
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AGrammar.this))
-      {
-        node.parent(AGrammar.this);
-      }
+        if(this._productions_ == oldChild)
+        {
+            setProductions((PProductions) newChild);
+            return;
+        }
+
+        if(this._ast_ == oldChild)
+        {
+            setAst((PAst) newChild);
+            return;
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AHelperDef.java b/src/org/sablecc/sablecc/node/AHelperDef.java
index d9cff12..0463fa0 100644
--- a/src/org/sablecc/sablecc/node/AHelperDef.java
+++ b/src/org/sablecc/sablecc/node/AHelperDef.java
@@ -2,124 +2,137 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AHelperDef extends PHelperDef
 {
-  private TId _id_;
-  private PRegExp _regExp_;
-
-  public AHelperDef()
-  {}
-
-  public AHelperDef(
-    TId _id_,
-    PRegExp _regExp_)
-  {
-    setId(_id_);
-
-    setRegExp(_regExp_);
-
-  }
-  public Object clone()
-  {
-    return new AHelperDef(
-             (TId) cloneNode(_id_),
-             (PRegExp) cloneNode(_regExp_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAHelperDef(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    private TId _id_;
+    private PRegExp _regExp_;
+
+    public AHelperDef()
     {
-      _id_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AHelperDef(
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") PRegExp _regExp_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
-    }
+        // Constructor
+        setId(_id_);
 
-    _id_ = node;
-  }
+        setRegExp(_regExp_);
 
-  public PRegExp getRegExp()
-  {
-    return _regExp_;
-  }
+    }
 
-  public void setRegExp(PRegExp node)
-  {
-    if(_regExp_ != null)
+    @Override
+    public Object clone()
     {
-      _regExp_.parent(null);
+        return new AHelperDef(
+            cloneNode(this._id_),
+            cloneNode(this._regExp_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAHelperDef(this);
     }
 
-    _regExp_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_id_)
-           + toString(_regExp_);
-  }
+    public TId getId()
+    {
+        return this._id_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_regExp_ == child)
+    public PRegExp getRegExp()
     {
-      _regExp_ = null;
-      return;
+        return this._regExp_;
     }
 
-  }
+    public void setRegExp(PRegExp node)
+    {
+        if(this._regExp_ != null)
+        {
+            this._regExp_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._regExp_ = node;
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+    @Override
+    public String toString()
     {
-      setId((TId) newChild);
-      return;
+        return ""
+            + toString(this._id_)
+            + toString(this._regExp_);
     }
 
-    if(_regExp_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setRegExp((PRegExp) newChild);
-      return;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._regExp_ == child)
+        {
+            this._regExp_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._regExp_ == oldChild)
+        {
+            setRegExp((PRegExp) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AHelpers.java b/src/org/sablecc/sablecc/node/AHelpers.java
index 0b9caec..c4291bf 100644
--- a/src/org/sablecc/sablecc/node/AHelpers.java
+++ b/src/org/sablecc/sablecc/node/AHelpers.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AHelpers extends PHelpers
 {
-  private final LinkedList _helperDefs_ = new TypedLinkedList(new HelperDefs_Cast());
+    private final LinkedList<PHelperDef> _helperDefs_ = new LinkedList<PHelperDef>();
 
-  public AHelpers()
-  {}
+    public AHelpers()
+    {
+        // Constructor
+    }
 
-  public AHelpers(
-    List _helperDefs_)
-  {
+    public AHelpers(
+        @SuppressWarnings("hiding") List<?> _helperDefs_)
     {
-      this._helperDefs_.clear();
-      this._helperDefs_.addAll(_helperDefs_);
+        // Constructor
+        setHelperDefs(_helperDefs_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new AHelpers(
-             cloneList(_helperDefs_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAHelpers(this);
-  }
-
-  public LinkedList getHelperDefs()
-  {
-    return _helperDefs_;
-  }
-
-  public void setHelperDefs(List list)
-  {
-    _helperDefs_.clear();
-    _helperDefs_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_helperDefs_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_helperDefs_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new AHelpers(
+            cloneList(this._helperDefs_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAHelpers(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _helperDefs_.listIterator(); i.hasNext();)
+    public LinkedList<PHelperDef> getHelperDefs()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._helperDefs_;
+    }
+
+    public void setHelperDefs(List<?> list)
+    {
+        for(PHelperDef e : this._helperDefs_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._helperDefs_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PHelperDef e = (PHelperDef) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._helperDefs_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._helperDefs_);
+    }
 
-  private class HelperDefs_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PHelperDef node = (PHelperDef) o;
+        // Remove child
+        if(this._helperDefs_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AHelpers.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != AHelpers.this))
-      {
-        node.parent(AHelpers.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<PHelperDef> i = this._helperDefs_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PHelperDef) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AHexChar.java b/src/org/sablecc/sablecc/node/AHexChar.java
index 8d047cf..0e62ce6 100644
--- a/src/org/sablecc/sablecc/node/AHexChar.java
+++ b/src/org/sablecc/sablecc/node/AHexChar.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AHexChar extends PChar
 {
-  private THexChar _hexChar_;
-
-  public AHexChar()
-  {}
-
-  public AHexChar(
-    THexChar _hexChar_)
-  {
-    setHexChar(_hexChar_);
-
-  }
-  public Object clone()
-  {
-    return new AHexChar(
-             (THexChar) cloneNode(_hexChar_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAHexChar(this);
-  }
-
-  public THexChar getHexChar()
-  {
-    return _hexChar_;
-  }
-
-  public void setHexChar(THexChar node)
-  {
-    if(_hexChar_ != null)
+    private THexChar _hexChar_;
+
+    public AHexChar()
     {
-      _hexChar_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AHexChar(
+        @SuppressWarnings("hiding") THexChar _hexChar_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setHexChar(_hexChar_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new AHexChar(
+            cloneNode(this._hexChar_));
     }
 
-    _hexChar_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAHexChar(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_hexChar_);
-  }
+    public THexChar getHexChar()
+    {
+        return this._hexChar_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_hexChar_ == child)
+    public void setHexChar(THexChar node)
     {
-      _hexChar_ = null;
-      return;
+        if(this._hexChar_ != null)
+        {
+            this._hexChar_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._hexChar_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._hexChar_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_hexChar_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setHexChar((THexChar) newChild);
-      return;
+        // Remove child
+        if(this._hexChar_ == child)
+        {
+            this._hexChar_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._hexChar_ == oldChild)
+        {
+            setHexChar((THexChar) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AIdBasic.java b/src/org/sablecc/sablecc/node/AIdBasic.java
index a3ea1f7..54642a5 100644
--- a/src/org/sablecc/sablecc/node/AIdBasic.java
+++ b/src/org/sablecc/sablecc/node/AIdBasic.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AIdBasic extends PBasic
 {
-  private TId _id_;
-
-  public AIdBasic()
-  {}
-
-  public AIdBasic(
-    TId _id_)
-  {
-    setId(_id_);
-
-  }
-  public Object clone()
-  {
-    return new AIdBasic(
-             (TId) cloneNode(_id_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAIdBasic(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    private TId _id_;
+
+    public AIdBasic()
     {
-      _id_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AIdBasic(
+        @SuppressWarnings("hiding") TId _id_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setId(_id_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new AIdBasic(
+            cloneNode(this._id_));
     }
 
-    _id_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAIdBasic(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_id_);
-  }
+    public TId getId()
+    {
+        return this._id_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._id_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setId((TId) newChild);
-      return;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AIgnTokens.java b/src/org/sablecc/sablecc/node/AIgnTokens.java
index 872eb27..ba12fed 100644
--- a/src/org/sablecc/sablecc/node/AIgnTokens.java
+++ b/src/org/sablecc/sablecc/node/AIgnTokens.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AIgnTokens extends PIgnTokens
 {
-  private final LinkedList _listId_ = new TypedLinkedList(new ListId_Cast());
+    private final LinkedList<TId> _listId_ = new LinkedList<TId>();
 
-  public AIgnTokens()
-  {}
+    public AIgnTokens()
+    {
+        // Constructor
+    }
 
-  public AIgnTokens(
-    List _listId_)
-  {
+    public AIgnTokens(
+        @SuppressWarnings("hiding") List<?> _listId_)
     {
-      this._listId_.clear();
-      this._listId_.addAll(_listId_);
+        // Constructor
+        setListId(_listId_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new AIgnTokens(
-             cloneList(_listId_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAIgnTokens(this);
-  }
-
-  public LinkedList getListId()
-  {
-    return _listId_;
-  }
-
-  public void setListId(List list)
-  {
-    _listId_.clear();
-    _listId_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_listId_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_listId_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new AIgnTokens(
+            cloneList(this._listId_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAIgnTokens(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _listId_.listIterator(); i.hasNext();)
+    public LinkedList<TId> getListId()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._listId_;
+    }
+
+    public void setListId(List<?> list)
+    {
+        for(TId e : this._listId_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._listId_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            TId e = (TId) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._listId_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._listId_);
+    }
 
-  private class ListId_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      TId node = (TId) o;
+        // Remove child
+        if(this._listId_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AIgnTokens.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != AIgnTokens.this))
-      {
-        node.parent(AIgnTokens.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<TId> i = this._listId_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((TId) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AIntervalSet.java b/src/org/sablecc/sablecc/node/AIntervalSet.java
index d9c40f9..72d1140 100644
--- a/src/org/sablecc/sablecc/node/AIntervalSet.java
+++ b/src/org/sablecc/sablecc/node/AIntervalSet.java
@@ -2,124 +2,137 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AIntervalSet extends PSet
 {
-  private PChar _left_;
-  private PChar _right_;
-
-  public AIntervalSet()
-  {}
-
-  public AIntervalSet(
-    PChar _left_,
-    PChar _right_)
-  {
-    setLeft(_left_);
-
-    setRight(_right_);
-
-  }
-  public Object clone()
-  {
-    return new AIntervalSet(
-             (PChar) cloneNode(_left_),
-             (PChar) cloneNode(_right_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAIntervalSet(this);
-  }
-
-  public PChar getLeft()
-  {
-    return _left_;
-  }
-
-  public void setLeft(PChar node)
-  {
-    if(_left_ != null)
+    private PChar _left_;
+    private PChar _right_;
+
+    public AIntervalSet()
     {
-      _left_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AIntervalSet(
+        @SuppressWarnings("hiding") PChar _left_,
+        @SuppressWarnings("hiding") PChar _right_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
-    }
+        // Constructor
+        setLeft(_left_);
 
-    _left_ = node;
-  }
+        setRight(_right_);
 
-  public PChar getRight()
-  {
-    return _right_;
-  }
+    }
 
-  public void setRight(PChar node)
-  {
-    if(_right_ != null)
+    @Override
+    public Object clone()
     {
-      _right_.parent(null);
+        return new AIntervalSet(
+            cloneNode(this._left_),
+            cloneNode(this._right_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAIntervalSet(this);
     }
 
-    _right_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_left_)
-           + toString(_right_);
-  }
+    public PChar getLeft()
+    {
+        return this._left_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_left_ == child)
+    public void setLeft(PChar node)
     {
-      _left_ = null;
-      return;
+        if(this._left_ != null)
+        {
+            this._left_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._left_ = node;
     }
 
-    if(_right_ == child)
+    public PChar getRight()
     {
-      _right_ = null;
-      return;
+        return this._right_;
     }
 
-  }
+    public void setRight(PChar node)
+    {
+        if(this._right_ != null)
+        {
+            this._right_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._right_ = node;
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_left_ == oldChild)
+    @Override
+    public String toString()
     {
-      setLeft((PChar) newChild);
-      return;
+        return ""
+            + toString(this._left_)
+            + toString(this._right_);
     }
 
-    if(_right_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setRight((PChar) newChild);
-      return;
+        // Remove child
+        if(this._left_ == child)
+        {
+            this._left_ = null;
+            return;
+        }
+
+        if(this._right_ == child)
+        {
+            this._right_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._left_ == oldChild)
+        {
+            setLeft((PChar) newChild);
+            return;
+        }
+
+        if(this._right_ == oldChild)
+        {
+            setRight((PChar) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AListTerm.java b/src/org/sablecc/sablecc/node/AListTerm.java
index 7a0a593..c93515e 100644
--- a/src/org/sablecc/sablecc/node/AListTerm.java
+++ b/src/org/sablecc/sablecc/node/AListTerm.java
@@ -5,142 +5,147 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AListTerm extends PTerm
 {
-  private TLBkt _lBkt_;
-  private final LinkedList _listTerms_ = new TypedLinkedList(new ListTerms_Cast());
-
-  public AListTerm()
-  {}
-
-  public AListTerm(
-    TLBkt _lBkt_,
-    List _listTerms_)
-  {
-    setLBkt(_lBkt_);
+    private TLBkt _lBkt_;
+    private final LinkedList<PListTerm> _listTerms_ = new LinkedList<PListTerm>();
 
+    public AListTerm()
     {
-      this._listTerms_.clear();
-      this._listTerms_.addAll(_listTerms_);
+        // Constructor
     }
 
-  }
-  public Object clone()
-  {
-    return new AListTerm(
-             (TLBkt) cloneNode(_lBkt_),
-             cloneList(_listTerms_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAListTerm(this);
-  }
-
-  public TLBkt getLBkt()
-  {
-    return _lBkt_;
-  }
-
-  public void setLBkt(TLBkt node)
-  {
-    if(_lBkt_ != null)
+    public AListTerm(
+        @SuppressWarnings("hiding") TLBkt _lBkt_,
+        @SuppressWarnings("hiding") List<?> _listTerms_)
     {
-      _lBkt_.parent(null);
+        // Constructor
+        setLBkt(_lBkt_);
+
+        setListTerms(_listTerms_);
+
     }
 
-    if(node != null)
+    @Override
+    public Object clone()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return new AListTerm(
+            cloneNode(this._lBkt_),
+            cloneList(this._listTerms_));
     }
 
-    _lBkt_ = node;
-  }
-
-  public LinkedList getListTerms()
-  {
-    return _listTerms_;
-  }
-
-  public void setListTerms(List list)
-  {
-    _listTerms_.clear();
-    _listTerms_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_lBkt_)
-           + toString(_listTerms_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_lBkt_ == child)
+    @Override
+    public void apply(Switch sw)
     {
-      _lBkt_ = null;
-      return;
+        ((Analysis) sw).caseAListTerm(this);
     }
 
-    if(_listTerms_.remove(child))
+    public TLBkt getLBkt()
     {
-      return;
+        return this._lBkt_;
     }
 
-  }
+    public void setLBkt(TLBkt node)
+    {
+        if(this._lBkt_ != null)
+        {
+            this._lBkt_.parent(null);
+        }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_lBkt_ == oldChild)
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._lBkt_ = node;
+    }
+
+    public LinkedList<PListTerm> getListTerms()
     {
-      setLBkt((TLBkt) newChild);
-      return;
+        return this._listTerms_;
     }
 
-    for(ListIterator i = _listTerms_.listIterator(); i.hasNext();)
+    public void setListTerms(List<?> list)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        for(PListTerm e : this._listTerms_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._listTerms_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PListTerm e = (PListTerm) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._listTerms_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._lBkt_)
+            + toString(this._listTerms_);
+    }
 
-  private class ListTerms_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PListTerm node = (PListTerm) o;
+        // Remove child
+        if(this._lBkt_ == child)
+        {
+            this._lBkt_ = null;
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AListTerm.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._listTerms_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AListTerm.this))
-      {
-        node.parent(AListTerm.this);
-      }
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._lBkt_ == oldChild)
+        {
+            setLBkt((TLBkt) newChild);
+            return;
+        }
+
+        for(ListIterator<PListTerm> i = this._listTerms_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PListTerm) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AMinusBinOp.java b/src/org/sablecc/sablecc/node/AMinusBinOp.java
index b79f005..9d85b45 100644
--- a/src/org/sablecc/sablecc/node/AMinusBinOp.java
+++ b/src/org/sablecc/sablecc/node/AMinusBinOp.java
@@ -2,32 +2,46 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AMinusBinOp extends PBinOp
 {
 
-  public AMinusBinOp()
-  {}
-  public Object clone()
-  {
-    return new AMinusBinOp();
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAMinusBinOp(this);
-  }
-
-  public String toString()
-  {
-    return "";
-  }
-
-  void removeChild(Node child)
-  {}
-
-  void replaceChild(Node oldChild, Node newChild)
-  {}
+    public AMinusBinOp()
+    {
+        // Constructor
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new AMinusBinOp();
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAMinusBinOp(this);
+    }
+
+    @Override
+    public String toString()
+    {
+        return "";
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ANewListTerm.java b/src/org/sablecc/sablecc/node/ANewListTerm.java
index 82e42e7..a02747a 100644
--- a/src/org/sablecc/sablecc/node/ANewListTerm.java
+++ b/src/org/sablecc/sablecc/node/ANewListTerm.java
@@ -5,185 +5,190 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ANewListTerm extends PListTerm
 {
-  private PProdName _prodName_;
-  private TLPar _lPar_;
-  private final LinkedList _params_ = new TypedLinkedList(new Params_Cast());
+    private PProdName _prodName_;
+    private TLPar _lPar_;
+    private final LinkedList<PTerm> _params_ = new LinkedList<PTerm>();
 
-  public ANewListTerm()
-  {}
+    public ANewListTerm()
+    {
+        // Constructor
+    }
 
-  public ANewListTerm(
-    PProdName _prodName_,
-    TLPar _lPar_,
-    List _params_)
-  {
-    setProdName(_prodName_);
+    public ANewListTerm(
+        @SuppressWarnings("hiding") PProdName _prodName_,
+        @SuppressWarnings("hiding") TLPar _lPar_,
+        @SuppressWarnings("hiding") List<?> _params_)
+    {
+        // Constructor
+        setProdName(_prodName_);
 
-    setLPar(_lPar_);
+        setLPar(_lPar_);
+
+        setParams(_params_);
 
-    {
-      this._params_.clear();
-      this._params_.addAll(_params_);
     }
 
-  }
-  public Object clone()
-  {
-    return new ANewListTerm(
-             (PProdName) cloneNode(_prodName_),
-             (TLPar) cloneNode(_lPar_),
-             cloneList(_params_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseANewListTerm(this);
-  }
-
-  public PProdName getProdName()
-  {
-    return _prodName_;
-  }
-
-  public void setProdName(PProdName node)
-  {
-    if(_prodName_ != null)
+    @Override
+    public Object clone()
     {
-      _prodName_.parent(null);
+        return new ANewListTerm(
+            cloneNode(this._prodName_),
+            cloneNode(this._lPar_),
+            cloneList(this._params_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseANewListTerm(this);
     }
 
-    _prodName_ = node;
-  }
-
-  public TLPar getLPar()
-  {
-    return _lPar_;
-  }
-
-  public void setLPar(TLPar node)
-  {
-    if(_lPar_ != null)
+    public PProdName getProdName()
     {
-      _lPar_.parent(null);
+        return this._prodName_;
     }
 
-    if(node != null)
+    public void setProdName(PProdName node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._prodName_ != null)
+        {
+            this._prodName_.parent(null);
+        }
 
-      node.parent(this);
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._prodName_ = node;
     }
 
-    _lPar_ = node;
-  }
-
-  public LinkedList getParams()
-  {
-    return _params_;
-  }
-
-  public void setParams(List list)
-  {
-    _params_.clear();
-    _params_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_prodName_)
-           + toString(_lPar_)
-           + toString(_params_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_prodName_ == child)
+    public TLPar getLPar()
     {
-      _prodName_ = null;
-      return;
+        return this._lPar_;
     }
 
-    if(_lPar_ == child)
+    public void setLPar(TLPar node)
     {
-      _lPar_ = null;
-      return;
+        if(this._lPar_ != null)
+        {
+            this._lPar_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._lPar_ = node;
     }
 
-    if(_params_.remove(child))
+    public LinkedList<PTerm> getParams()
     {
-      return;
+        return this._params_;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_prodName_ == oldChild)
+    public void setParams(List<?> list)
     {
-      setProdName((PProdName) newChild);
-      return;
+        for(PTerm e : this._params_)
+        {
+            e.parent(null);
+        }
+        this._params_.clear();
+
+        for(Object obj_e : list)
+        {
+            PTerm e = (PTerm) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._params_.add(e);
+        }
     }
 
-    if(_lPar_ == oldChild)
+    @Override
+    public String toString()
     {
-      setLPar((TLPar) newChild);
-      return;
+        return ""
+            + toString(this._prodName_)
+            + toString(this._lPar_)
+            + toString(this._params_);
     }
 
-    for(ListIterator i = _params_.listIterator(); i.hasNext();)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        // Remove child
+        if(this._prodName_ == child)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            this._prodName_ = null;
+            return;
         }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
-    }
+        if(this._lPar_ == child)
+        {
+            this._lPar_ = null;
+            return;
+        }
 
-  }
+        if(this._params_.remove(child))
+        {
+            return;
+        }
 
-  private class Params_Cast implements Cast
-  {
-    public Object cast(Object o)
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      PTerm node = (PTerm) o;
+        // Replace child
+        if(this._prodName_ == oldChild)
+        {
+            setProdName((PProdName) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != ANewListTerm.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._lPar_ == oldChild)
+        {
+            setLPar((TLPar) newChild);
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != ANewListTerm.this))
-      {
-        node.parent(ANewListTerm.this);
-      }
+        for(ListIterator<PTerm> i = this._params_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PTerm) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ANewTerm.java b/src/org/sablecc/sablecc/node/ANewTerm.java
index bf8afbb..c5b59de 100644
--- a/src/org/sablecc/sablecc/node/ANewTerm.java
+++ b/src/org/sablecc/sablecc/node/ANewTerm.java
@@ -5,185 +5,190 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ANewTerm extends PTerm
 {
-  private PProdName _prodName_;
-  private TLPar _lPar_;
-  private final LinkedList _params_ = new TypedLinkedList(new Params_Cast());
+    private PProdName _prodName_;
+    private TLPar _lPar_;
+    private final LinkedList<PTerm> _params_ = new LinkedList<PTerm>();
 
-  public ANewTerm()
-  {}
+    public ANewTerm()
+    {
+        // Constructor
+    }
 
-  public ANewTerm(
-    PProdName _prodName_,
-    TLPar _lPar_,
-    List _params_)
-  {
-    setProdName(_prodName_);
+    public ANewTerm(
+        @SuppressWarnings("hiding") PProdName _prodName_,
+        @SuppressWarnings("hiding") TLPar _lPar_,
+        @SuppressWarnings("hiding") List<?> _params_)
+    {
+        // Constructor
+        setProdName(_prodName_);
 
-    setLPar(_lPar_);
+        setLPar(_lPar_);
+
+        setParams(_params_);
 
-    {
-      this._params_.clear();
-      this._params_.addAll(_params_);
     }
 
-  }
-  public Object clone()
-  {
-    return new ANewTerm(
-             (PProdName) cloneNode(_prodName_),
-             (TLPar) cloneNode(_lPar_),
-             cloneList(_params_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseANewTerm(this);
-  }
-
-  public PProdName getProdName()
-  {
-    return _prodName_;
-  }
-
-  public void setProdName(PProdName node)
-  {
-    if(_prodName_ != null)
+    @Override
+    public Object clone()
     {
-      _prodName_.parent(null);
+        return new ANewTerm(
+            cloneNode(this._prodName_),
+            cloneNode(this._lPar_),
+            cloneList(this._params_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseANewTerm(this);
     }
 
-    _prodName_ = node;
-  }
-
-  public TLPar getLPar()
-  {
-    return _lPar_;
-  }
-
-  public void setLPar(TLPar node)
-  {
-    if(_lPar_ != null)
+    public PProdName getProdName()
     {
-      _lPar_.parent(null);
+        return this._prodName_;
     }
 
-    if(node != null)
+    public void setProdName(PProdName node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._prodName_ != null)
+        {
+            this._prodName_.parent(null);
+        }
 
-      node.parent(this);
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._prodName_ = node;
     }
 
-    _lPar_ = node;
-  }
-
-  public LinkedList getParams()
-  {
-    return _params_;
-  }
-
-  public void setParams(List list)
-  {
-    _params_.clear();
-    _params_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_prodName_)
-           + toString(_lPar_)
-           + toString(_params_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_prodName_ == child)
+    public TLPar getLPar()
     {
-      _prodName_ = null;
-      return;
+        return this._lPar_;
     }
 
-    if(_lPar_ == child)
+    public void setLPar(TLPar node)
     {
-      _lPar_ = null;
-      return;
+        if(this._lPar_ != null)
+        {
+            this._lPar_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._lPar_ = node;
     }
 
-    if(_params_.remove(child))
+    public LinkedList<PTerm> getParams()
     {
-      return;
+        return this._params_;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_prodName_ == oldChild)
+    public void setParams(List<?> list)
     {
-      setProdName((PProdName) newChild);
-      return;
+        for(PTerm e : this._params_)
+        {
+            e.parent(null);
+        }
+        this._params_.clear();
+
+        for(Object obj_e : list)
+        {
+            PTerm e = (PTerm) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._params_.add(e);
+        }
     }
 
-    if(_lPar_ == oldChild)
+    @Override
+    public String toString()
     {
-      setLPar((TLPar) newChild);
-      return;
+        return ""
+            + toString(this._prodName_)
+            + toString(this._lPar_)
+            + toString(this._params_);
     }
 
-    for(ListIterator i = _params_.listIterator(); i.hasNext();)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        // Remove child
+        if(this._prodName_ == child)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            this._prodName_ = null;
+            return;
         }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
-    }
+        if(this._lPar_ == child)
+        {
+            this._lPar_ = null;
+            return;
+        }
 
-  }
+        if(this._params_.remove(child))
+        {
+            return;
+        }
 
-  private class Params_Cast implements Cast
-  {
-    public Object cast(Object o)
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      PTerm node = (PTerm) o;
+        // Replace child
+        if(this._prodName_ == oldChild)
+        {
+            setProdName((PProdName) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != ANewTerm.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._lPar_ == oldChild)
+        {
+            setLPar((TLPar) newChild);
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != ANewTerm.this))
-      {
-        node.parent(ANewTerm.this);
-      }
+        for(ListIterator<PTerm> i = this._params_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PTerm) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ANullTerm.java b/src/org/sablecc/sablecc/node/ANullTerm.java
index cc08054..81c7fd0 100644
--- a/src/org/sablecc/sablecc/node/ANullTerm.java
+++ b/src/org/sablecc/sablecc/node/ANullTerm.java
@@ -2,32 +2,46 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ANullTerm extends PTerm
 {
 
-  public ANullTerm()
-  {}
-  public Object clone()
-  {
-    return new ANullTerm();
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseANullTerm(this);
-  }
-
-  public String toString()
-  {
-    return "";
-  }
-
-  void removeChild(Node child)
-  {}
-
-  void replaceChild(Node oldChild, Node newChild)
-  {}
+    public ANullTerm()
+    {
+        // Constructor
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new ANullTerm();
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseANullTerm(this);
+    }
+
+    @Override
+    public String toString()
+    {
+        return "";
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AOperationSet.java b/src/org/sablecc/sablecc/node/AOperationSet.java
index 722a3d1..28721b2 100644
--- a/src/org/sablecc/sablecc/node/AOperationSet.java
+++ b/src/org/sablecc/sablecc/node/AOperationSet.java
@@ -2,167 +2,180 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AOperationSet extends PSet
 {
-  private PBasic _left_;
-  private PBinOp _binOp_;
-  private PBasic _right_;
-
-  public AOperationSet()
-  {}
-
-  public AOperationSet(
-    PBasic _left_,
-    PBinOp _binOp_,
-    PBasic _right_)
-  {
-    setLeft(_left_);
-
-    setBinOp(_binOp_);
-
-    setRight(_right_);
-
-  }
-  public Object clone()
-  {
-    return new AOperationSet(
-             (PBasic) cloneNode(_left_),
-             (PBinOp) cloneNode(_binOp_),
-             (PBasic) cloneNode(_right_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAOperationSet(this);
-  }
-
-  public PBasic getLeft()
-  {
-    return _left_;
-  }
-
-  public void setLeft(PBasic node)
-  {
-    if(_left_ != null)
+    private PBasic _left_;
+    private PBinOp _binOp_;
+    private PBasic _right_;
+
+    public AOperationSet()
     {
-      _left_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AOperationSet(
+        @SuppressWarnings("hiding") PBasic _left_,
+        @SuppressWarnings("hiding") PBinOp _binOp_,
+        @SuppressWarnings("hiding") PBasic _right_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setLeft(_left_);
 
-      node.parent(this);
-    }
+        setBinOp(_binOp_);
 
-    _left_ = node;
-  }
+        setRight(_right_);
 
-  public PBinOp getBinOp()
-  {
-    return _binOp_;
-  }
+    }
 
-  public void setBinOp(PBinOp node)
-  {
-    if(_binOp_ != null)
+    @Override
+    public Object clone()
     {
-      _binOp_.parent(null);
+        return new AOperationSet(
+            cloneNode(this._left_),
+            cloneNode(this._binOp_),
+            cloneNode(this._right_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAOperationSet(this);
     }
 
-    _binOp_ = node;
-  }
-
-  public PBasic getRight()
-  {
-    return _right_;
-  }
-
-  public void setRight(PBasic node)
-  {
-    if(_right_ != null)
+    public PBasic getLeft()
     {
-      _right_.parent(null);
+        return this._left_;
     }
 
-    if(node != null)
+    public void setLeft(PBasic node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        if(this._left_ != null)
+        {
+            this._left_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._left_ = node;
     }
 
-    _right_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_left_)
-           + toString(_binOp_)
-           + toString(_right_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_left_ == child)
+    public PBinOp getBinOp()
     {
-      _left_ = null;
-      return;
+        return this._binOp_;
     }
 
-    if(_binOp_ == child)
+    public void setBinOp(PBinOp node)
     {
-      _binOp_ = null;
-      return;
+        if(this._binOp_ != null)
+        {
+            this._binOp_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._binOp_ = node;
     }
 
-    if(_right_ == child)
+    public PBasic getRight()
     {
-      _right_ = null;
-      return;
+        return this._right_;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_left_ == oldChild)
+    public void setRight(PBasic node)
     {
-      setLeft((PBasic) newChild);
-      return;
+        if(this._right_ != null)
+        {
+            this._right_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._right_ = node;
     }
 
-    if(_binOp_ == oldChild)
+    @Override
+    public String toString()
     {
-      setBinOp((PBinOp) newChild);
-      return;
+        return ""
+            + toString(this._left_)
+            + toString(this._binOp_)
+            + toString(this._right_);
     }
 
-    if(_right_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setRight((PBasic) newChild);
-      return;
+        // Remove child
+        if(this._left_ == child)
+        {
+            this._left_ = null;
+            return;
+        }
+
+        if(this._binOp_ == child)
+        {
+            this._binOp_ = null;
+            return;
+        }
+
+        if(this._right_ == child)
+        {
+            this._right_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._left_ == oldChild)
+        {
+            setLeft((PBasic) newChild);
+            return;
+        }
+
+        if(this._binOp_ == oldChild)
+        {
+            setBinOp((PBinOp) newChild);
+            return;
+        }
+
+        if(this._right_ == oldChild)
+        {
+            setRight((PBasic) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/APlusBinOp.java b/src/org/sablecc/sablecc/node/APlusBinOp.java
index 047de4f..c175ea4 100644
--- a/src/org/sablecc/sablecc/node/APlusBinOp.java
+++ b/src/org/sablecc/sablecc/node/APlusBinOp.java
@@ -2,32 +2,46 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class APlusBinOp extends PBinOp
 {
 
-  public APlusBinOp()
-  {}
-  public Object clone()
-  {
-    return new APlusBinOp();
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAPlusBinOp(this);
-  }
-
-  public String toString()
-  {
-    return "";
-  }
-
-  void removeChild(Node child)
-  {}
-
-  void replaceChild(Node oldChild, Node newChild)
-  {}
+    public APlusBinOp()
+    {
+        // Constructor
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new APlusBinOp();
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAPlusBinOp(this);
+    }
+
+    @Override
+    public String toString()
+    {
+        return "";
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/APlusUnOp.java b/src/org/sablecc/sablecc/node/APlusUnOp.java
index 1daee86..1bd8d37 100644
--- a/src/org/sablecc/sablecc/node/APlusUnOp.java
+++ b/src/org/sablecc/sablecc/node/APlusUnOp.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class APlusUnOp extends PUnOp
 {
-  private TPlus _plus_;
-
-  public APlusUnOp()
-  {}
-
-  public APlusUnOp(
-    TPlus _plus_)
-  {
-    setPlus(_plus_);
-
-  }
-  public Object clone()
-  {
-    return new APlusUnOp(
-             (TPlus) cloneNode(_plus_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAPlusUnOp(this);
-  }
-
-  public TPlus getPlus()
-  {
-    return _plus_;
-  }
-
-  public void setPlus(TPlus node)
-  {
-    if(_plus_ != null)
+    private TPlus _plus_;
+
+    public APlusUnOp()
     {
-      _plus_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public APlusUnOp(
+        @SuppressWarnings("hiding") TPlus _plus_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setPlus(_plus_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new APlusUnOp(
+            cloneNode(this._plus_));
     }
 
-    _plus_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAPlusUnOp(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_plus_);
-  }
+    public TPlus getPlus()
+    {
+        return this._plus_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_plus_ == child)
+    public void setPlus(TPlus node)
     {
-      _plus_ = null;
-      return;
+        if(this._plus_ != null)
+        {
+            this._plus_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._plus_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._plus_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_plus_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setPlus((TPlus) newChild);
-      return;
+        // Remove child
+        if(this._plus_ == child)
+        {
+            this._plus_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._plus_ == oldChild)
+        {
+            setPlus((TPlus) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AProd.java b/src/org/sablecc/sablecc/node/AProd.java
index 53c37b6..41b6d73 100644
--- a/src/org/sablecc/sablecc/node/AProd.java
+++ b/src/org/sablecc/sablecc/node/AProd.java
@@ -5,249 +5,245 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AProd extends PProd
 {
-  private TId _id_;
-  private TArrow _arrow_;
-  private final LinkedList _prodTransform_ = new TypedLinkedList(new ProdTransform_Cast());
-  private final LinkedList _alts_ = new TypedLinkedList(new Alts_Cast());
-
-  public AProd()
-  {}
-
-  public AProd(
-    TId _id_,
-    TArrow _arrow_,
-    List _prodTransform_,
-    List _alts_)
-  {
-    setId(_id_);
-
-    setArrow(_arrow_);
+    private TId _id_;
+    private TArrow _arrow_;
+    private final LinkedList<PElem> _prodTransform_ = new LinkedList<PElem>();
+    private final LinkedList<PAlt> _alts_ = new LinkedList<PAlt>();
 
+    public AProd()
     {
-      this._prodTransform_.clear();
-      this._prodTransform_.addAll(_prodTransform_);
+        // Constructor
     }
 
+    public AProd(
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") TArrow _arrow_,
+        @SuppressWarnings("hiding") List<?> _prodTransform_,
+        @SuppressWarnings("hiding") List<?> _alts_)
     {
-      this._alts_.clear();
-      this._alts_.addAll(_alts_);
-    }
+        // Constructor
+        setId(_id_);
 
-  }
-  public Object clone()
-  {
-    return new AProd(
-             (TId) cloneNode(_id_),
-             (TArrow) cloneNode(_arrow_),
-             cloneList(_prodTransform_),
-             cloneList(_alts_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAProd(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
-    {
-      _id_.parent(null);
-    }
+        setArrow(_arrow_);
 
-    if(node != null)
-    {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        setProdTransform(_prodTransform_);
 
-      node.parent(this);
-    }
-
-    _id_ = node;
-  }
+        setAlts(_alts_);
 
-  public TArrow getArrow()
-  {
-    return _arrow_;
-  }
+    }
 
-  public void setArrow(TArrow node)
-  {
-    if(_arrow_ != null)
+    @Override
+    public Object clone()
     {
-      _arrow_.parent(null);
+        return new AProd(
+            cloneNode(this._id_),
+            cloneNode(this._arrow_),
+            cloneList(this._prodTransform_),
+            cloneList(this._alts_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAProd(this);
     }
 
-    _arrow_ = node;
-  }
-
-  public LinkedList getProdTransform()
-  {
-    return _prodTransform_;
-  }
-
-  public void setProdTransform(List list)
-  {
-    _prodTransform_.clear();
-    _prodTransform_.addAll(list);
-  }
-
-  public LinkedList getAlts()
-  {
-    return _alts_;
-  }
-
-  public void setAlts(List list)
-  {
-    _alts_.clear();
-    _alts_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_id_)
-           + toString(_arrow_)
-           + toString(_prodTransform_)
-           + toString(_alts_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public TId getId()
     {
-      _id_ = null;
-      return;
+        return this._id_;
     }
 
-    if(_arrow_ == child)
+    public void setId(TId node)
     {
-      _arrow_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_prodTransform_.remove(child))
+    public TArrow getArrow()
     {
-      return;
+        return this._arrow_;
     }
 
-    if(_alts_.remove(child))
+    public void setArrow(TArrow node)
     {
-      return;
-    }
+        if(this._arrow_ != null)
+        {
+            this._arrow_.parent(null);
+        }
 
-  }
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
-    {
-      setId((TId) newChild);
-      return;
+            node.parent(this);
+        }
+
+        this._arrow_ = node;
     }
 
-    if(_arrow_ == oldChild)
+    public LinkedList<PElem> getProdTransform()
     {
-      setArrow((TArrow) newChild);
-      return;
+        return this._prodTransform_;
     }
 
-    for(ListIterator i = _prodTransform_.listIterator(); i.hasNext();)
+    public void setProdTransform(List<?> list)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        for(PElem e : this._prodTransform_)
+        {
+            e.parent(null);
+        }
+        this._prodTransform_.clear();
+
+        for(Object obj_e : list)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            PElem e = (PElem) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._prodTransform_.add(e);
         }
+    }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+    public LinkedList<PAlt> getAlts()
+    {
+        return this._alts_;
     }
 
-    for(ListIterator i = _alts_.listIterator(); i.hasNext();)
+    public void setAlts(List<?> list)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        for(PAlt e : this._alts_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._alts_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PAlt e = (PAlt) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._alts_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._id_)
+            + toString(this._arrow_)
+            + toString(this._prodTransform_)
+            + toString(this._alts_);
+    }
 
-  private class ProdTransform_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PElem node = (PElem) o;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._arrow_ == child)
+        {
+            this._arrow_ = null;
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AProd.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._prodTransform_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AProd.this))
-      {
-        node.parent(AProd.this);
-      }
+        if(this._alts_.remove(child))
+        {
+            return;
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 
-  private class Alts_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      PAlt node = (PAlt) o;
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AProd.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._arrow_ == oldChild)
+        {
+            setArrow((TArrow) newChild);
+            return;
+        }
+
+        for(ListIterator<PElem> i = this._prodTransform_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PElem) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AProd.this))
-      {
-        node.parent(AProd.this);
-      }
+        for(ListIterator<PAlt> i = this._alts_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PAlt) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AProdName.java b/src/org/sablecc/sablecc/node/AProdName.java
index 03a3fa1..183324b 100644
--- a/src/org/sablecc/sablecc/node/AProdName.java
+++ b/src/org/sablecc/sablecc/node/AProdName.java
@@ -2,124 +2,137 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AProdName extends PProdName
 {
-  private TId _id_;
-  private TId _prodNameTail_;
-
-  public AProdName()
-  {}
-
-  public AProdName(
-    TId _id_,
-    TId _prodNameTail_)
-  {
-    setId(_id_);
-
-    setProdNameTail(_prodNameTail_);
-
-  }
-  public Object clone()
-  {
-    return new AProdName(
-             (TId) cloneNode(_id_),
-             (TId) cloneNode(_prodNameTail_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAProdName(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    private TId _id_;
+    private TId _prodNameTail_;
+
+    public AProdName()
     {
-      _id_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AProdName(
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") TId _prodNameTail_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
-    }
+        // Constructor
+        setId(_id_);
 
-    _id_ = node;
-  }
+        setProdNameTail(_prodNameTail_);
 
-  public TId getProdNameTail()
-  {
-    return _prodNameTail_;
-  }
+    }
 
-  public void setProdNameTail(TId node)
-  {
-    if(_prodNameTail_ != null)
+    @Override
+    public Object clone()
     {
-      _prodNameTail_.parent(null);
+        return new AProdName(
+            cloneNode(this._id_),
+            cloneNode(this._prodNameTail_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAProdName(this);
     }
 
-    _prodNameTail_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_id_)
-           + toString(_prodNameTail_);
-  }
+    public TId getId()
+    {
+        return this._id_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_prodNameTail_ == child)
+    public TId getProdNameTail()
     {
-      _prodNameTail_ = null;
-      return;
+        return this._prodNameTail_;
     }
 
-  }
+    public void setProdNameTail(TId node)
+    {
+        if(this._prodNameTail_ != null)
+        {
+            this._prodNameTail_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._prodNameTail_ = node;
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+    @Override
+    public String toString()
     {
-      setId((TId) newChild);
-      return;
+        return ""
+            + toString(this._id_)
+            + toString(this._prodNameTail_);
     }
 
-    if(_prodNameTail_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setProdNameTail((TId) newChild);
-      return;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._prodNameTail_ == child)
+        {
+            this._prodNameTail_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._prodNameTail_ == oldChild)
+        {
+            setProdNameTail((TId) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AProductionSpecifier.java b/src/org/sablecc/sablecc/node/AProductionSpecifier.java
index 75b2c2d..c387cad 100644
--- a/src/org/sablecc/sablecc/node/AProductionSpecifier.java
+++ b/src/org/sablecc/sablecc/node/AProductionSpecifier.java
@@ -2,32 +2,46 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AProductionSpecifier extends PSpecifier
 {
 
-  public AProductionSpecifier()
-  {}
-  public Object clone()
-  {
-    return new AProductionSpecifier();
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAProductionSpecifier(this);
-  }
-
-  public String toString()
-  {
-    return "";
-  }
-
-  void removeChild(Node child)
-  {}
-
-  void replaceChild(Node oldChild, Node newChild)
-  {}
+    public AProductionSpecifier()
+    {
+        // Constructor
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new AProductionSpecifier();
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAProductionSpecifier(this);
+    }
+
+    @Override
+    public String toString()
+    {
+        return "";
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AProductions.java b/src/org/sablecc/sablecc/node/AProductions.java
index f3d9fc8..3d3aad6 100644
--- a/src/org/sablecc/sablecc/node/AProductions.java
+++ b/src/org/sablecc/sablecc/node/AProductions.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AProductions extends PProductions
 {
-  private final LinkedList _prods_ = new TypedLinkedList(new Prods_Cast());
+    private final LinkedList<PProd> _prods_ = new LinkedList<PProd>();
 
-  public AProductions()
-  {}
+    public AProductions()
+    {
+        // Constructor
+    }
 
-  public AProductions(
-    List _prods_)
-  {
+    public AProductions(
+        @SuppressWarnings("hiding") List<?> _prods_)
     {
-      this._prods_.clear();
-      this._prods_.addAll(_prods_);
+        // Constructor
+        setProds(_prods_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new AProductions(
-             cloneList(_prods_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAProductions(this);
-  }
-
-  public LinkedList getProds()
-  {
-    return _prods_;
-  }
-
-  public void setProds(List list)
-  {
-    _prods_.clear();
-    _prods_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_prods_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_prods_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new AProductions(
+            cloneList(this._prods_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAProductions(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _prods_.listIterator(); i.hasNext();)
+    public LinkedList<PProd> getProds()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._prods_;
+    }
+
+    public void setProds(List<?> list)
+    {
+        for(PProd e : this._prods_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._prods_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PProd e = (PProd) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._prods_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._prods_);
+    }
 
-  private class Prods_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PProd node = (PProd) o;
+        // Remove child
+        if(this._prods_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AProductions.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != AProductions.this))
-      {
-        node.parent(AProductions.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<PProd> i = this._prods_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PProd) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AQMarkUnOp.java b/src/org/sablecc/sablecc/node/AQMarkUnOp.java
index 497cdf4..1b2aefa 100644
--- a/src/org/sablecc/sablecc/node/AQMarkUnOp.java
+++ b/src/org/sablecc/sablecc/node/AQMarkUnOp.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AQMarkUnOp extends PUnOp
 {
-  private TQMark _qMark_;
-
-  public AQMarkUnOp()
-  {}
-
-  public AQMarkUnOp(
-    TQMark _qMark_)
-  {
-    setQMark(_qMark_);
-
-  }
-  public Object clone()
-  {
-    return new AQMarkUnOp(
-             (TQMark) cloneNode(_qMark_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAQMarkUnOp(this);
-  }
-
-  public TQMark getQMark()
-  {
-    return _qMark_;
-  }
-
-  public void setQMark(TQMark node)
-  {
-    if(_qMark_ != null)
+    private TQMark _qMark_;
+
+    public AQMarkUnOp()
     {
-      _qMark_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AQMarkUnOp(
+        @SuppressWarnings("hiding") TQMark _qMark_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setQMark(_qMark_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new AQMarkUnOp(
+            cloneNode(this._qMark_));
     }
 
-    _qMark_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAQMarkUnOp(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_qMark_);
-  }
+    public TQMark getQMark()
+    {
+        return this._qMark_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_qMark_ == child)
+    public void setQMark(TQMark node)
     {
-      _qMark_ = null;
-      return;
+        if(this._qMark_ != null)
+        {
+            this._qMark_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._qMark_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._qMark_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_qMark_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setQMark((TQMark) newChild);
-      return;
+        // Remove child
+        if(this._qMark_ == child)
+        {
+            this._qMark_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._qMark_ == oldChild)
+        {
+            setQMark((TQMark) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ARegExp.java b/src/org/sablecc/sablecc/node/ARegExp.java
index d07a142..77e180b 100644
--- a/src/org/sablecc/sablecc/node/ARegExp.java
+++ b/src/org/sablecc/sablecc/node/ARegExp.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ARegExp extends PRegExp
 {
-  private final LinkedList _concats_ = new TypedLinkedList(new Concats_Cast());
+    private final LinkedList<PConcat> _concats_ = new LinkedList<PConcat>();
 
-  public ARegExp()
-  {}
+    public ARegExp()
+    {
+        // Constructor
+    }
 
-  public ARegExp(
-    List _concats_)
-  {
+    public ARegExp(
+        @SuppressWarnings("hiding") List<?> _concats_)
     {
-      this._concats_.clear();
-      this._concats_.addAll(_concats_);
+        // Constructor
+        setConcats(_concats_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new ARegExp(
-             cloneList(_concats_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseARegExp(this);
-  }
-
-  public LinkedList getConcats()
-  {
-    return _concats_;
-  }
-
-  public void setConcats(List list)
-  {
-    _concats_.clear();
-    _concats_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_concats_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_concats_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new ARegExp(
+            cloneList(this._concats_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseARegExp(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _concats_.listIterator(); i.hasNext();)
+    public LinkedList<PConcat> getConcats()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._concats_;
+    }
+
+    public void setConcats(List<?> list)
+    {
+        for(PConcat e : this._concats_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._concats_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PConcat e = (PConcat) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._concats_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._concats_);
+    }
 
-  private class Concats_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PConcat node = (PConcat) o;
+        // Remove child
+        if(this._concats_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != ARegExp.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != ARegExp.this))
-      {
-        node.parent(ARegExp.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<PConcat> i = this._concats_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PConcat) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ARegExpBasic.java b/src/org/sablecc/sablecc/node/ARegExpBasic.java
index 208d45a..256503b 100644
--- a/src/org/sablecc/sablecc/node/ARegExpBasic.java
+++ b/src/org/sablecc/sablecc/node/ARegExpBasic.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ARegExpBasic extends PBasic
 {
-  private PRegExp _regExp_;
-
-  public ARegExpBasic()
-  {}
-
-  public ARegExpBasic(
-    PRegExp _regExp_)
-  {
-    setRegExp(_regExp_);
-
-  }
-  public Object clone()
-  {
-    return new ARegExpBasic(
-             (PRegExp) cloneNode(_regExp_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseARegExpBasic(this);
-  }
-
-  public PRegExp getRegExp()
-  {
-    return _regExp_;
-  }
-
-  public void setRegExp(PRegExp node)
-  {
-    if(_regExp_ != null)
+    private PRegExp _regExp_;
+
+    public ARegExpBasic()
     {
-      _regExp_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ARegExpBasic(
+        @SuppressWarnings("hiding") PRegExp _regExp_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setRegExp(_regExp_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new ARegExpBasic(
+            cloneNode(this._regExp_));
     }
 
-    _regExp_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseARegExpBasic(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_regExp_);
-  }
+    public PRegExp getRegExp()
+    {
+        return this._regExp_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_regExp_ == child)
+    public void setRegExp(PRegExp node)
     {
-      _regExp_ = null;
-      return;
+        if(this._regExp_ != null)
+        {
+            this._regExp_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._regExp_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._regExp_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_regExp_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setRegExp((PRegExp) newChild);
-      return;
+        // Remove child
+        if(this._regExp_ == child)
+        {
+            this._regExp_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._regExp_ == oldChild)
+        {
+            setRegExp((PRegExp) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ASetBasic.java b/src/org/sablecc/sablecc/node/ASetBasic.java
index eb4ad7f..a4c8a85 100644
--- a/src/org/sablecc/sablecc/node/ASetBasic.java
+++ b/src/org/sablecc/sablecc/node/ASetBasic.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ASetBasic extends PBasic
 {
-  private PSet _set_;
-
-  public ASetBasic()
-  {}
-
-  public ASetBasic(
-    PSet _set_)
-  {
-    setSet(_set_);
-
-  }
-  public Object clone()
-  {
-    return new ASetBasic(
-             (PSet) cloneNode(_set_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseASetBasic(this);
-  }
-
-  public PSet getSet()
-  {
-    return _set_;
-  }
-
-  public void setSet(PSet node)
-  {
-    if(_set_ != null)
+    private PSet _set_;
+
+    public ASetBasic()
     {
-      _set_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ASetBasic(
+        @SuppressWarnings("hiding") PSet _set_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setSet(_set_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new ASetBasic(
+            cloneNode(this._set_));
     }
 
-    _set_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseASetBasic(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_set_);
-  }
+    public PSet getSet()
+    {
+        return this._set_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_set_ == child)
+    public void setSet(PSet node)
     {
-      _set_ = null;
-      return;
+        if(this._set_ != null)
+        {
+            this._set_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._set_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._set_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_set_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setSet((PSet) newChild);
-      return;
+        // Remove child
+        if(this._set_ == child)
+        {
+            this._set_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._set_ == oldChild)
+        {
+            setSet((PSet) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ASimpleListTerm.java b/src/org/sablecc/sablecc/node/ASimpleListTerm.java
index c97addb..a49ec62 100644
--- a/src/org/sablecc/sablecc/node/ASimpleListTerm.java
+++ b/src/org/sablecc/sablecc/node/ASimpleListTerm.java
@@ -2,167 +2,180 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ASimpleListTerm extends PListTerm
 {
-  private PSpecifier _specifier_;
-  private TId _id_;
-  private TId _simpleTermTail_;
-
-  public ASimpleListTerm()
-  {}
-
-  public ASimpleListTerm(
-    PSpecifier _specifier_,
-    TId _id_,
-    TId _simpleTermTail_)
-  {
-    setSpecifier(_specifier_);
-
-    setId(_id_);
-
-    setSimpleTermTail(_simpleTermTail_);
-
-  }
-  public Object clone()
-  {
-    return new ASimpleListTerm(
-             (PSpecifier) cloneNode(_specifier_),
-             (TId) cloneNode(_id_),
-             (TId) cloneNode(_simpleTermTail_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseASimpleListTerm(this);
-  }
-
-  public PSpecifier getSpecifier()
-  {
-    return _specifier_;
-  }
-
-  public void setSpecifier(PSpecifier node)
-  {
-    if(_specifier_ != null)
+    private PSpecifier _specifier_;
+    private TId _id_;
+    private TId _simpleTermTail_;
+
+    public ASimpleListTerm()
     {
-      _specifier_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ASimpleListTerm(
+        @SuppressWarnings("hiding") PSpecifier _specifier_,
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") TId _simpleTermTail_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setSpecifier(_specifier_);
 
-      node.parent(this);
-    }
+        setId(_id_);
 
-    _specifier_ = node;
-  }
+        setSimpleTermTail(_simpleTermTail_);
 
-  public TId getId()
-  {
-    return _id_;
-  }
+    }
 
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    @Override
+    public Object clone()
     {
-      _id_.parent(null);
+        return new ASimpleListTerm(
+            cloneNode(this._specifier_),
+            cloneNode(this._id_),
+            cloneNode(this._simpleTermTail_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseASimpleListTerm(this);
     }
 
-    _id_ = node;
-  }
-
-  public TId getSimpleTermTail()
-  {
-    return _simpleTermTail_;
-  }
-
-  public void setSimpleTermTail(TId node)
-  {
-    if(_simpleTermTail_ != null)
+    public PSpecifier getSpecifier()
     {
-      _simpleTermTail_.parent(null);
+        return this._specifier_;
     }
 
-    if(node != null)
+    public void setSpecifier(PSpecifier node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        if(this._specifier_ != null)
+        {
+            this._specifier_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._specifier_ = node;
     }
 
-    _simpleTermTail_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_specifier_)
-           + toString(_id_)
-           + toString(_simpleTermTail_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_specifier_ == child)
+    public TId getId()
     {
-      _specifier_ = null;
-      return;
+        return this._id_;
     }
 
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_simpleTermTail_ == child)
+    public TId getSimpleTermTail()
     {
-      _simpleTermTail_ = null;
-      return;
+        return this._simpleTermTail_;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_specifier_ == oldChild)
+    public void setSimpleTermTail(TId node)
     {
-      setSpecifier((PSpecifier) newChild);
-      return;
+        if(this._simpleTermTail_ != null)
+        {
+            this._simpleTermTail_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._simpleTermTail_ = node;
     }
 
-    if(_id_ == oldChild)
+    @Override
+    public String toString()
     {
-      setId((TId) newChild);
-      return;
+        return ""
+            + toString(this._specifier_)
+            + toString(this._id_)
+            + toString(this._simpleTermTail_);
     }
 
-    if(_simpleTermTail_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setSimpleTermTail((TId) newChild);
-      return;
+        // Remove child
+        if(this._specifier_ == child)
+        {
+            this._specifier_ = null;
+            return;
+        }
+
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._simpleTermTail_ == child)
+        {
+            this._simpleTermTail_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._specifier_ == oldChild)
+        {
+            setSpecifier((PSpecifier) newChild);
+            return;
+        }
+
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._simpleTermTail_ == oldChild)
+        {
+            setSimpleTermTail((TId) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ASimpleTerm.java b/src/org/sablecc/sablecc/node/ASimpleTerm.java
index 2b03fb3..5ffc3ad 100644
--- a/src/org/sablecc/sablecc/node/ASimpleTerm.java
+++ b/src/org/sablecc/sablecc/node/ASimpleTerm.java
@@ -2,167 +2,180 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ASimpleTerm extends PTerm
 {
-  private PSpecifier _specifier_;
-  private TId _id_;
-  private TId _simpleTermTail_;
-
-  public ASimpleTerm()
-  {}
-
-  public ASimpleTerm(
-    PSpecifier _specifier_,
-    TId _id_,
-    TId _simpleTermTail_)
-  {
-    setSpecifier(_specifier_);
-
-    setId(_id_);
-
-    setSimpleTermTail(_simpleTermTail_);
-
-  }
-  public Object clone()
-  {
-    return new ASimpleTerm(
-             (PSpecifier) cloneNode(_specifier_),
-             (TId) cloneNode(_id_),
-             (TId) cloneNode(_simpleTermTail_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseASimpleTerm(this);
-  }
-
-  public PSpecifier getSpecifier()
-  {
-    return _specifier_;
-  }
-
-  public void setSpecifier(PSpecifier node)
-  {
-    if(_specifier_ != null)
+    private PSpecifier _specifier_;
+    private TId _id_;
+    private TId _simpleTermTail_;
+
+    public ASimpleTerm()
     {
-      _specifier_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ASimpleTerm(
+        @SuppressWarnings("hiding") PSpecifier _specifier_,
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") TId _simpleTermTail_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setSpecifier(_specifier_);
 
-      node.parent(this);
-    }
+        setId(_id_);
 
-    _specifier_ = node;
-  }
+        setSimpleTermTail(_simpleTermTail_);
 
-  public TId getId()
-  {
-    return _id_;
-  }
+    }
 
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    @Override
+    public Object clone()
     {
-      _id_.parent(null);
+        return new ASimpleTerm(
+            cloneNode(this._specifier_),
+            cloneNode(this._id_),
+            cloneNode(this._simpleTermTail_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseASimpleTerm(this);
     }
 
-    _id_ = node;
-  }
-
-  public TId getSimpleTermTail()
-  {
-    return _simpleTermTail_;
-  }
-
-  public void setSimpleTermTail(TId node)
-  {
-    if(_simpleTermTail_ != null)
+    public PSpecifier getSpecifier()
     {
-      _simpleTermTail_.parent(null);
+        return this._specifier_;
     }
 
-    if(node != null)
+    public void setSpecifier(PSpecifier node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        if(this._specifier_ != null)
+        {
+            this._specifier_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._specifier_ = node;
     }
 
-    _simpleTermTail_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_specifier_)
-           + toString(_id_)
-           + toString(_simpleTermTail_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_specifier_ == child)
+    public TId getId()
     {
-      _specifier_ = null;
-      return;
+        return this._id_;
     }
 
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_simpleTermTail_ == child)
+    public TId getSimpleTermTail()
     {
-      _simpleTermTail_ = null;
-      return;
+        return this._simpleTermTail_;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_specifier_ == oldChild)
+    public void setSimpleTermTail(TId node)
     {
-      setSpecifier((PSpecifier) newChild);
-      return;
+        if(this._simpleTermTail_ != null)
+        {
+            this._simpleTermTail_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._simpleTermTail_ = node;
     }
 
-    if(_id_ == oldChild)
+    @Override
+    public String toString()
     {
-      setId((TId) newChild);
-      return;
+        return ""
+            + toString(this._specifier_)
+            + toString(this._id_)
+            + toString(this._simpleTermTail_);
     }
 
-    if(_simpleTermTail_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setSimpleTermTail((TId) newChild);
-      return;
+        // Remove child
+        if(this._specifier_ == child)
+        {
+            this._specifier_ = null;
+            return;
+        }
+
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._simpleTermTail_ == child)
+        {
+            this._simpleTermTail_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._specifier_ == oldChild)
+        {
+            setSpecifier((PSpecifier) newChild);
+            return;
+        }
+
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._simpleTermTail_ == oldChild)
+        {
+            setSimpleTermTail((TId) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AStarUnOp.java b/src/org/sablecc/sablecc/node/AStarUnOp.java
index 2488d76..7e78645 100644
--- a/src/org/sablecc/sablecc/node/AStarUnOp.java
+++ b/src/org/sablecc/sablecc/node/AStarUnOp.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AStarUnOp extends PUnOp
 {
-  private TStar _star_;
-
-  public AStarUnOp()
-  {}
-
-  public AStarUnOp(
-    TStar _star_)
-  {
-    setStar(_star_);
-
-  }
-  public Object clone()
-  {
-    return new AStarUnOp(
-             (TStar) cloneNode(_star_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAStarUnOp(this);
-  }
-
-  public TStar getStar()
-  {
-    return _star_;
-  }
-
-  public void setStar(TStar node)
-  {
-    if(_star_ != null)
+    private TStar _star_;
+
+    public AStarUnOp()
     {
-      _star_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AStarUnOp(
+        @SuppressWarnings("hiding") TStar _star_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setStar(_star_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new AStarUnOp(
+            cloneNode(this._star_));
     }
 
-    _star_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAStarUnOp(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_star_);
-  }
+    public TStar getStar()
+    {
+        return this._star_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_star_ == child)
+    public void setStar(TStar node)
     {
-      _star_ = null;
-      return;
+        if(this._star_ != null)
+        {
+            this._star_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._star_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._star_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_star_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setStar((TStar) newChild);
-      return;
+        // Remove child
+        if(this._star_ == child)
+        {
+            this._star_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._star_ == oldChild)
+        {
+            setStar((TStar) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AStateList.java b/src/org/sablecc/sablecc/node/AStateList.java
index 1e87a23..d784f5f 100644
--- a/src/org/sablecc/sablecc/node/AStateList.java
+++ b/src/org/sablecc/sablecc/node/AStateList.java
@@ -5,185 +5,190 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AStateList extends PStateList
 {
-  private TId _id_;
-  private PTransition _transition_;
-  private final LinkedList _stateLists_ = new TypedLinkedList(new StateLists_Cast());
+    private TId _id_;
+    private PTransition _transition_;
+    private final LinkedList<PStateListTail> _stateLists_ = new LinkedList<PStateListTail>();
 
-  public AStateList()
-  {}
+    public AStateList()
+    {
+        // Constructor
+    }
 
-  public AStateList(
-    TId _id_,
-    PTransition _transition_,
-    List _stateLists_)
-  {
-    setId(_id_);
+    public AStateList(
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") PTransition _transition_,
+        @SuppressWarnings("hiding") List<?> _stateLists_)
+    {
+        // Constructor
+        setId(_id_);
 
-    setTransition(_transition_);
+        setTransition(_transition_);
+
+        setStateLists(_stateLists_);
 
-    {
-      this._stateLists_.clear();
-      this._stateLists_.addAll(_stateLists_);
     }
 
-  }
-  public Object clone()
-  {
-    return new AStateList(
-             (TId) cloneNode(_id_),
-             (PTransition) cloneNode(_transition_),
-             cloneList(_stateLists_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAStateList(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    @Override
+    public Object clone()
     {
-      _id_.parent(null);
+        return new AStateList(
+            cloneNode(this._id_),
+            cloneNode(this._transition_),
+            cloneList(this._stateLists_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAStateList(this);
     }
 
-    _id_ = node;
-  }
-
-  public PTransition getTransition()
-  {
-    return _transition_;
-  }
-
-  public void setTransition(PTransition node)
-  {
-    if(_transition_ != null)
+    public TId getId()
     {
-      _transition_.parent(null);
+        return this._id_;
     }
 
-    if(node != null)
+    public void setId(TId node)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
 
-      node.parent(this);
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    _transition_ = node;
-  }
-
-  public LinkedList getStateLists()
-  {
-    return _stateLists_;
-  }
-
-  public void setStateLists(List list)
-  {
-    _stateLists_.clear();
-    _stateLists_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_id_)
-           + toString(_transition_)
-           + toString(_stateLists_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public PTransition getTransition()
     {
-      _id_ = null;
-      return;
+        return this._transition_;
     }
 
-    if(_transition_ == child)
+    public void setTransition(PTransition node)
     {
-      _transition_ = null;
-      return;
+        if(this._transition_ != null)
+        {
+            this._transition_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._transition_ = node;
     }
 
-    if(_stateLists_.remove(child))
+    public LinkedList<PStateListTail> getStateLists()
     {
-      return;
+        return this._stateLists_;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+    public void setStateLists(List<?> list)
     {
-      setId((TId) newChild);
-      return;
+        for(PStateListTail e : this._stateLists_)
+        {
+            e.parent(null);
+        }
+        this._stateLists_.clear();
+
+        for(Object obj_e : list)
+        {
+            PStateListTail e = (PStateListTail) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._stateLists_.add(e);
+        }
     }
 
-    if(_transition_ == oldChild)
+    @Override
+    public String toString()
     {
-      setTransition((PTransition) newChild);
-      return;
+        return ""
+            + toString(this._id_)
+            + toString(this._transition_)
+            + toString(this._stateLists_);
     }
 
-    for(ListIterator i = _stateLists_.listIterator(); i.hasNext();)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        // Remove child
+        if(this._id_ == child)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            this._id_ = null;
+            return;
         }
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
-    }
+        if(this._transition_ == child)
+        {
+            this._transition_ = null;
+            return;
+        }
 
-  }
+        if(this._stateLists_.remove(child))
+        {
+            return;
+        }
 
-  private class StateLists_Cast implements Cast
-  {
-    public Object cast(Object o)
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      PStateListTail node = (PStateListTail) o;
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AStateList.this))
-      {
-        node.parent().removeChild(node);
-      }
+        if(this._transition_ == oldChild)
+        {
+            setTransition((PTransition) newChild);
+            return;
+        }
 
-      if((node.parent() == null) ||
-          (node.parent() != AStateList.this))
-      {
-        node.parent(AStateList.this);
-      }
+        for(ListIterator<PStateListTail> i = this._stateLists_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PStateListTail) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AStateListTail.java b/src/org/sablecc/sablecc/node/AStateListTail.java
index c46e0bd..ef4e52c 100644
--- a/src/org/sablecc/sablecc/node/AStateListTail.java
+++ b/src/org/sablecc/sablecc/node/AStateListTail.java
@@ -2,124 +2,137 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AStateListTail extends PStateListTail
 {
-  private TId _id_;
-  private PTransition _transition_;
-
-  public AStateListTail()
-  {}
-
-  public AStateListTail(
-    TId _id_,
-    PTransition _transition_)
-  {
-    setId(_id_);
-
-    setTransition(_transition_);
-
-  }
-  public Object clone()
-  {
-    return new AStateListTail(
-             (TId) cloneNode(_id_),
-             (PTransition) cloneNode(_transition_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAStateListTail(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    private TId _id_;
+    private PTransition _transition_;
+
+    public AStateListTail()
     {
-      _id_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AStateListTail(
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") PTransition _transition_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
-    }
+        // Constructor
+        setId(_id_);
 
-    _id_ = node;
-  }
+        setTransition(_transition_);
 
-  public PTransition getTransition()
-  {
-    return _transition_;
-  }
+    }
 
-  public void setTransition(PTransition node)
-  {
-    if(_transition_ != null)
+    @Override
+    public Object clone()
     {
-      _transition_.parent(null);
+        return new AStateListTail(
+            cloneNode(this._id_),
+            cloneNode(this._transition_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAStateListTail(this);
     }
 
-    _transition_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_id_)
-           + toString(_transition_);
-  }
+    public TId getId()
+    {
+        return this._id_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_transition_ == child)
+    public PTransition getTransition()
     {
-      _transition_ = null;
-      return;
+        return this._transition_;
     }
 
-  }
+    public void setTransition(PTransition node)
+    {
+        if(this._transition_ != null)
+        {
+            this._transition_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._transition_ = node;
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+    @Override
+    public String toString()
     {
-      setId((TId) newChild);
-      return;
+        return ""
+            + toString(this._id_)
+            + toString(this._transition_);
     }
 
-    if(_transition_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setTransition((PTransition) newChild);
-      return;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._transition_ == child)
+        {
+            this._transition_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._transition_ == oldChild)
+        {
+            setTransition((PTransition) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AStates.java b/src/org/sablecc/sablecc/node/AStates.java
index ecbadc8..6c6dea2 100644
--- a/src/org/sablecc/sablecc/node/AStates.java
+++ b/src/org/sablecc/sablecc/node/AStates.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AStates extends PStates
 {
-  private final LinkedList _listId_ = new TypedLinkedList(new ListId_Cast());
+    private final LinkedList<TId> _listId_ = new LinkedList<TId>();
 
-  public AStates()
-  {}
+    public AStates()
+    {
+        // Constructor
+    }
 
-  public AStates(
-    List _listId_)
-  {
+    public AStates(
+        @SuppressWarnings("hiding") List<?> _listId_)
     {
-      this._listId_.clear();
-      this._listId_.addAll(_listId_);
+        // Constructor
+        setListId(_listId_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new AStates(
-             cloneList(_listId_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAStates(this);
-  }
-
-  public LinkedList getListId()
-  {
-    return _listId_;
-  }
-
-  public void setListId(List list)
-  {
-    _listId_.clear();
-    _listId_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_listId_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_listId_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new AStates(
+            cloneList(this._listId_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAStates(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _listId_.listIterator(); i.hasNext();)
+    public LinkedList<TId> getListId()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._listId_;
+    }
+
+    public void setListId(List<?> list)
+    {
+        for(TId e : this._listId_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._listId_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            TId e = (TId) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._listId_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._listId_);
+    }
 
-  private class ListId_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      TId node = (TId) o;
+        // Remove child
+        if(this._listId_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != AStates.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != AStates.this))
-      {
-        node.parent(AStates.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<TId> i = this._listId_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((TId) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/AStringBasic.java b/src/org/sablecc/sablecc/node/AStringBasic.java
index 2d8f988..737331b 100644
--- a/src/org/sablecc/sablecc/node/AStringBasic.java
+++ b/src/org/sablecc/sablecc/node/AStringBasic.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AStringBasic extends PBasic
 {
-  private TString _string_;
-
-  public AStringBasic()
-  {}
-
-  public AStringBasic(
-    TString _string_)
-  {
-    setString(_string_);
-
-  }
-  public Object clone()
-  {
-    return new AStringBasic(
-             (TString) cloneNode(_string_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAStringBasic(this);
-  }
-
-  public TString getString()
-  {
-    return _string_;
-  }
-
-  public void setString(TString node)
-  {
-    if(_string_ != null)
+    private TString _string_;
+
+    public AStringBasic()
     {
-      _string_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AStringBasic(
+        @SuppressWarnings("hiding") TString _string_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setString(_string_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new AStringBasic(
+            cloneNode(this._string_));
     }
 
-    _string_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseAStringBasic(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_string_);
-  }
+    public TString getString()
+    {
+        return this._string_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_string_ == child)
+    public void setString(TString node)
     {
-      _string_ = null;
-      return;
+        if(this._string_ != null)
+        {
+            this._string_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._string_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._string_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_string_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setString((TString) newChild);
-      return;
+        // Remove child
+        if(this._string_ == child)
+        {
+            this._string_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._string_ == oldChild)
+        {
+            setString((TString) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ATokenDef.java b/src/org/sablecc/sablecc/node/ATokenDef.java
index c52f52f..efcc8fd 100644
--- a/src/org/sablecc/sablecc/node/ATokenDef.java
+++ b/src/org/sablecc/sablecc/node/ATokenDef.java
@@ -2,253 +2,266 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ATokenDef extends PTokenDef
 {
-  private PStateList _stateList_;
-  private TId _id_;
-  private PRegExp _regExp_;
-  private TSlash _slash_;
-  private PRegExp _lookAhead_;
+    private PStateList _stateList_;
+    private TId _id_;
+    private PRegExp _regExp_;
+    private TSlash _slash_;
+    private PRegExp _lookAhead_;
 
-  public ATokenDef()
-  {}
-
-  public ATokenDef(
-    PStateList _stateList_,
-    TId _id_,
-    PRegExp _regExp_,
-    TSlash _slash_,
-    PRegExp _lookAhead_)
-  {
-    setStateList(_stateList_);
-
-    setId(_id_);
-
-    setRegExp(_regExp_);
-
-    setSlash(_slash_);
-
-    setLookAhead(_lookAhead_);
-
-  }
-  public Object clone()
-  {
-    return new ATokenDef(
-             (PStateList) cloneNode(_stateList_),
-             (TId) cloneNode(_id_),
-             (PRegExp) cloneNode(_regExp_),
-             (TSlash) cloneNode(_slash_),
-             (PRegExp) cloneNode(_lookAhead_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseATokenDef(this);
-  }
-
-  public PStateList getStateList()
-  {
-    return _stateList_;
-  }
-
-  public void setStateList(PStateList node)
-  {
-    if(_stateList_ != null)
+    public ATokenDef()
     {
-      _stateList_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
-    {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
-    }
-
-    _stateList_ = node;
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    public ATokenDef(
+        @SuppressWarnings("hiding") PStateList _stateList_,
+        @SuppressWarnings("hiding") TId _id_,
+        @SuppressWarnings("hiding") PRegExp _regExp_,
+        @SuppressWarnings("hiding") TSlash _slash_,
+        @SuppressWarnings("hiding") PRegExp _lookAhead_)
     {
-      _id_.parent(null);
-    }
+        // Constructor
+        setStateList(_stateList_);
 
-    if(node != null)
-    {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        setId(_id_);
 
-      node.parent(this);
-    }
+        setRegExp(_regExp_);
 
-    _id_ = node;
-  }
+        setSlash(_slash_);
 
-  public PRegExp getRegExp()
-  {
-    return _regExp_;
-  }
+        setLookAhead(_lookAhead_);
 
-  public void setRegExp(PRegExp node)
-  {
-    if(_regExp_ != null)
-    {
-      _regExp_.parent(null);
     }
 
-    if(node != null)
+    @Override
+    public Object clone()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return new ATokenDef(
+            cloneNode(this._stateList_),
+            cloneNode(this._id_),
+            cloneNode(this._regExp_),
+            cloneNode(this._slash_),
+            cloneNode(this._lookAhead_));
     }
 
-    _regExp_ = node;
-  }
-
-  public TSlash getSlash()
-  {
-    return _slash_;
-  }
-
-  public void setSlash(TSlash node)
-  {
-    if(_slash_ != null)
+    @Override
+    public void apply(Switch sw)
     {
-      _slash_.parent(null);
+        ((Analysis) sw).caseATokenDef(this);
     }
 
-    if(node != null)
+    public PStateList getStateList()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return this._stateList_;
     }
 
-    _slash_ = node;
-  }
-
-  public PRegExp getLookAhead()
-  {
-    return _lookAhead_;
-  }
-
-  public void setLookAhead(PRegExp node)
-  {
-    if(_lookAhead_ != null)
+    public void setStateList(PStateList node)
     {
-      _lookAhead_.parent(null);
+        if(this._stateList_ != null)
+        {
+            this._stateList_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._stateList_ = node;
     }
 
-    if(node != null)
+    public TId getId()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        return this._id_;
     }
 
-    _lookAhead_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_stateList_)
-           + toString(_id_)
-           + toString(_regExp_)
-           + toString(_slash_)
-           + toString(_lookAhead_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_stateList_ == child)
+    public void setId(TId node)
     {
-      _stateList_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-    if(_id_ == child)
+    public PRegExp getRegExp()
     {
-      _id_ = null;
-      return;
+        return this._regExp_;
     }
 
-    if(_regExp_ == child)
+    public void setRegExp(PRegExp node)
     {
-      _regExp_ = null;
-      return;
+        if(this._regExp_ != null)
+        {
+            this._regExp_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._regExp_ = node;
     }
 
-    if(_slash_ == child)
+    public TSlash getSlash()
     {
-      _slash_ = null;
-      return;
+        return this._slash_;
     }
 
-    if(_lookAhead_ == child)
+    public void setSlash(TSlash node)
     {
-      _lookAhead_ = null;
-      return;
+        if(this._slash_ != null)
+        {
+            this._slash_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._slash_ = node;
     }
 
-  }
-
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_stateList_ == oldChild)
+    public PRegExp getLookAhead()
     {
-      setStateList((PStateList) newChild);
-      return;
+        return this._lookAhead_;
     }
 
-    if(_id_ == oldChild)
+    public void setLookAhead(PRegExp node)
     {
-      setId((TId) newChild);
-      return;
+        if(this._lookAhead_ != null)
+        {
+            this._lookAhead_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._lookAhead_ = node;
     }
 
-    if(_regExp_ == oldChild)
+    @Override
+    public String toString()
     {
-      setRegExp((PRegExp) newChild);
-      return;
+        return ""
+            + toString(this._stateList_)
+            + toString(this._id_)
+            + toString(this._regExp_)
+            + toString(this._slash_)
+            + toString(this._lookAhead_);
     }
 
-    if(_slash_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setSlash((TSlash) newChild);
-      return;
+        // Remove child
+        if(this._stateList_ == child)
+        {
+            this._stateList_ = null;
+            return;
+        }
+
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        if(this._regExp_ == child)
+        {
+            this._regExp_ = null;
+            return;
+        }
+
+        if(this._slash_ == child)
+        {
+            this._slash_ = null;
+            return;
+        }
+
+        if(this._lookAhead_ == child)
+        {
+            this._lookAhead_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-    if(_lookAhead_ == oldChild)
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
     {
-      setLookAhead((PRegExp) newChild);
-      return;
+        // Replace child
+        if(this._stateList_ == oldChild)
+        {
+            setStateList((PStateList) newChild);
+            return;
+        }
+
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        if(this._regExp_ == oldChild)
+        {
+            setRegExp((PRegExp) newChild);
+            return;
+        }
+
+        if(this._slash_ == oldChild)
+        {
+            setSlash((TSlash) newChild);
+            return;
+        }
+
+        if(this._lookAhead_ == oldChild)
+        {
+            setLookAhead((PRegExp) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
-
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ATokenSpecifier.java b/src/org/sablecc/sablecc/node/ATokenSpecifier.java
index 0828026..50743d7 100644
--- a/src/org/sablecc/sablecc/node/ATokenSpecifier.java
+++ b/src/org/sablecc/sablecc/node/ATokenSpecifier.java
@@ -2,32 +2,46 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ATokenSpecifier extends PSpecifier
 {
 
-  public ATokenSpecifier()
-  {}
-  public Object clone()
-  {
-    return new ATokenSpecifier();
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseATokenSpecifier(this);
-  }
-
-  public String toString()
-  {
-    return "";
-  }
-
-  void removeChild(Node child)
-  {}
-
-  void replaceChild(Node oldChild, Node newChild)
-  {}
+    public ATokenSpecifier()
+    {
+        // Constructor
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new ATokenSpecifier();
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseATokenSpecifier(this);
+    }
+
+    @Override
+    public String toString()
+    {
+        return "";
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        // Remove child
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/ATokens.java b/src/org/sablecc/sablecc/node/ATokens.java
index 918c9c8..f99be0c 100644
--- a/src/org/sablecc/sablecc/node/ATokens.java
+++ b/src/org/sablecc/sablecc/node/ATokens.java
@@ -5,99 +5,104 @@ package org.sablecc.sablecc.node;
 import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ATokens extends PTokens
 {
-  private final LinkedList _tokenDefs_ = new TypedLinkedList(new TokenDefs_Cast());
+    private final LinkedList<PTokenDef> _tokenDefs_ = new LinkedList<PTokenDef>();
 
-  public ATokens()
-  {}
+    public ATokens()
+    {
+        // Constructor
+    }
 
-  public ATokens(
-    List _tokenDefs_)
-  {
+    public ATokens(
+        @SuppressWarnings("hiding") List<?> _tokenDefs_)
     {
-      this._tokenDefs_.clear();
-      this._tokenDefs_.addAll(_tokenDefs_);
+        // Constructor
+        setTokenDefs(_tokenDefs_);
+
     }
 
-  }
-  public Object clone()
-  {
-    return new ATokens(
-             cloneList(_tokenDefs_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseATokens(this);
-  }
-
-  public LinkedList getTokenDefs()
-  {
-    return _tokenDefs_;
-  }
-
-  public void setTokenDefs(List list)
-  {
-    _tokenDefs_.clear();
-    _tokenDefs_.addAll(list);
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_tokenDefs_);
-  }
-
-  void removeChild(Node child)
-  {
-    if(_tokenDefs_.remove(child))
+    @Override
+    public Object clone()
     {
-      return;
+        return new ATokens(
+            cloneList(this._tokenDefs_));
     }
 
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseATokens(this);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    for(ListIterator i = _tokenDefs_.listIterator(); i.hasNext();)
+    public LinkedList<PTokenDef> getTokenDefs()
     {
-      if(i.next() == oldChild)
-      {
-        if(newChild != null)
+        return this._tokenDefs_;
+    }
+
+    public void setTokenDefs(List<?> list)
+    {
+        for(PTokenDef e : this._tokenDefs_)
         {
-          i.set(newChild);
-          oldChild.parent(null);
-          return;
+            e.parent(null);
         }
+        this._tokenDefs_.clear();
 
-        i.remove();
-        oldChild.parent(null);
-        return;
-      }
+        for(Object obj_e : list)
+        {
+            PTokenDef e = (PTokenDef) obj_e;
+            if(e.parent() != null)
+            {
+                e.parent().removeChild(e);
+            }
+
+            e.parent(this);
+            this._tokenDefs_.add(e);
+        }
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._tokenDefs_);
+    }
 
-  private class TokenDefs_Cast implements Cast
-  {
-    public Object cast(Object o)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      PTokenDef node = (PTokenDef) o;
+        // Remove child
+        if(this._tokenDefs_.remove(child))
+        {
+            return;
+        }
 
-      if((node.parent() != null) &&
-          (node.parent() != ATokens.this))
-      {
-        node.parent().removeChild(node);
-      }
+        throw new RuntimeException("Not a child.");
+    }
 
-      if((node.parent() == null) ||
-          (node.parent() != ATokens.this))
-      {
-        node.parent(ATokens.this);
-      }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        for(ListIterator<PTokenDef> i = this._tokenDefs_.listIterator(); i.hasNext();)
+        {
+            if(i.next() == oldChild)
+            {
+                if(newChild != null)
+                {
+                    i.set((PTokenDef) newChild);
+                    newChild.parent(this);
+                    oldChild.parent(null);
+                    return;
+                }
+
+                i.remove();
+                oldChild.parent(null);
+                return;
+            }
+        }
 
-      return node;
+        throw new RuntimeException("Not a child.");
     }
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/ATransition.java b/src/org/sablecc/sablecc/node/ATransition.java
index ac6157f..1f2326e 100644
--- a/src/org/sablecc/sablecc/node/ATransition.java
+++ b/src/org/sablecc/sablecc/node/ATransition.java
@@ -2,81 +2,94 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class ATransition extends PTransition
 {
-  private TId _id_;
-
-  public ATransition()
-  {}
-
-  public ATransition(
-    TId _id_)
-  {
-    setId(_id_);
-
-  }
-  public Object clone()
-  {
-    return new ATransition(
-             (TId) cloneNode(_id_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseATransition(this);
-  }
-
-  public TId getId()
-  {
-    return _id_;
-  }
-
-  public void setId(TId node)
-  {
-    if(_id_ != null)
+    private TId _id_;
+
+    public ATransition()
     {
-      _id_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public ATransition(
+        @SuppressWarnings("hiding") TId _id_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        // Constructor
+        setId(_id_);
+
+    }
 
-      node.parent(this);
+    @Override
+    public Object clone()
+    {
+        return new ATransition(
+            cloneNode(this._id_));
     }
 
-    _id_ = node;
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseATransition(this);
+    }
 
-  public String toString()
-  {
-    return ""
-           + toString(_id_);
-  }
+    public TId getId()
+    {
+        return this._id_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_id_ == child)
+    public void setId(TId node)
     {
-      _id_ = null;
-      return;
+        if(this._id_ != null)
+        {
+            this._id_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._id_ = node;
     }
 
-  }
+    @Override
+    public String toString()
+    {
+        return ""
+            + toString(this._id_);
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_id_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setId((TId) newChild);
-      return;
+        // Remove child
+        if(this._id_ == child)
+        {
+            this._id_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._id_ == oldChild)
+        {
+            setId((TId) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/AUnExp.java b/src/org/sablecc/sablecc/node/AUnExp.java
index b3ad503..e9ceda0 100644
--- a/src/org/sablecc/sablecc/node/AUnExp.java
+++ b/src/org/sablecc/sablecc/node/AUnExp.java
@@ -2,124 +2,137 @@
 
 package org.sablecc.sablecc.node;
 
-import java.util.*;
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class AUnExp extends PUnExp
 {
-  private PBasic _basic_;
-  private PUnOp _unOp_;
-
-  public AUnExp()
-  {}
-
-  public AUnExp(
-    PBasic _basic_,
-    PUnOp _unOp_)
-  {
-    setBasic(_basic_);
-
-    setUnOp(_unOp_);
-
-  }
-  public Object clone()
-  {
-    return new AUnExp(
-             (PBasic) cloneNode(_basic_),
-             (PUnOp) cloneNode(_unOp_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseAUnExp(this);
-  }
-
-  public PBasic getBasic()
-  {
-    return _basic_;
-  }
-
-  public void setBasic(PBasic node)
-  {
-    if(_basic_ != null)
+    private PBasic _basic_;
+    private PUnOp _unOp_;
+
+    public AUnExp()
     {
-      _basic_.parent(null);
+        // Constructor
     }
 
-    if(node != null)
+    public AUnExp(
+        @SuppressWarnings("hiding") PBasic _basic_,
+        @SuppressWarnings("hiding") PUnOp _unOp_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
-    }
+        // Constructor
+        setBasic(_basic_);
 
-    _basic_ = node;
-  }
+        setUnOp(_unOp_);
 
-  public PUnOp getUnOp()
-  {
-    return _unOp_;
-  }
+    }
 
-  public void setUnOp(PUnOp node)
-  {
-    if(_unOp_ != null)
+    @Override
+    public Object clone()
     {
-      _unOp_.parent(null);
+        return new AUnExp(
+            cloneNode(this._basic_),
+            cloneNode(this._unOp_));
     }
 
-    if(node != null)
+    @Override
+    public void apply(Switch sw)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        ((Analysis) sw).caseAUnExp(this);
     }
 
-    _unOp_ = node;
-  }
-
-  public String toString()
-  {
-    return ""
-           + toString(_basic_)
-           + toString(_unOp_);
-  }
+    public PBasic getBasic()
+    {
+        return this._basic_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_basic_ == child)
+    public void setBasic(PBasic node)
     {
-      _basic_ = null;
-      return;
+        if(this._basic_ != null)
+        {
+            this._basic_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._basic_ = node;
     }
 
-    if(_unOp_ == child)
+    public PUnOp getUnOp()
     {
-      _unOp_ = null;
-      return;
+        return this._unOp_;
     }
 
-  }
+    public void setUnOp(PUnOp node)
+    {
+        if(this._unOp_ != null)
+        {
+            this._unOp_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._unOp_ = node;
+    }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_basic_ == oldChild)
+    @Override
+    public String toString()
     {
-      setBasic((PBasic) newChild);
-      return;
+        return ""
+            + toString(this._basic_)
+            + toString(this._unOp_);
     }
 
-    if(_unOp_ == oldChild)
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
     {
-      setUnOp((PUnOp) newChild);
-      return;
+        // Remove child
+        if(this._basic_ == child)
+        {
+            this._basic_ = null;
+            return;
+        }
+
+        if(this._unOp_ == child)
+        {
+            this._unOp_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-  }
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        // Replace child
+        if(this._basic_ == oldChild)
+        {
+            setBasic((PBasic) newChild);
+            return;
+        }
+
+        if(this._unOp_ == oldChild)
+        {
+            setUnOp((PUnOp) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/Cast.java b/src/org/sablecc/sablecc/node/Cast.java
deleted file mode 100644
index 920b94b..0000000
--- a/src/org/sablecc/sablecc/node/Cast.java
+++ /dev/null
@@ -1,8 +0,0 @@
-/* This file was generated by SableCC (http://www.sablecc.org/). */
-
-package org.sablecc.sablecc.node;
-
-public interface Cast
-{
-  Object cast(Object o);
-}
diff --git a/src/org/sablecc/sablecc/node/EOF.java b/src/org/sablecc/sablecc/node/EOF.java
index 0133752..e1e155a 100644
--- a/src/org/sablecc/sablecc/node/EOF.java
+++ b/src/org/sablecc/sablecc/node/EOF.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class EOF extends Token
 {
-  public EOF()
-  {
-    setText("");
-  }
+    public EOF()
+    {
+        setText("");
+    }
 
-  public EOF(int line, int pos)
-  {
-    setText("");
-    setLine(line);
-    setPos(pos);
-  }
+    public EOF(int line, int pos)
+    {
+        setText("");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new EOF(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+        return new EOF(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseEOF(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseEOF(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/InvalidToken.java b/src/org/sablecc/sablecc/node/InvalidToken.java
new file mode 100644
index 0000000..1cd2b9f
--- /dev/null
+++ b/src/org/sablecc/sablecc/node/InvalidToken.java
@@ -0,0 +1,33 @@
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package org.sablecc.sablecc.node;
+
+import org.sablecc.sablecc.analysis.*;
+
+ at SuppressWarnings("nls")
+public final class InvalidToken extends Token
+{
+    public InvalidToken(String text)
+    {
+        setText(text);
+    }
+
+    public InvalidToken(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new InvalidToken(getText(), getLine(), getPos());
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseInvalidToken(this);
+    }
+}
diff --git a/src/org/sablecc/sablecc/node/NoCast.java b/src/org/sablecc/sablecc/node/NoCast.java
deleted file mode 100644
index 1678661..0000000
--- a/src/org/sablecc/sablecc/node/NoCast.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* This file was generated by SableCC (http://www.sablecc.org/). */
-
-package org.sablecc.sablecc.node;
-
-public class NoCast implements Cast
-{
-  public final static NoCast instance = new NoCast();
-
-  private NoCast()
-  {}
-
-  public Object cast(Object o)
-  {
-    return o;
-  }
-}
diff --git a/src/org/sablecc/sablecc/node/Node.java b/src/org/sablecc/sablecc/node/Node.java
index e554520..db99795 100644
--- a/src/org/sablecc/sablecc/node/Node.java
+++ b/src/org/sablecc/sablecc/node/Node.java
@@ -3,76 +3,76 @@
 package org.sablecc.sablecc.node;
 
 import java.util.*;
-import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public abstract class Node implements Switchable, Cloneable
 {
-  private Node parent;
+    private Node parent;
 
-  public abstract Object clone();
+    @Override
+    public abstract Object clone();
 
-  public Node parent()
-  {
-    return parent;
-  }
+    public Node parent()
+    {
+        return this.parent;
+    }
 
-  void parent(Node parent)
-  {
-    this.parent = parent;
-  }
+    void parent(@SuppressWarnings("hiding") Node parent)
+    {
+        this.parent = parent;
+    }
 
-  abstract void removeChild(Node child);
-  abstract void replaceChild(Node oldChild, Node newChild);
+    abstract void removeChild(Node child);
+    abstract void replaceChild(Node oldChild, Node newChild);
 
-  public void replaceBy(Node node)
-  {
-    if(parent != null)
+    public void replaceBy(Node node)
     {
-      parent.replaceChild(this, node);
+        this.parent.replaceChild(this, node);
     }
-  }
 
-  protected String toString(Node node)
-  {
-    if(node != null)
+    protected String toString(Node node)
     {
-      return node.toString();
+        if(node != null)
+        {
+            return node.toString();
+        }
+
+        return "";
     }
 
-    return "";
-  }
+    protected String toString(List<?> list)
+    {
+        StringBuffer s = new StringBuffer();
 
-  protected String toString(List list)
-  {
-    StringBuffer s = new StringBuffer();
+        for(Iterator<?> i = list.iterator(); i.hasNext();)
+        {
+            s.append(i.next());
+        }
 
-    for(Iterator i = list.iterator(); i.hasNext();)
-    {
-      s.append(i.next());
+        return s.toString();
     }
 
-    return s.toString();
-  }
-
-  protected Node cloneNode(Node node)
-  {
-    if(node != null)
+    @SuppressWarnings("unchecked")
+    protected <T extends Node> T cloneNode(T node)
     {
-      return (Node) node.clone();
+        if(node != null)
+        {
+            return (T) node.clone();
+        }
+
+        return null;
     }
 
-    return null;
-  }
+    @SuppressWarnings("unchecked")
+    protected <T extends Node> List<T> cloneList(List<T> list)
+    {
+        List<T> clone = new LinkedList<T>();
 
-  protected List cloneList(List list)
-  {
-    List clone = new LinkedList();
+        for(T n : list)
+        {
+            clone.add((T) n.clone());
+        }
 
-    for(Iterator i = list.iterator(); i.hasNext();)
-    {
-      clone.add(((Node) i.next()).clone());
+        return clone;
     }
-
-    return clone;
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/NodeCast.java b/src/org/sablecc/sablecc/node/NodeCast.java
deleted file mode 100644
index 9ee7fc3..0000000
--- a/src/org/sablecc/sablecc/node/NodeCast.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* This file was generated by SableCC (http://www.sablecc.org/). */
-
-package org.sablecc.sablecc.node;
-
-public class NodeCast implements Cast
-{
-  public final static NodeCast instance = new NodeCast();
-
-  private NodeCast()
-  {}
-
-  public Object cast(Object o)
-  {
-    return (Node) o;
-  }
-}
diff --git a/src/org/sablecc/sablecc/node/PAlt.java b/src/org/sablecc/sablecc/node/PAlt.java
index 765b8b0..cdd9a4a 100644
--- a/src/org/sablecc/sablecc/node/PAlt.java
+++ b/src/org/sablecc/sablecc/node/PAlt.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PAlt extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PAltTransform.java b/src/org/sablecc/sablecc/node/PAltTransform.java
index 58b590e..88fa131 100644
--- a/src/org/sablecc/sablecc/node/PAltTransform.java
+++ b/src/org/sablecc/sablecc/node/PAltTransform.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PAltTransform extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PAst.java b/src/org/sablecc/sablecc/node/PAst.java
index aa65dd7..a452a40 100644
--- a/src/org/sablecc/sablecc/node/PAst.java
+++ b/src/org/sablecc/sablecc/node/PAst.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PAst extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PAstAlt.java b/src/org/sablecc/sablecc/node/PAstAlt.java
index edabab5..55198fc 100644
--- a/src/org/sablecc/sablecc/node/PAstAlt.java
+++ b/src/org/sablecc/sablecc/node/PAstAlt.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PAstAlt extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PAstProd.java b/src/org/sablecc/sablecc/node/PAstProd.java
index 7ca1e78..e1953d3 100644
--- a/src/org/sablecc/sablecc/node/PAstProd.java
+++ b/src/org/sablecc/sablecc/node/PAstProd.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PAstProd extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PBasic.java b/src/org/sablecc/sablecc/node/PBasic.java
index cbd72e5..8059acc 100644
--- a/src/org/sablecc/sablecc/node/PBasic.java
+++ b/src/org/sablecc/sablecc/node/PBasic.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PBasic extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PBinOp.java b/src/org/sablecc/sablecc/node/PBinOp.java
index a2286b4..002602c 100644
--- a/src/org/sablecc/sablecc/node/PBinOp.java
+++ b/src/org/sablecc/sablecc/node/PBinOp.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PBinOp extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PChar.java b/src/org/sablecc/sablecc/node/PChar.java
index 70fdd12..d78fe0f 100644
--- a/src/org/sablecc/sablecc/node/PChar.java
+++ b/src/org/sablecc/sablecc/node/PChar.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PChar extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PConcat.java b/src/org/sablecc/sablecc/node/PConcat.java
index c97f5d9..773b215 100644
--- a/src/org/sablecc/sablecc/node/PConcat.java
+++ b/src/org/sablecc/sablecc/node/PConcat.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PConcat extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PElem.java b/src/org/sablecc/sablecc/node/PElem.java
index 66dbb70..f456e5c 100644
--- a/src/org/sablecc/sablecc/node/PElem.java
+++ b/src/org/sablecc/sablecc/node/PElem.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PElem extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PGrammar.java b/src/org/sablecc/sablecc/node/PGrammar.java
index 2e4f19f..39cba9b 100644
--- a/src/org/sablecc/sablecc/node/PGrammar.java
+++ b/src/org/sablecc/sablecc/node/PGrammar.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PGrammar extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PHelperDef.java b/src/org/sablecc/sablecc/node/PHelperDef.java
index 8a2b109..45fd6fa 100644
--- a/src/org/sablecc/sablecc/node/PHelperDef.java
+++ b/src/org/sablecc/sablecc/node/PHelperDef.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PHelperDef extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PHelpers.java b/src/org/sablecc/sablecc/node/PHelpers.java
index 1553c87..a97168f 100644
--- a/src/org/sablecc/sablecc/node/PHelpers.java
+++ b/src/org/sablecc/sablecc/node/PHelpers.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PHelpers extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PIgnTokens.java b/src/org/sablecc/sablecc/node/PIgnTokens.java
index 253de6e..b2a6876 100644
--- a/src/org/sablecc/sablecc/node/PIgnTokens.java
+++ b/src/org/sablecc/sablecc/node/PIgnTokens.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PIgnTokens extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PListTerm.java b/src/org/sablecc/sablecc/node/PListTerm.java
index 35837af..52a45c0 100644
--- a/src/org/sablecc/sablecc/node/PListTerm.java
+++ b/src/org/sablecc/sablecc/node/PListTerm.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PListTerm extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PProd.java b/src/org/sablecc/sablecc/node/PProd.java
index 2c72802..9a08cf8 100644
--- a/src/org/sablecc/sablecc/node/PProd.java
+++ b/src/org/sablecc/sablecc/node/PProd.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PProd extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PProdName.java b/src/org/sablecc/sablecc/node/PProdName.java
index 7da2e3d..437a52a 100644
--- a/src/org/sablecc/sablecc/node/PProdName.java
+++ b/src/org/sablecc/sablecc/node/PProdName.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PProdName extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PProductions.java b/src/org/sablecc/sablecc/node/PProductions.java
index f5f954b..0a61e72 100644
--- a/src/org/sablecc/sablecc/node/PProductions.java
+++ b/src/org/sablecc/sablecc/node/PProductions.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PProductions extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PRegExp.java b/src/org/sablecc/sablecc/node/PRegExp.java
index 6d1e436..e3f7a6e 100644
--- a/src/org/sablecc/sablecc/node/PRegExp.java
+++ b/src/org/sablecc/sablecc/node/PRegExp.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PRegExp extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PSet.java b/src/org/sablecc/sablecc/node/PSet.java
index cbddf9a..91668ff 100644
--- a/src/org/sablecc/sablecc/node/PSet.java
+++ b/src/org/sablecc/sablecc/node/PSet.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PSet extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PSpecifier.java b/src/org/sablecc/sablecc/node/PSpecifier.java
index 99cb14e..ec0fcdc 100644
--- a/src/org/sablecc/sablecc/node/PSpecifier.java
+++ b/src/org/sablecc/sablecc/node/PSpecifier.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PSpecifier extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PStateList.java b/src/org/sablecc/sablecc/node/PStateList.java
index 6bc1132..5ca56fe 100644
--- a/src/org/sablecc/sablecc/node/PStateList.java
+++ b/src/org/sablecc/sablecc/node/PStateList.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PStateList extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PStateListTail.java b/src/org/sablecc/sablecc/node/PStateListTail.java
index d34ca70..bc7de2f 100644
--- a/src/org/sablecc/sablecc/node/PStateListTail.java
+++ b/src/org/sablecc/sablecc/node/PStateListTail.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PStateListTail extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PStates.java b/src/org/sablecc/sablecc/node/PStates.java
index c01e872..d494b18 100644
--- a/src/org/sablecc/sablecc/node/PStates.java
+++ b/src/org/sablecc/sablecc/node/PStates.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PStates extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PTerm.java b/src/org/sablecc/sablecc/node/PTerm.java
index 49feaaf..4deeffc 100644
--- a/src/org/sablecc/sablecc/node/PTerm.java
+++ b/src/org/sablecc/sablecc/node/PTerm.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PTerm extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PTokenDef.java b/src/org/sablecc/sablecc/node/PTokenDef.java
index c9e7f2d..1c66c90 100644
--- a/src/org/sablecc/sablecc/node/PTokenDef.java
+++ b/src/org/sablecc/sablecc/node/PTokenDef.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PTokenDef extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PTokens.java b/src/org/sablecc/sablecc/node/PTokens.java
index 0539578..4e0aa26 100644
--- a/src/org/sablecc/sablecc/node/PTokens.java
+++ b/src/org/sablecc/sablecc/node/PTokens.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PTokens extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PTransition.java b/src/org/sablecc/sablecc/node/PTransition.java
index e651f5e..ef0f1f4 100644
--- a/src/org/sablecc/sablecc/node/PTransition.java
+++ b/src/org/sablecc/sablecc/node/PTransition.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PTransition extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PUnExp.java b/src/org/sablecc/sablecc/node/PUnExp.java
index e16b6e9..aad69b0 100644
--- a/src/org/sablecc/sablecc/node/PUnExp.java
+++ b/src/org/sablecc/sablecc/node/PUnExp.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PUnExp extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/PUnOp.java b/src/org/sablecc/sablecc/node/PUnOp.java
index 48e2582..de03247 100644
--- a/src/org/sablecc/sablecc/node/PUnOp.java
+++ b/src/org/sablecc/sablecc/node/PUnOp.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public abstract class PUnOp extends Node
-  {}
+{
+    // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/Start.java b/src/org/sablecc/sablecc/node/Start.java
index 0806caa..4ea6f7e 100644
--- a/src/org/sablecc/sablecc/node/Start.java
+++ b/src/org/sablecc/sablecc/node/Start.java
@@ -4,118 +4,130 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class Start extends Node
 {
-  private PGrammar _pGrammar_;
-  private EOF _eof_;
-
-  public Start()
-  {}
-
-  public Start(
-    PGrammar _pGrammar_,
-    EOF _eof_)
-  {
-    setPGrammar(_pGrammar_);
-    setEOF(_eof_);
-  }
-
-  public Object clone()
-  {
-    return new Start(
-             (PGrammar) cloneNode(_pGrammar_),
-             (EOF) cloneNode(_eof_));
-  }
-
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseStart(this);
-  }
-
-  public PGrammar getPGrammar()
-  {
-    return _pGrammar_;
-  }
-
-  public void setPGrammar(PGrammar node)
-  {
-    if(_pGrammar_ != null)
+    private PGrammar _pGrammar_;
+    private EOF _eof_;
+
+    public Start()
     {
-      _pGrammar_.parent(null);
+        // Empty body
     }
 
-    if(node != null)
+    public Start(
+        @SuppressWarnings("hiding") PGrammar _pGrammar_,
+        @SuppressWarnings("hiding") EOF _eof_)
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
-
-      node.parent(this);
+        setPGrammar(_pGrammar_);
+        setEOF(_eof_);
     }
 
-    _pGrammar_ = node;
-  }
-
-  public EOF getEOF()
-  {
-    return _eof_;
-  }
+    @Override
+    public Object clone()
+    {
+        return new Start(
+            cloneNode(this._pGrammar_),
+            cloneNode(this._eof_));
+    }
 
-  public void setEOF(EOF node)
-  {
-    if(_eof_ != null)
+    @Override
+    public void apply(Switch sw)
     {
-      _eof_.parent(null);
+        ((Analysis) sw).caseStart(this);
     }
 
-    if(node != null)
+    public PGrammar getPGrammar()
     {
-      if(node.parent() != null)
-      {
-        node.parent().removeChild(node);
-      }
+        return this._pGrammar_;
+    }
 
-      node.parent(this);
+    public void setPGrammar(PGrammar node)
+    {
+        if(this._pGrammar_ != null)
+        {
+            this._pGrammar_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._pGrammar_ = node;
     }
 
-    _eof_ = node;
-  }
+    public EOF getEOF()
+    {
+        return this._eof_;
+    }
 
-  void removeChild(Node child)
-  {
-    if(_pGrammar_ == child)
+    public void setEOF(EOF node)
     {
-      _pGrammar_ = null;
-      return;
+        if(this._eof_ != null)
+        {
+            this._eof_.parent(null);
+        }
+
+        if(node != null)
+        {
+            if(node.parent() != null)
+            {
+                node.parent().removeChild(node);
+            }
+
+            node.parent(this);
+        }
+
+        this._eof_ = node;
     }
 
-    if(_eof_ == child)
+    @Override
+    void removeChild(Node child)
     {
-      _eof_ = null;
-      return;
+        if(this._pGrammar_ == child)
+        {
+            this._pGrammar_ = null;
+            return;
+        }
+
+        if(this._eof_ == child)
+        {
+            this._eof_ = null;
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
-  }
 
-  void replaceChild(Node oldChild, Node newChild)
-  {
-    if(_pGrammar_ == oldChild)
+    @Override
+    void replaceChild(Node oldChild, Node newChild)
     {
-      setPGrammar((PGrammar) newChild);
-      return;
+        if(this._pGrammar_ == oldChild)
+        {
+            setPGrammar((PGrammar) newChild);
+            return;
+        }
+
+        if(this._eof_ == oldChild)
+        {
+            setEOF((EOF) newChild);
+            return;
+        }
+
+        throw new RuntimeException("Not a child.");
     }
 
-    if(_eof_ == oldChild)
+    @Override
+    public String toString()
     {
-      setEOF((EOF) newChild);
-      return;
+        return "" +
+            toString(this._pGrammar_) +
+            toString(this._eof_);
     }
-  }
-
-  public String toString()
-  {
-    return "" +
-           toString(_pGrammar_) +
-           toString(_eof_);
-  }
 }
diff --git a/src/org/sablecc/sablecc/node/Switch.java b/src/org/sablecc/sablecc/node/Switch.java
index 8cadd36..e8f74eb 100644
--- a/src/org/sablecc/sablecc/node/Switch.java
+++ b/src/org/sablecc/sablecc/node/Switch.java
@@ -3,4 +3,6 @@
 package org.sablecc.sablecc.node;
 
 public interface Switch
-  {}
+{
+        // Empty body
+}
diff --git a/src/org/sablecc/sablecc/node/Switchable.java b/src/org/sablecc/sablecc/node/Switchable.java
index 6e0ef86..cee4d38 100644
--- a/src/org/sablecc/sablecc/node/Switchable.java
+++ b/src/org/sablecc/sablecc/node/Switchable.java
@@ -4,5 +4,5 @@ package org.sablecc.sablecc.node;
 
 public interface Switchable
 {
-  void apply(Switch sw);
+    void apply(Switch sw);
 }
diff --git a/src/org/sablecc/sablecc/node/TAbstract.java b/src/org/sablecc/sablecc/node/TAbstract.java
index 754a507..f084966 100644
--- a/src/org/sablecc/sablecc/node/TAbstract.java
+++ b/src/org/sablecc/sablecc/node/TAbstract.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TAbstract extends Token
 {
-  public TAbstract()
-  {
-    super.setText("Abstract");
-  }
+    public TAbstract()
+    {
+        super.setText("Abstract");
+    }
 
-  public TAbstract(int line, int pos)
-  {
-    super.setText("Abstract");
-    setLine(line);
-    setPos(pos);
-  }
+    public TAbstract(int line, int pos)
+    {
+        super.setText("Abstract");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TAbstract(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TAbstract(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTAbstract(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTAbstract(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TAbstract text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TAbstract text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TArrow.java b/src/org/sablecc/sablecc/node/TArrow.java
index dcfedee..9ff1fe4 100644
--- a/src/org/sablecc/sablecc/node/TArrow.java
+++ b/src/org/sablecc/sablecc/node/TArrow.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TArrow extends Token
 {
-  public TArrow()
-  {
-    super.setText("->");
-  }
+    public TArrow()
+    {
+        super.setText("->");
+    }
 
-  public TArrow(int line, int pos)
-  {
-    super.setText("->");
-    setLine(line);
-    setPos(pos);
-  }
+    public TArrow(int line, int pos)
+    {
+        super.setText("->");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TArrow(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TArrow(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTArrow(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTArrow(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TArrow text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TArrow text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TBar.java b/src/org/sablecc/sablecc/node/TBar.java
index 507ae38..d51a94b 100644
--- a/src/org/sablecc/sablecc/node/TBar.java
+++ b/src/org/sablecc/sablecc/node/TBar.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TBar extends Token
 {
-  public TBar()
-  {
-    super.setText("|");
-  }
+    public TBar()
+    {
+        super.setText("|");
+    }
 
-  public TBar(int line, int pos)
-  {
-    super.setText("|");
-    setLine(line);
-    setPos(pos);
-  }
+    public TBar(int line, int pos)
+    {
+        super.setText("|");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TBar(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TBar(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTBar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTBar(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TBar text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TBar text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TBlank.java b/src/org/sablecc/sablecc/node/TBlank.java
index 585bca2..497d0ae 100644
--- a/src/org/sablecc/sablecc/node/TBlank.java
+++ b/src/org/sablecc/sablecc/node/TBlank.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TBlank extends Token
 {
-  public TBlank(String text)
-  {
-    setText(text);
-  }
+    public TBlank(String text)
+    {
+        setText(text);
+    }
 
-  public TBlank(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TBlank(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TBlank(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TBlank(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTBlank(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTBlank(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TChar.java b/src/org/sablecc/sablecc/node/TChar.java
index c5b6bd5..edcb31b 100644
--- a/src/org/sablecc/sablecc/node/TChar.java
+++ b/src/org/sablecc/sablecc/node/TChar.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TChar extends Token
 {
-  public TChar(String text)
-  {
-    setText(text);
-  }
+    public TChar(String text)
+    {
+        setText(text);
+    }
 
-  public TChar(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TChar(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TChar(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TChar(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTChar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTChar(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TColon.java b/src/org/sablecc/sablecc/node/TColon.java
index 678a3b5..ac9923d 100644
--- a/src/org/sablecc/sablecc/node/TColon.java
+++ b/src/org/sablecc/sablecc/node/TColon.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TColon extends Token
 {
-  public TColon()
-  {
-    super.setText(":");
-  }
+    public TColon()
+    {
+        super.setText(":");
+    }
 
-  public TColon(int line, int pos)
-  {
-    super.setText(":");
-    setLine(line);
-    setPos(pos);
-  }
+    public TColon(int line, int pos)
+    {
+        super.setText(":");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TColon(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TColon(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTColon(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTColon(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TColon text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TColon text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TComma.java b/src/org/sablecc/sablecc/node/TComma.java
index b0364e7..d0f735a 100644
--- a/src/org/sablecc/sablecc/node/TComma.java
+++ b/src/org/sablecc/sablecc/node/TComma.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TComma extends Token
 {
-  public TComma()
-  {
-    super.setText(",");
-  }
+    public TComma()
+    {
+        super.setText(",");
+    }
 
-  public TComma(int line, int pos)
-  {
-    super.setText(",");
-    setLine(line);
-    setPos(pos);
-  }
+    public TComma(int line, int pos)
+    {
+        super.setText(",");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TComma(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TComma(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTComma(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTComma(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TComma text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TComma text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TComment.java b/src/org/sablecc/sablecc/node/TComment.java
index 4056f52..e49a2cf 100644
--- a/src/org/sablecc/sablecc/node/TComment.java
+++ b/src/org/sablecc/sablecc/node/TComment.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TComment extends Token
 {
-  public TComment(String text)
-  {
-    setText(text);
-  }
+    public TComment(String text)
+    {
+        setText(text);
+    }
 
-  public TComment(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TComment(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TComment(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TComment(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTComment(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTComment(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TDDot.java b/src/org/sablecc/sablecc/node/TDDot.java
index 0243d22..1c61870 100644
--- a/src/org/sablecc/sablecc/node/TDDot.java
+++ b/src/org/sablecc/sablecc/node/TDDot.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TDDot extends Token
 {
-  public TDDot()
-  {
-    super.setText("..");
-  }
+    public TDDot()
+    {
+        super.setText("..");
+    }
 
-  public TDDot(int line, int pos)
-  {
-    super.setText("..");
-    setLine(line);
-    setPos(pos);
-  }
+    public TDDot(int line, int pos)
+    {
+        super.setText("..");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TDDot(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TDDot(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTDDot(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTDDot(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TDDot text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TDDot text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TDecChar.java b/src/org/sablecc/sablecc/node/TDecChar.java
index f9c4688..386717b 100644
--- a/src/org/sablecc/sablecc/node/TDecChar.java
+++ b/src/org/sablecc/sablecc/node/TDecChar.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TDecChar extends Token
 {
-  public TDecChar(String text)
-  {
-    setText(text);
-  }
+    public TDecChar(String text)
+    {
+        setText(text);
+    }
 
-  public TDecChar(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TDecChar(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TDecChar(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TDecChar(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTDecChar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTDecChar(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TDot.java b/src/org/sablecc/sablecc/node/TDot.java
index 84df19e..c4be6bf 100644
--- a/src/org/sablecc/sablecc/node/TDot.java
+++ b/src/org/sablecc/sablecc/node/TDot.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TDot extends Token
 {
-  public TDot()
-  {
-    super.setText(".");
-  }
+    public TDot()
+    {
+        super.setText(".");
+    }
 
-  public TDot(int line, int pos)
-  {
-    super.setText(".");
-    setLine(line);
-    setPos(pos);
-  }
+    public TDot(int line, int pos)
+    {
+        super.setText(".");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TDot(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TDot(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTDot(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTDot(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TDot text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TDot text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TEqual.java b/src/org/sablecc/sablecc/node/TEqual.java
index 1ff8e6d..03c318b 100644
--- a/src/org/sablecc/sablecc/node/TEqual.java
+++ b/src/org/sablecc/sablecc/node/TEqual.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TEqual extends Token
 {
-  public TEqual()
-  {
-    super.setText("=");
-  }
+    public TEqual()
+    {
+        super.setText("=");
+    }
 
-  public TEqual(int line, int pos)
-  {
-    super.setText("=");
-    setLine(line);
-    setPos(pos);
-  }
+    public TEqual(int line, int pos)
+    {
+        super.setText("=");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TEqual(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TEqual(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTEqual(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTEqual(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TEqual text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TEqual text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/THelpers.java b/src/org/sablecc/sablecc/node/THelpers.java
index 8ed8c1e..5e081dc 100644
--- a/src/org/sablecc/sablecc/node/THelpers.java
+++ b/src/org/sablecc/sablecc/node/THelpers.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class THelpers extends Token
 {
-  public THelpers()
-  {
-    super.setText("Helpers");
-  }
+    public THelpers()
+    {
+        super.setText("Helpers");
+    }
 
-  public THelpers(int line, int pos)
-  {
-    super.setText("Helpers");
-    setLine(line);
-    setPos(pos);
-  }
+    public THelpers(int line, int pos)
+    {
+        super.setText("Helpers");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new THelpers(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new THelpers(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTHelpers(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTHelpers(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change THelpers text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change THelpers text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/THexChar.java b/src/org/sablecc/sablecc/node/THexChar.java
index b3d7d91..78a8d2c 100644
--- a/src/org/sablecc/sablecc/node/THexChar.java
+++ b/src/org/sablecc/sablecc/node/THexChar.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class THexChar extends Token
 {
-  public THexChar(String text)
-  {
-    setText(text);
-  }
+    public THexChar(String text)
+    {
+        setText(text);
+    }
 
-  public THexChar(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public THexChar(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new THexChar(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new THexChar(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTHexChar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTHexChar(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TId.java b/src/org/sablecc/sablecc/node/TId.java
index 7ba0ed9..80d29e2 100644
--- a/src/org/sablecc/sablecc/node/TId.java
+++ b/src/org/sablecc/sablecc/node/TId.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TId extends Token
 {
-  public TId(String text)
-  {
-    setText(text);
-  }
+    public TId(String text)
+    {
+        setText(text);
+    }
 
-  public TId(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TId(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TId(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TId(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTId(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTId(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TIgnored.java b/src/org/sablecc/sablecc/node/TIgnored.java
index 230eef8..6c6278e 100644
--- a/src/org/sablecc/sablecc/node/TIgnored.java
+++ b/src/org/sablecc/sablecc/node/TIgnored.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TIgnored extends Token
 {
-  public TIgnored()
-  {
-    super.setText("Ignored");
-  }
+    public TIgnored()
+    {
+        super.setText("Ignored");
+    }
 
-  public TIgnored(int line, int pos)
-  {
-    super.setText("Ignored");
-    setLine(line);
-    setPos(pos);
-  }
+    public TIgnored(int line, int pos)
+    {
+        super.setText("Ignored");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TIgnored(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TIgnored(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTIgnored(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTIgnored(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TIgnored text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TIgnored text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TLBkt.java b/src/org/sablecc/sablecc/node/TLBkt.java
index 64c6015..1f7a56b 100644
--- a/src/org/sablecc/sablecc/node/TLBkt.java
+++ b/src/org/sablecc/sablecc/node/TLBkt.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TLBkt extends Token
 {
-  public TLBkt()
-  {
-    super.setText("[");
-  }
+    public TLBkt()
+    {
+        super.setText("[");
+    }
 
-  public TLBkt(int line, int pos)
-  {
-    super.setText("[");
-    setLine(line);
-    setPos(pos);
-  }
+    public TLBkt(int line, int pos)
+    {
+        super.setText("[");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TLBkt(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TLBkt(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTLBkt(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTLBkt(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TLBkt text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TLBkt text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TLBrace.java b/src/org/sablecc/sablecc/node/TLBrace.java
index 062bc75..addd85a 100644
--- a/src/org/sablecc/sablecc/node/TLBrace.java
+++ b/src/org/sablecc/sablecc/node/TLBrace.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TLBrace extends Token
 {
-  public TLBrace()
-  {
-    super.setText("{");
-  }
+    public TLBrace()
+    {
+        super.setText("{");
+    }
 
-  public TLBrace(int line, int pos)
-  {
-    super.setText("{");
-    setLine(line);
-    setPos(pos);
-  }
+    public TLBrace(int line, int pos)
+    {
+        super.setText("{");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TLBrace(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TLBrace(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTLBrace(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTLBrace(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TLBrace text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TLBrace text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TLPar.java b/src/org/sablecc/sablecc/node/TLPar.java
index eb69710..c638973 100644
--- a/src/org/sablecc/sablecc/node/TLPar.java
+++ b/src/org/sablecc/sablecc/node/TLPar.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TLPar extends Token
 {
-  public TLPar()
-  {
-    super.setText("(");
-  }
+    public TLPar()
+    {
+        super.setText("(");
+    }
 
-  public TLPar(int line, int pos)
-  {
-    super.setText("(");
-    setLine(line);
-    setPos(pos);
-  }
+    public TLPar(int line, int pos)
+    {
+        super.setText("(");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TLPar(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TLPar(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTLPar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTLPar(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TLPar text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TLPar text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TMinus.java b/src/org/sablecc/sablecc/node/TMinus.java
index 6e655a9..321fafd 100644
--- a/src/org/sablecc/sablecc/node/TMinus.java
+++ b/src/org/sablecc/sablecc/node/TMinus.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TMinus extends Token
 {
-  public TMinus()
-  {
-    super.setText("-");
-  }
+    public TMinus()
+    {
+        super.setText("-");
+    }
 
-  public TMinus(int line, int pos)
-  {
-    super.setText("-");
-    setLine(line);
-    setPos(pos);
-  }
+    public TMinus(int line, int pos)
+    {
+        super.setText("-");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TMinus(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TMinus(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTMinus(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTMinus(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TMinus text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TMinus text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TNew.java b/src/org/sablecc/sablecc/node/TNew.java
index 4d3b87e..4a7527d 100644
--- a/src/org/sablecc/sablecc/node/TNew.java
+++ b/src/org/sablecc/sablecc/node/TNew.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TNew extends Token
 {
-  public TNew()
-  {
-    super.setText("New");
-  }
+    public TNew()
+    {
+        super.setText("New");
+    }
 
-  public TNew(int line, int pos)
-  {
-    super.setText("New");
-    setLine(line);
-    setPos(pos);
-  }
+    public TNew(int line, int pos)
+    {
+        super.setText("New");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TNew(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TNew(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTNew(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTNew(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TNew text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TNew text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TNull.java b/src/org/sablecc/sablecc/node/TNull.java
index 4b523c7..b6548ff 100644
--- a/src/org/sablecc/sablecc/node/TNull.java
+++ b/src/org/sablecc/sablecc/node/TNull.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TNull extends Token
 {
-  public TNull()
-  {
-    super.setText("Null");
-  }
+    public TNull()
+    {
+        super.setText("Null");
+    }
 
-  public TNull(int line, int pos)
-  {
-    super.setText("Null");
-    setLine(line);
-    setPos(pos);
-  }
+    public TNull(int line, int pos)
+    {
+        super.setText("Null");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TNull(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TNull(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTNull(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTNull(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TNull text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TNull text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TPackage.java b/src/org/sablecc/sablecc/node/TPackage.java
index 10003fa..dd7177a 100644
--- a/src/org/sablecc/sablecc/node/TPackage.java
+++ b/src/org/sablecc/sablecc/node/TPackage.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TPackage extends Token
 {
-  public TPackage()
-  {
-    super.setText("Package");
-  }
+    public TPackage()
+    {
+        super.setText("Package");
+    }
 
-  public TPackage(int line, int pos)
-  {
-    super.setText("Package");
-    setLine(line);
-    setPos(pos);
-  }
+    public TPackage(int line, int pos)
+    {
+        super.setText("Package");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TPackage(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TPackage(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTPackage(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTPackage(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TPackage text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TPackage text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TPkgId.java b/src/org/sablecc/sablecc/node/TPkgId.java
index 0390d21..fa9279d 100644
--- a/src/org/sablecc/sablecc/node/TPkgId.java
+++ b/src/org/sablecc/sablecc/node/TPkgId.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TPkgId extends Token
 {
-  public TPkgId(String text)
-  {
-    setText(text);
-  }
+    public TPkgId(String text)
+    {
+        setText(text);
+    }
 
-  public TPkgId(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TPkgId(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TPkgId(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TPkgId(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTPkgId(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTPkgId(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TPlus.java b/src/org/sablecc/sablecc/node/TPlus.java
index d7e48a7..a67a331 100644
--- a/src/org/sablecc/sablecc/node/TPlus.java
+++ b/src/org/sablecc/sablecc/node/TPlus.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TPlus extends Token
 {
-  public TPlus()
-  {
-    super.setText("+");
-  }
+    public TPlus()
+    {
+        super.setText("+");
+    }
 
-  public TPlus(int line, int pos)
-  {
-    super.setText("+");
-    setLine(line);
-    setPos(pos);
-  }
+    public TPlus(int line, int pos)
+    {
+        super.setText("+");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TPlus(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TPlus(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTPlus(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTPlus(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TPlus text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TPlus text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TProductionSpecifier.java b/src/org/sablecc/sablecc/node/TProductionSpecifier.java
index 8cb21c2..e715dfc 100644
--- a/src/org/sablecc/sablecc/node/TProductionSpecifier.java
+++ b/src/org/sablecc/sablecc/node/TProductionSpecifier.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TProductionSpecifier extends Token
 {
-  public TProductionSpecifier()
-  {
-    super.setText("P");
-  }
+    public TProductionSpecifier()
+    {
+        super.setText("P");
+    }
 
-  public TProductionSpecifier(int line, int pos)
-  {
-    super.setText("P");
-    setLine(line);
-    setPos(pos);
-  }
+    public TProductionSpecifier(int line, int pos)
+    {
+        super.setText("P");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TProductionSpecifier(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TProductionSpecifier(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTProductionSpecifier(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTProductionSpecifier(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TProductionSpecifier text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TProductionSpecifier text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TProductions.java b/src/org/sablecc/sablecc/node/TProductions.java
index 6d201b5..e2fcace 100644
--- a/src/org/sablecc/sablecc/node/TProductions.java
+++ b/src/org/sablecc/sablecc/node/TProductions.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TProductions extends Token
 {
-  public TProductions()
-  {
-    super.setText("Productions");
-  }
+    public TProductions()
+    {
+        super.setText("Productions");
+    }
 
-  public TProductions(int line, int pos)
-  {
-    super.setText("Productions");
-    setLine(line);
-    setPos(pos);
-  }
+    public TProductions(int line, int pos)
+    {
+        super.setText("Productions");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TProductions(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TProductions(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTProductions(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTProductions(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TProductions text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TProductions text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TQMark.java b/src/org/sablecc/sablecc/node/TQMark.java
index b07059f..7babcb4 100644
--- a/src/org/sablecc/sablecc/node/TQMark.java
+++ b/src/org/sablecc/sablecc/node/TQMark.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TQMark extends Token
 {
-  public TQMark()
-  {
-    super.setText("?");
-  }
+    public TQMark()
+    {
+        super.setText("?");
+    }
 
-  public TQMark(int line, int pos)
-  {
-    super.setText("?");
-    setLine(line);
-    setPos(pos);
-  }
+    public TQMark(int line, int pos)
+    {
+        super.setText("?");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TQMark(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TQMark(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTQMark(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTQMark(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TQMark text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TQMark text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TRBkt.java b/src/org/sablecc/sablecc/node/TRBkt.java
index a32f0e7..16519c7 100644
--- a/src/org/sablecc/sablecc/node/TRBkt.java
+++ b/src/org/sablecc/sablecc/node/TRBkt.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TRBkt extends Token
 {
-  public TRBkt()
-  {
-    super.setText("]");
-  }
+    public TRBkt()
+    {
+        super.setText("]");
+    }
 
-  public TRBkt(int line, int pos)
-  {
-    super.setText("]");
-    setLine(line);
-    setPos(pos);
-  }
+    public TRBkt(int line, int pos)
+    {
+        super.setText("]");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TRBkt(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TRBkt(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTRBkt(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTRBkt(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TRBkt text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TRBkt text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TRBrace.java b/src/org/sablecc/sablecc/node/TRBrace.java
index 26e4a85..06b5c3d 100644
--- a/src/org/sablecc/sablecc/node/TRBrace.java
+++ b/src/org/sablecc/sablecc/node/TRBrace.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TRBrace extends Token
 {
-  public TRBrace()
-  {
-    super.setText("}");
-  }
+    public TRBrace()
+    {
+        super.setText("}");
+    }
 
-  public TRBrace(int line, int pos)
-  {
-    super.setText("}");
-    setLine(line);
-    setPos(pos);
-  }
+    public TRBrace(int line, int pos)
+    {
+        super.setText("}");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TRBrace(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TRBrace(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTRBrace(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTRBrace(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TRBrace text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TRBrace text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TRPar.java b/src/org/sablecc/sablecc/node/TRPar.java
index 856a375..56f6361 100644
--- a/src/org/sablecc/sablecc/node/TRPar.java
+++ b/src/org/sablecc/sablecc/node/TRPar.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TRPar extends Token
 {
-  public TRPar()
-  {
-    super.setText(")");
-  }
+    public TRPar()
+    {
+        super.setText(")");
+    }
 
-  public TRPar(int line, int pos)
-  {
-    super.setText(")");
-    setLine(line);
-    setPos(pos);
-  }
+    public TRPar(int line, int pos)
+    {
+        super.setText(")");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TRPar(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TRPar(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTRPar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTRPar(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TRPar text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TRPar text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TSemicolon.java b/src/org/sablecc/sablecc/node/TSemicolon.java
index c768657..4ccb45c 100644
--- a/src/org/sablecc/sablecc/node/TSemicolon.java
+++ b/src/org/sablecc/sablecc/node/TSemicolon.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TSemicolon extends Token
 {
-  public TSemicolon()
-  {
-    super.setText(";");
-  }
+    public TSemicolon()
+    {
+        super.setText(";");
+    }
 
-  public TSemicolon(int line, int pos)
-  {
-    super.setText(";");
-    setLine(line);
-    setPos(pos);
-  }
+    public TSemicolon(int line, int pos)
+    {
+        super.setText(";");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TSemicolon(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TSemicolon(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTSemicolon(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTSemicolon(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TSemicolon text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TSemicolon text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TSlash.java b/src/org/sablecc/sablecc/node/TSlash.java
index c371062..de9d1d7 100644
--- a/src/org/sablecc/sablecc/node/TSlash.java
+++ b/src/org/sablecc/sablecc/node/TSlash.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TSlash extends Token
 {
-  public TSlash()
-  {
-    super.setText("/");
-  }
+    public TSlash()
+    {
+        super.setText("/");
+    }
 
-  public TSlash(int line, int pos)
-  {
-    super.setText("/");
-    setLine(line);
-    setPos(pos);
-  }
+    public TSlash(int line, int pos)
+    {
+        super.setText("/");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TSlash(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TSlash(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTSlash(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTSlash(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TSlash text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TSlash text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TStar.java b/src/org/sablecc/sablecc/node/TStar.java
index e962327..5e9e080 100644
--- a/src/org/sablecc/sablecc/node/TStar.java
+++ b/src/org/sablecc/sablecc/node/TStar.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TStar extends Token
 {
-  public TStar()
-  {
-    super.setText("*");
-  }
+    public TStar()
+    {
+        super.setText("*");
+    }
 
-  public TStar(int line, int pos)
-  {
-    super.setText("*");
-    setLine(line);
-    setPos(pos);
-  }
+    public TStar(int line, int pos)
+    {
+        super.setText("*");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TStar(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TStar(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTStar(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTStar(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TStar text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TStar text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TStates.java b/src/org/sablecc/sablecc/node/TStates.java
index 6933885..b72e023 100644
--- a/src/org/sablecc/sablecc/node/TStates.java
+++ b/src/org/sablecc/sablecc/node/TStates.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TStates extends Token
 {
-  public TStates()
-  {
-    super.setText("States");
-  }
+    public TStates()
+    {
+        super.setText("States");
+    }
 
-  public TStates(int line, int pos)
-  {
-    super.setText("States");
-    setLine(line);
-    setPos(pos);
-  }
+    public TStates(int line, int pos)
+    {
+        super.setText("States");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TStates(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TStates(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTStates(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTStates(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TStates text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TStates text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TString.java b/src/org/sablecc/sablecc/node/TString.java
index daf4908..22ec08b 100644
--- a/src/org/sablecc/sablecc/node/TString.java
+++ b/src/org/sablecc/sablecc/node/TString.java
@@ -4,27 +4,30 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TString extends Token
 {
-  public TString(String text)
-  {
-    setText(text);
-  }
+    public TString(String text)
+    {
+        setText(text);
+    }
 
-  public TString(String text, int line, int pos)
-  {
-    setText(text);
-    setLine(line);
-    setPos(pos);
-  }
+    public TString(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TString(getText(), getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TString(getText(), getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTString(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTString(this);
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TSyntax.java b/src/org/sablecc/sablecc/node/TSyntax.java
index 3b24e0e..4348fb1 100644
--- a/src/org/sablecc/sablecc/node/TSyntax.java
+++ b/src/org/sablecc/sablecc/node/TSyntax.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TSyntax extends Token
 {
-  public TSyntax()
-  {
-    super.setText("Syntax");
-  }
+    public TSyntax()
+    {
+        super.setText("Syntax");
+    }
 
-  public TSyntax(int line, int pos)
-  {
-    super.setText("Syntax");
-    setLine(line);
-    setPos(pos);
-  }
+    public TSyntax(int line, int pos)
+    {
+        super.setText("Syntax");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TSyntax(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TSyntax(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTSyntax(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTSyntax(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TSyntax text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TSyntax text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TTokenSpecifier.java b/src/org/sablecc/sablecc/node/TTokenSpecifier.java
index ec0360f..8bf98eb 100644
--- a/src/org/sablecc/sablecc/node/TTokenSpecifier.java
+++ b/src/org/sablecc/sablecc/node/TTokenSpecifier.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TTokenSpecifier extends Token
 {
-  public TTokenSpecifier()
-  {
-    super.setText("T");
-  }
+    public TTokenSpecifier()
+    {
+        super.setText("T");
+    }
 
-  public TTokenSpecifier(int line, int pos)
-  {
-    super.setText("T");
-    setLine(line);
-    setPos(pos);
-  }
+    public TTokenSpecifier(int line, int pos)
+    {
+        super.setText("T");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TTokenSpecifier(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TTokenSpecifier(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTTokenSpecifier(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTTokenSpecifier(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TTokenSpecifier text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TTokenSpecifier text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TTokens.java b/src/org/sablecc/sablecc/node/TTokens.java
index f815231..9cc25b8 100644
--- a/src/org/sablecc/sablecc/node/TTokens.java
+++ b/src/org/sablecc/sablecc/node/TTokens.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TTokens extends Token
 {
-  public TTokens()
-  {
-    super.setText("Tokens");
-  }
+    public TTokens()
+    {
+        super.setText("Tokens");
+    }
 
-  public TTokens(int line, int pos)
-  {
-    super.setText("Tokens");
-    setLine(line);
-    setPos(pos);
-  }
+    public TTokens(int line, int pos)
+    {
+        super.setText("Tokens");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TTokens(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TTokens(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTTokens(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTTokens(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TTokens text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TTokens text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TTree.java b/src/org/sablecc/sablecc/node/TTree.java
index 46ae387..120a5dd 100644
--- a/src/org/sablecc/sablecc/node/TTree.java
+++ b/src/org/sablecc/sablecc/node/TTree.java
@@ -4,32 +4,36 @@ package org.sablecc.sablecc.node;
 
 import org.sablecc.sablecc.analysis.*;
 
+ at SuppressWarnings("nls")
 public final class TTree extends Token
 {
-  public TTree()
-  {
-    super.setText("Tree");
-  }
+    public TTree()
+    {
+        super.setText("Tree");
+    }
 
-  public TTree(int line, int pos)
-  {
-    super.setText("Tree");
-    setLine(line);
-    setPos(pos);
-  }
+    public TTree(int line, int pos)
+    {
+        super.setText("Tree");
+        setLine(line);
+        setPos(pos);
+    }
 
-  public Object clone()
-  {
-    return new TTree(getLine(), getPos());
-  }
+    @Override
+    public Object clone()
+    {
+      return new TTree(getLine(), getPos());
+    }
 
-  public void apply(Switch sw)
-  {
-    ((Analysis) sw).caseTTree(this);
-  }
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseTTree(this);
+    }
 
-  public void setText(String text)
-  {
-    throw new RuntimeException("Cannot change TTree text.");
-  }
+    @Override
+    public void setText(@SuppressWarnings("unused") String text)
+    {
+        throw new RuntimeException("Cannot change TTree text.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/Token.java b/src/org/sablecc/sablecc/node/Token.java
index ec21ec9..6de5b56 100644
--- a/src/org/sablecc/sablecc/node/Token.java
+++ b/src/org/sablecc/sablecc/node/Token.java
@@ -2,50 +2,58 @@
 
 package org.sablecc.sablecc.node;
 
+ at SuppressWarnings("nls")
 public abstract class Token extends Node
 {
-  private String text;
-  private int line;
-  private int pos;
-
-  public String getText()
-  {
-    return text;
-  }
-
-  public void setText(String text)
-  {
-    this.text = text;
-  }
-
-  public int getLine()
-  {
-    return line;
-  }
-
-  public void setLine(int line)
-  {
-    this.line = line;
-  }
-
-  public int getPos()
-  {
-    return pos;
-  }
-
-  public void setPos(int pos)
-  {
-    this.pos = pos;
-  }
-
-  public String toString()
-  {
-    return text + " ";
-  }
-
-  void removeChild(Node child)
-  {}
-
-  void replaceChild(Node oldChild, Node newChild)
-  {}
+    private String text;
+    private int line;
+    private int pos;
+
+    public String getText()
+    {
+        return this.text;
+    }
+
+    public void setText(@SuppressWarnings("hiding") String text)
+    {
+        this.text = text;
+    }
+
+    public int getLine()
+    {
+        return this.line;
+    }
+
+    public void setLine(@SuppressWarnings("hiding") int line)
+    {
+        this.line = line;
+    }
+
+    public int getPos()
+    {
+        return this.pos;
+    }
+
+    public void setPos(@SuppressWarnings("hiding") int pos)
+    {
+        this.pos = pos;
+    }
+
+    @Override
+    public String toString()
+    {
+        return this.text + " ";
+    }
+
+    @Override
+    void removeChild(@SuppressWarnings("unused") Node child)
+    {
+        throw new RuntimeException("Not a child.");
+    }
+
+    @Override
+    void replaceChild(@SuppressWarnings("unused") Node oldChild, @SuppressWarnings("unused") Node newChild)
+    {
+        throw new RuntimeException("Not a child.");
+    }
 }
diff --git a/src/org/sablecc/sablecc/node/TypedLinkedList.java b/src/org/sablecc/sablecc/node/TypedLinkedList.java
deleted file mode 100644
index 7c9ebd6..0000000
--- a/src/org/sablecc/sablecc/node/TypedLinkedList.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/* This file was generated by SableCC (http://www.sablecc.org/). */
-
-package org.sablecc.sablecc.node;
-
-import java.util.*;
-
-public class TypedLinkedList extends LinkedList
-{
-  Cast cast;
-
-  public TypedLinkedList()
-  {
-    super();
-
-    cast = NoCast.instance;
-  }
-
-  public TypedLinkedList(Collection c)
-  {
-    super(c);
-
-    cast = NoCast.instance;
-  }
-
-  public TypedLinkedList(Cast cast)
-  {
-    super();
-
-    this.cast = cast;
-  }
-
-  public TypedLinkedList(Collection c, Cast cast)
-  {
-    super(c);
-
-    this.cast = cast;
-  }
-
-  public Cast getCast()
-  {
-    return cast;
-  }
-
-  public void add
-    (int index, Object element)
-  {
-    super.add(index, cast.cast(element));
-  }
-
-  public boolean add
-    (Object o)
-  {
-    return super.add(cast.cast(o));
-  }
-
-  public boolean addAll(Collection c)
-  {
-    Object[] elements = c.toArray();
-    for(int i=0; i<elements.length; i++)
-    {
-      super.add(cast.cast(elements[i]));
-    }
-    return true;
-  }
-
-  public boolean addAll(int index, Collection c)
-  {
-    int pos = index;
-    Object[] elements = c.toArray();
-    for(int i=0; i<elements.length; i++)
-    {
-      super.add(pos++, cast.cast(elements[i]));
-    }
-    return true;
-  }
-
-  public void addFirst(Object o)
-  {
-    super.addFirst(cast.cast(o));
-  }
-
-  public void addLast(Object o)
-  {
-    super.addLast(cast.cast(o));
-  }
-
-  public ListIterator listIterator(int index)
-  {
-    return new TypedLinkedListIterator(super.listIterator(index));
-  }
-
-  private class TypedLinkedListIterator implements ListIterator
-  {
-    ListIterator iterator;
-
-    TypedLinkedListIterator(ListIterator iterator)
-    {
-      this.iterator = iterator;
-    }
-
-    public boolean hasNext()
-    {
-      return iterator.hasNext();
-    }
-
-    public Object next()
-    {
-      return iterator.next();
-    }
-
-    public boolean hasPrevious()
-    {
-      return iterator.hasPrevious();
-    }
-
-    public Object previous()
-    {
-      return iterator.previous();
-    }
-
-    public int nextIndex()
-    {
-      return iterator.nextIndex();
-    }
-
-    public int previousIndex()
-    {
-      return iterator.previousIndex();
-    }
-
-    public void remove
-      ()
-    {
-      iterator.remove();
-    }
-
-    public void set
-      (Object o)
-    {
-      iterator.set(cast.cast(o));
-    }
-
-    public void add
-      (Object o)
-    {
-      iterator.add(cast.cast(o));
-    }
-  }
-}
diff --git a/src/org/sablecc/sablecc/parser.txt b/src/org/sablecc/sablecc/parser.txt
index 27ec7e5..0cb5597 100644
--- a/src/org/sablecc/sablecc/parser.txt
+++ b/src/org/sablecc/sablecc/parser.txt
@@ -24,10 +24,10 @@ public class Parser
 {
     public final Analysis ignoredTokens = new AnalysisAdapter();
 
-    protected ArrayList nodeList;
+    protected ArrayList<Object> nodeList;
 
     private final Lexer lexer;
-    private final ListIterator stack = new LinkedList().listIterator();
+    private final ListIterator<Object> stack = new LinkedList<Object>().listIterator();
     private int last_pos;
     private int last_line;
     private Token last_token;
@@ -49,7 +49,7 @@ $
 
 Macro:ParserInliningPushHeader
     @SuppressWarnings({"unchecked","unused"})
-    private void push(int numstate, ArrayList listNode) throws ParserException, LexerException, IOException
+    private void push(int numstate, ArrayList<Object> listNode) throws ParserException, LexerException, IOException
     {
         this.nodeList = listNode;
 
@@ -62,7 +62,7 @@ Macro:ParserNoInliningPushHeader
         // Empty body
     }
 
-    private void push(int numstate, ArrayList listNode, boolean hidden) throws ParserException, LexerException, IOException
+    private void push(int numstate, ArrayList<Object> listNode, boolean hidden) throws ParserException, LexerException, IOException
     {
         this.nodeList = listNode;
 
@@ -95,7 +95,8 @@ Macro:ParserCommon
 
         while(low <= high)
         {
-            int middle = (low + high) / 2;
+            // int middle = (low + high) / 2;
+            int middle = (low + high) >>> 1;
 
             if(state < gotoTable[index][middle][0])
             {
@@ -122,7 +123,7 @@ Macro:ParserCommon
         return s.state;
     }
 
-    private ArrayList pop()
+    private ArrayList<Object> pop()
     {
         return ((State) this.stack.previous()).nodes;
     }
@@ -192,34 +193,20 @@ Macro:ParserCommon
             {
                 case SHIFT:
 		    {
-		        ArrayList list = new ArrayList();
+		        ArrayList<Object> list = new ArrayList<Object>();
 		        list.add(this.lexer.next());
                         push(this.action[1], list$1$);
                     }
 		    break;
                 case REDUCE:
-                    switch(this.action[1])
                     {
+                        int reduction = this.action[1];
+                        if(reduction < 500) reduce_0(reduction);
 
 $
 
-Macro:ParserInliningReduce
-                    case $0$: /* reduce $2$ */
-		    {
-			ArrayList list = new$0$();
-			push(goTo($1$), list);
-		    }
-		    break;
-
-$
-
-Macro:ParserNoInliningReduce
-                    case $0$: /* reduce $3$ */
-		    {
-			ArrayList list = new$0$();
-			push(goTo($1$), list, $2$);
-		    }
-		    break;
+Macro:ParseReduceElseIf
+                        else if(reduction < $0$) reduce_$1$(reduction);
 
 $
 
@@ -244,24 +231,59 @@ Macro:ParserParseTail
 
 $
 
+Macro:ParserReduceHead
+    private void reduce_$0$(int reduction) throws IOException, LexerException, ParserException
+    {
+        switch(reduction)
+        {
+
+$
+
+Macro:ParserInliningReduce
+            case $0$: /* reduce $2$ */
+            {
+                ArrayList<Object> list = new$0$();
+                push(goTo($1$), list);
+            }
+            break;
+
+$
+
+Macro:ParserNoInliningReduce
+            case $0$: /* reduce $3$ */
+            {
+                ArrayList<Object> list = new$0$();
+                push(goTo($1$), list, $2$);
+            }
+            break;
+
+$
+
+Macro:ParserReduceTail
+        }
+    }
+
+
+$
+
 Macro:ParserNewHeader
 
 
-    @SuppressWarnings("unchecked")
-    ArrayList new$0$() /* reduce $1$ */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new$0$() /* reduce $1$ */
     {
-        @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
 
 $
 
 Macro:ParserNewBodyDecl
-        @SuppressWarnings("unused") ArrayList nodeArrayList$0$ = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList$0$ = pop();
 
 $
 
 Macro:ParserNewBodyDeclNull
-        ArrayList nodeArrayList$0$ = null;
+        ArrayList<Object> nodeArrayList$0$ = null;
 
 $
 
@@ -282,7 +304,7 @@ Macro:ParserSimpleVariableDeclaration
 $
 
 Macro:ParserListVariableDeclaration
-        LinkedList listNode$0$ = new LinkedList();
+        LinkedList<Object> listNode$0$ = new LinkedList<Object>();
 
 $
 
@@ -518,7 +540,7 @@ import $1$.*;
 @SuppressWarnings("serial")
 public class ParserException extends Exception
 {
-    Token token;
+    private Token token;
 
     public ParserException(@SuppressWarnings("hiding") Token token, String  message)
     {
@@ -544,9 +566,9 @@ import java.util.ArrayList;
 final class State
 {
     int state;
-    ArrayList nodes;
+    ArrayList<Object> nodes;
 
-    State(@SuppressWarnings("hiding") int state, @SuppressWarnings("hiding") ArrayList nodes)
+    State(@SuppressWarnings("hiding") int state, @SuppressWarnings("hiding") ArrayList<Object> nodes)
     {
         this.state = state;
         this.nodes = nodes;
diff --git a/src/org/sablecc/sablecc/parser/Parser.java b/src/org/sablecc/sablecc/parser/Parser.java
index 69bc5db..a2bd1ee 100644
--- a/src/org/sablecc/sablecc/parser/Parser.java
+++ b/src/org/sablecc/sablecc/parser/Parser.java
@@ -11,9267 +11,10590 @@ import java.io.DataInputStream;
 import java.io.BufferedInputStream;
 import java.io.IOException;
 
+ at SuppressWarnings("nls")
 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;
+    public final Analysis ignoredTokens = new AnalysisAdapter();
 
-    if(!stack.hasNext())
+    protected ArrayList<Object> nodeList;
+
+    private final Lexer lexer;
+    private final ListIterator<Object> stack = new LinkedList<Object>().listIterator();
+    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(@SuppressWarnings("hiding") Lexer lexer)
+    {
+        this.lexer = lexer;
+    }
+
+    @SuppressWarnings({"unchecked","unused"})
+    private void push(int numstate, ArrayList<Object> listNode) throws ParserException, LexerException, IOException
+    {
+        this.nodeList = listNode;
+
+        if(!this.stack.hasNext())
+        {
+            this.stack.add(new State(numstate, this.nodeList));
+            return;
+        }
+
+        State s = (State) this.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;
+            int middle = (low + high) >>> 1;
+
+            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) this.stack.previous();
+        this.stack.next();
+        return s.state;
+    }
+
+    private ArrayList<Object> pop()
+    {
+        return ((State) this.stack.previous()).nodes;
+    }
+
+    private int index(Switchable token)
+    {
+        this.converter.index = -1;
+        token.apply(this.converter);
+        return this.converter.index;
+    }
+
+    @SuppressWarnings("unchecked")
+    public Start parse() throws ParserException, LexerException, IOException
+    {
+        push(0, null);
+        List<Node> ign = null;
+        while(true)
+        {
+            while(index(this.lexer.peek()) == -1)
+            {
+                if(ign == null)
+                {
+                    ign = new LinkedList<Node>();
+                }
+
+                ign.add(this.lexer.next());
+            }
+
+            if(ign != null)
+            {
+                this.ignoredTokens.setIn(this.lexer.peek(), ign);
+                ign = null;
+            }
+
+            this.last_pos = this.lexer.peek().getPos();
+            this.last_line = this.lexer.peek().getLine();
+            this.last_token = this.lexer.peek();
+
+            int index = index(this.lexer.peek());
+            this.action[0] = Parser.actionTable[state()][0][1];
+            this.action[1] = Parser.actionTable[state()][0][2];
+
+            int low = 1;
+            int high = Parser.actionTable[state()].length - 1;
+
+            while(low <= high)
+            {
+                int middle = (low + high) / 2;
+
+                if(index < Parser.actionTable[state()][middle][0])
+                {
+                    high = middle - 1;
+                }
+                else if(index > Parser.actionTable[state()][middle][0])
+                {
+                    low = middle + 1;
+                }
+                else
+                {
+                    this.action[0] = Parser.actionTable[state()][middle][1];
+                    this.action[1] = Parser.actionTable[state()][middle][2];
+                    break;
+                }
+            }
+
+            switch(this.action[0])
+            {
+                case SHIFT:
+		    {
+		        ArrayList<Object> list = new ArrayList<Object>();
+		        list.add(this.lexer.next());
+                        push(this.action[1], list);
+                    }
+		    break;
+                case REDUCE:
+                    {
+                        int reduction = this.action[1];
+                        if(reduction < 500) reduce_0(reduction);
+                    }
+                    break;
+                case ACCEPT:
+                    {
+                        EOF node2 = (EOF) this.lexer.next();
+                        PGrammar node1 = (PGrammar) pop().get(0);
+                        Start node = new Start(node1, node2);
+                        return node;
+                    }
+                case ERROR:
+                    throw new ParserException(this.last_token,
+                        "[" + this.last_line + "," + this.last_pos + "] " +
+                        Parser.errorMessages[Parser.errors[this.action[1]]]);
+            }
+        }
+    }
+
+    private void reduce_0(int reduction) throws IOException, LexerException, ParserException
+    {
+        switch(reduction)
+        {
+            case 0: /* reduce AAgrammar1Grammar */
+            {
+                ArrayList<Object> list = new0();
+                push(goTo(0), list);
+            }
+            break;
+            case 1: /* reduce AAgrammar2Grammar */
+            {
+                ArrayList<Object> list = new1();
+                push(goTo(0), list);
+            }
+            break;
+            case 2: /* reduce AAgrammar3Grammar */
+            {
+                ArrayList<Object> list = new2();
+                push(goTo(0), list);
+            }
+            break;
+            case 3: /* reduce AAgrammar4Grammar */
+            {
+                ArrayList<Object> list = new3();
+                push(goTo(0), list);
+            }
+            break;
+            case 4: /* reduce AAgrammar5Grammar */
+            {
+                ArrayList<Object> list = new4();
+                push(goTo(0), list);
+            }
+            break;
+            case 5: /* reduce AAgrammar6Grammar */
+            {
+                ArrayList<Object> list = new5();
+                push(goTo(0), list);
+            }
+            break;
+            case 6: /* reduce AAgrammar7Grammar */
+            {
+                ArrayList<Object> list = new6();
+                push(goTo(0), list);
+            }
+            break;
+            case 7: /* reduce AAgrammar8Grammar */
+            {
+                ArrayList<Object> list = new7();
+                push(goTo(0), list);
+            }
+            break;
+            case 8: /* reduce AAgrammar9Grammar */
+            {
+                ArrayList<Object> list = new8();
+                push(goTo(0), list);
+            }
+            break;
+            case 9: /* reduce AAgrammar10Grammar */
+            {
+                ArrayList<Object> list = new9();
+                push(goTo(0), list);
+            }
+            break;
+            case 10: /* reduce AAgrammar11Grammar */
+            {
+                ArrayList<Object> list = new10();
+                push(goTo(0), list);
+            }
+            break;
+            case 11: /* reduce AAgrammar12Grammar */
+            {
+                ArrayList<Object> list = new11();
+                push(goTo(0), list);
+            }
+            break;
+            case 12: /* reduce AAgrammar13Grammar */
+            {
+                ArrayList<Object> list = new12();
+                push(goTo(0), list);
+            }
+            break;
+            case 13: /* reduce AAgrammar14Grammar */
+            {
+                ArrayList<Object> list = new13();
+                push(goTo(0), list);
+            }
+            break;
+            case 14: /* reduce AAgrammar15Grammar */
+            {
+                ArrayList<Object> list = new14();
+                push(goTo(0), list);
+            }
+            break;
+            case 15: /* reduce AAgrammar16Grammar */
+            {
+                ArrayList<Object> list = new15();
+                push(goTo(0), list);
+            }
+            break;
+            case 16: /* reduce AAgrammar17Grammar */
+            {
+                ArrayList<Object> list = new16();
+                push(goTo(0), list);
+            }
+            break;
+            case 17: /* reduce AAgrammar18Grammar */
+            {
+                ArrayList<Object> list = new17();
+                push(goTo(0), list);
+            }
+            break;
+            case 18: /* reduce AAgrammar19Grammar */
+            {
+                ArrayList<Object> list = new18();
+                push(goTo(0), list);
+            }
+            break;
+            case 19: /* reduce AAgrammar20Grammar */
+            {
+                ArrayList<Object> list = new19();
+                push(goTo(0), list);
+            }
+            break;
+            case 20: /* reduce AAgrammar21Grammar */
+            {
+                ArrayList<Object> list = new20();
+                push(goTo(0), list);
+            }
+            break;
+            case 21: /* reduce AAgrammar22Grammar */
+            {
+                ArrayList<Object> list = new21();
+                push(goTo(0), list);
+            }
+            break;
+            case 22: /* reduce AAgrammar23Grammar */
+            {
+                ArrayList<Object> list = new22();
+                push(goTo(0), list);
+            }
+            break;
+            case 23: /* reduce AAgrammar24Grammar */
+            {
+                ArrayList<Object> list = new23();
+                push(goTo(0), list);
+            }
+            break;
+            case 24: /* reduce AAgrammar25Grammar */
+            {
+                ArrayList<Object> list = new24();
+                push(goTo(0), list);
+            }
+            break;
+            case 25: /* reduce AAgrammar26Grammar */
+            {
+                ArrayList<Object> list = new25();
+                push(goTo(0), list);
+            }
+            break;
+            case 26: /* reduce AAgrammar27Grammar */
+            {
+                ArrayList<Object> list = new26();
+                push(goTo(0), list);
+            }
+            break;
+            case 27: /* reduce AAgrammar28Grammar */
+            {
+                ArrayList<Object> list = new27();
+                push(goTo(0), list);
+            }
+            break;
+            case 28: /* reduce AAgrammar29Grammar */
+            {
+                ArrayList<Object> list = new28();
+                push(goTo(0), list);
+            }
+            break;
+            case 29: /* reduce AAgrammar30Grammar */
+            {
+                ArrayList<Object> list = new29();
+                push(goTo(0), list);
+            }
+            break;
+            case 30: /* reduce AAgrammar31Grammar */
+            {
+                ArrayList<Object> list = new30();
+                push(goTo(0), list);
+            }
+            break;
+            case 31: /* reduce AAgrammar32Grammar */
+            {
+                ArrayList<Object> list = new31();
+                push(goTo(0), list);
+            }
+            break;
+            case 32: /* reduce AAgrammar33Grammar */
+            {
+                ArrayList<Object> list = new32();
+                push(goTo(0), list);
+            }
+            break;
+            case 33: /* reduce AAgrammar34Grammar */
+            {
+                ArrayList<Object> list = new33();
+                push(goTo(0), list);
+            }
+            break;
+            case 34: /* reduce AAgrammar35Grammar */
+            {
+                ArrayList<Object> list = new34();
+                push(goTo(0), list);
+            }
+            break;
+            case 35: /* reduce AAgrammar36Grammar */
+            {
+                ArrayList<Object> list = new35();
+                push(goTo(0), list);
+            }
+            break;
+            case 36: /* reduce AAgrammar37Grammar */
+            {
+                ArrayList<Object> list = new36();
+                push(goTo(0), list);
+            }
+            break;
+            case 37: /* reduce AAgrammar38Grammar */
+            {
+                ArrayList<Object> list = new37();
+                push(goTo(0), list);
+            }
+            break;
+            case 38: /* reduce AAgrammar39Grammar */
+            {
+                ArrayList<Object> list = new38();
+                push(goTo(0), list);
+            }
+            break;
+            case 39: /* reduce AAgrammar40Grammar */
+            {
+                ArrayList<Object> list = new39();
+                push(goTo(0), list);
+            }
+            break;
+            case 40: /* reduce AAgrammar41Grammar */
+            {
+                ArrayList<Object> list = new40();
+                push(goTo(0), list);
+            }
+            break;
+            case 41: /* reduce AAgrammar42Grammar */
+            {
+                ArrayList<Object> list = new41();
+                push(goTo(0), list);
+            }
+            break;
+            case 42: /* reduce AAgrammar43Grammar */
+            {
+                ArrayList<Object> list = new42();
+                push(goTo(0), list);
+            }
+            break;
+            case 43: /* reduce AAgrammar44Grammar */
+            {
+                ArrayList<Object> list = new43();
+                push(goTo(0), list);
+            }
+            break;
+            case 44: /* reduce AAgrammar45Grammar */
+            {
+                ArrayList<Object> list = new44();
+                push(goTo(0), list);
+            }
+            break;
+            case 45: /* reduce AAgrammar46Grammar */
+            {
+                ArrayList<Object> list = new45();
+                push(goTo(0), list);
+            }
+            break;
+            case 46: /* reduce AAgrammar47Grammar */
+            {
+                ArrayList<Object> list = new46();
+                push(goTo(0), list);
+            }
+            break;
+            case 47: /* reduce AAgrammar48Grammar */
+            {
+                ArrayList<Object> list = new47();
+                push(goTo(0), list);
+            }
+            break;
+            case 48: /* reduce AAgrammar49Grammar */
+            {
+                ArrayList<Object> list = new48();
+                push(goTo(0), list);
+            }
+            break;
+            case 49: /* reduce AAgrammar50Grammar */
+            {
+                ArrayList<Object> list = new49();
+                push(goTo(0), list);
+            }
+            break;
+            case 50: /* reduce AAgrammar51Grammar */
+            {
+                ArrayList<Object> list = new50();
+                push(goTo(0), list);
+            }
+            break;
+            case 51: /* reduce AAgrammar52Grammar */
+            {
+                ArrayList<Object> list = new51();
+                push(goTo(0), list);
+            }
+            break;
+            case 52: /* reduce AAgrammar53Grammar */
+            {
+                ArrayList<Object> list = new52();
+                push(goTo(0), list);
+            }
+            break;
+            case 53: /* reduce AAgrammar54Grammar */
+            {
+                ArrayList<Object> list = new53();
+                push(goTo(0), list);
+            }
+            break;
+            case 54: /* reduce AAgrammar55Grammar */
+            {
+                ArrayList<Object> list = new54();
+                push(goTo(0), list);
+            }
+            break;
+            case 55: /* reduce AAgrammar56Grammar */
+            {
+                ArrayList<Object> list = new55();
+                push(goTo(0), list);
+            }
+            break;
+            case 56: /* reduce AAgrammar57Grammar */
+            {
+                ArrayList<Object> list = new56();
+                push(goTo(0), list);
+            }
+            break;
+            case 57: /* reduce AAgrammar58Grammar */
+            {
+                ArrayList<Object> list = new57();
+                push(goTo(0), list);
+            }
+            break;
+            case 58: /* reduce AAgrammar59Grammar */
+            {
+                ArrayList<Object> list = new58();
+                push(goTo(0), list);
+            }
+            break;
+            case 59: /* reduce AAgrammar60Grammar */
+            {
+                ArrayList<Object> list = new59();
+                push(goTo(0), list);
+            }
+            break;
+            case 60: /* reduce AAgrammar61Grammar */
+            {
+                ArrayList<Object> list = new60();
+                push(goTo(0), list);
+            }
+            break;
+            case 61: /* reduce AAgrammar62Grammar */
+            {
+                ArrayList<Object> list = new61();
+                push(goTo(0), list);
+            }
+            break;
+            case 62: /* reduce AAgrammar63Grammar */
+            {
+                ArrayList<Object> list = new62();
+                push(goTo(0), list);
+            }
+            break;
+            case 63: /* reduce AAgrammar64Grammar */
+            {
+                ArrayList<Object> list = new63();
+                push(goTo(0), list);
+            }
+            break;
+            case 64: /* reduce AAgrammar65Grammar */
+            {
+                ArrayList<Object> list = new64();
+                push(goTo(0), list);
+            }
+            break;
+            case 65: /* reduce AAgrammar66Grammar */
+            {
+                ArrayList<Object> list = new65();
+                push(goTo(0), list);
+            }
+            break;
+            case 66: /* reduce AAgrammar67Grammar */
+            {
+                ArrayList<Object> list = new66();
+                push(goTo(0), list);
+            }
+            break;
+            case 67: /* reduce AAgrammar68Grammar */
+            {
+                ArrayList<Object> list = new67();
+                push(goTo(0), list);
+            }
+            break;
+            case 68: /* reduce AAgrammar69Grammar */
+            {
+                ArrayList<Object> list = new68();
+                push(goTo(0), list);
+            }
+            break;
+            case 69: /* reduce AAgrammar70Grammar */
+            {
+                ArrayList<Object> list = new69();
+                push(goTo(0), list);
+            }
+            break;
+            case 70: /* reduce AAgrammar71Grammar */
+            {
+                ArrayList<Object> list = new70();
+                push(goTo(0), list);
+            }
+            break;
+            case 71: /* reduce AAgrammar72Grammar */
+            {
+                ArrayList<Object> list = new71();
+                push(goTo(0), list);
+            }
+            break;
+            case 72: /* reduce AAgrammar73Grammar */
+            {
+                ArrayList<Object> list = new72();
+                push(goTo(0), list);
+            }
+            break;
+            case 73: /* reduce AAgrammar74Grammar */
+            {
+                ArrayList<Object> list = new73();
+                push(goTo(0), list);
+            }
+            break;
+            case 74: /* reduce AAgrammar75Grammar */
+            {
+                ArrayList<Object> list = new74();
+                push(goTo(0), list);
+            }
+            break;
+            case 75: /* reduce AAgrammar76Grammar */
+            {
+                ArrayList<Object> list = new75();
+                push(goTo(0), list);
+            }
+            break;
+            case 76: /* reduce AAgrammar77Grammar */
+            {
+                ArrayList<Object> list = new76();
+                push(goTo(0), list);
+            }
+            break;
+            case 77: /* reduce AAgrammar78Grammar */
+            {
+                ArrayList<Object> list = new77();
+                push(goTo(0), list);
+            }
+            break;
+            case 78: /* reduce AAgrammar79Grammar */
+            {
+                ArrayList<Object> list = new78();
+                push(goTo(0), list);
+            }
+            break;
+            case 79: /* reduce AAgrammar80Grammar */
+            {
+                ArrayList<Object> list = new79();
+                push(goTo(0), list);
+            }
+            break;
+            case 80: /* reduce AAgrammar81Grammar */
+            {
+                ArrayList<Object> list = new80();
+                push(goTo(0), list);
+            }
+            break;
+            case 81: /* reduce AAgrammar82Grammar */
+            {
+                ArrayList<Object> list = new81();
+                push(goTo(0), list);
+            }
+            break;
+            case 82: /* reduce AAgrammar83Grammar */
+            {
+                ArrayList<Object> list = new82();
+                push(goTo(0), list);
+            }
+            break;
+            case 83: /* reduce AAgrammar84Grammar */
+            {
+                ArrayList<Object> list = new83();
+                push(goTo(0), list);
+            }
+            break;
+            case 84: /* reduce AAgrammar85Grammar */
+            {
+                ArrayList<Object> list = new84();
+                push(goTo(0), list);
+            }
+            break;
+            case 85: /* reduce AAgrammar86Grammar */
+            {
+                ArrayList<Object> list = new85();
+                push(goTo(0), list);
+            }
+            break;
+            case 86: /* reduce AAgrammar87Grammar */
+            {
+                ArrayList<Object> list = new86();
+                push(goTo(0), list);
+            }
+            break;
+            case 87: /* reduce AAgrammar88Grammar */
+            {
+                ArrayList<Object> list = new87();
+                push(goTo(0), list);
+            }
+            break;
+            case 88: /* reduce AAgrammar89Grammar */
+            {
+                ArrayList<Object> list = new88();
+                push(goTo(0), list);
+            }
+            break;
+            case 89: /* reduce AAgrammar90Grammar */
+            {
+                ArrayList<Object> list = new89();
+                push(goTo(0), list);
+            }
+            break;
+            case 90: /* reduce AAgrammar91Grammar */
+            {
+                ArrayList<Object> list = new90();
+                push(goTo(0), list);
+            }
+            break;
+            case 91: /* reduce AAgrammar92Grammar */
+            {
+                ArrayList<Object> list = new91();
+                push(goTo(0), list);
+            }
+            break;
+            case 92: /* reduce AAgrammar93Grammar */
+            {
+                ArrayList<Object> list = new92();
+                push(goTo(0), list);
+            }
+            break;
+            case 93: /* reduce AAgrammar94Grammar */
+            {
+                ArrayList<Object> list = new93();
+                push(goTo(0), list);
+            }
+            break;
+            case 94: /* reduce AAgrammar95Grammar */
+            {
+                ArrayList<Object> list = new94();
+                push(goTo(0), list);
+            }
+            break;
+            case 95: /* reduce AAgrammar96Grammar */
+            {
+                ArrayList<Object> list = new95();
+                push(goTo(0), list);
+            }
+            break;
+            case 96: /* reduce AAgrammar97Grammar */
+            {
+                ArrayList<Object> list = new96();
+                push(goTo(0), list);
+            }
+            break;
+            case 97: /* reduce AAgrammar98Grammar */
+            {
+                ArrayList<Object> list = new97();
+                push(goTo(0), list);
+            }
+            break;
+            case 98: /* reduce AAgrammar99Grammar */
+            {
+                ArrayList<Object> list = new98();
+                push(goTo(0), list);
+            }
+            break;
+            case 99: /* reduce AAgrammar100Grammar */
+            {
+                ArrayList<Object> list = new99();
+                push(goTo(0), list);
+            }
+            break;
+            case 100: /* reduce AAgrammar101Grammar */
+            {
+                ArrayList<Object> list = new100();
+                push(goTo(0), list);
+            }
+            break;
+            case 101: /* reduce AAgrammar102Grammar */
+            {
+                ArrayList<Object> list = new101();
+                push(goTo(0), list);
+            }
+            break;
+            case 102: /* reduce AAgrammar103Grammar */
+            {
+                ArrayList<Object> list = new102();
+                push(goTo(0), list);
+            }
+            break;
+            case 103: /* reduce AAgrammar104Grammar */
+            {
+                ArrayList<Object> list = new103();
+                push(goTo(0), list);
+            }
+            break;
+            case 104: /* reduce AAgrammar105Grammar */
+            {
+                ArrayList<Object> list = new104();
+                push(goTo(0), list);
+            }
+            break;
+            case 105: /* reduce AAgrammar106Grammar */
+            {
+                ArrayList<Object> list = new105();
+                push(goTo(0), list);
+            }
+            break;
+            case 106: /* reduce AAgrammar107Grammar */
+            {
+                ArrayList<Object> list = new106();
+                push(goTo(0), list);
+            }
+            break;
+            case 107: /* reduce AAgrammar108Grammar */
+            {
+                ArrayList<Object> list = new107();
+                push(goTo(0), list);
+            }
+            break;
+            case 108: /* reduce AAgrammar109Grammar */
+            {
+                ArrayList<Object> list = new108();
+                push(goTo(0), list);
+            }
+            break;
+            case 109: /* reduce AAgrammar110Grammar */
+            {
+                ArrayList<Object> list = new109();
+                push(goTo(0), list);
+            }
+            break;
+            case 110: /* reduce AAgrammar111Grammar */
+            {
+                ArrayList<Object> list = new110();
+                push(goTo(0), list);
+            }
+            break;
+            case 111: /* reduce AAgrammar112Grammar */
+            {
+                ArrayList<Object> list = new111();
+                push(goTo(0), list);
+            }
+            break;
+            case 112: /* reduce AAgrammar113Grammar */
+            {
+                ArrayList<Object> list = new112();
+                push(goTo(0), list);
+            }
+            break;
+            case 113: /* reduce AAgrammar114Grammar */
+            {
+                ArrayList<Object> list = new113();
+                push(goTo(0), list);
+            }
+            break;
+            case 114: /* reduce AAgrammar115Grammar */
+            {
+                ArrayList<Object> list = new114();
+                push(goTo(0), list);
+            }
+            break;
+            case 115: /* reduce AAgrammar116Grammar */
+            {
+                ArrayList<Object> list = new115();
+                push(goTo(0), list);
+            }
+            break;
+            case 116: /* reduce AAgrammar117Grammar */
+            {
+                ArrayList<Object> list = new116();
+                push(goTo(0), list);
+            }
+            break;
+            case 117: /* reduce AAgrammar118Grammar */
+            {
+                ArrayList<Object> list = new117();
+                push(goTo(0), list);
+            }
+            break;
+            case 118: /* reduce AAgrammar119Grammar */
+            {
+                ArrayList<Object> list = new118();
+                push(goTo(0), list);
+            }
+            break;
+            case 119: /* reduce AAgrammar120Grammar */
+            {
+                ArrayList<Object> list = new119();
+                push(goTo(0), list);
+            }
+            break;
+            case 120: /* reduce AAgrammar121Grammar */
+            {
+                ArrayList<Object> list = new120();
+                push(goTo(0), list);
+            }
+            break;
+            case 121: /* reduce AAgrammar122Grammar */
+            {
+                ArrayList<Object> list = new121();
+                push(goTo(0), list);
+            }
+            break;
+            case 122: /* reduce AAgrammar123Grammar */
+            {
+                ArrayList<Object> list = new122();
+                push(goTo(0), list);
+            }
+            break;
+            case 123: /* reduce AAgrammar124Grammar */
+            {
+                ArrayList<Object> list = new123();
+                push(goTo(0), list);
+            }
+            break;
+            case 124: /* reduce AAgrammar125Grammar */
+            {
+                ArrayList<Object> list = new124();
+                push(goTo(0), list);
+            }
+            break;
+            case 125: /* reduce AAgrammar126Grammar */
+            {
+                ArrayList<Object> list = new125();
+                push(goTo(0), list);
+            }
+            break;
+            case 126: /* reduce AAgrammar127Grammar */
+            {
+                ArrayList<Object> list = new126();
+                push(goTo(0), list);
+            }
+            break;
+            case 127: /* reduce AAgrammar128Grammar */
+            {
+                ArrayList<Object> list = new127();
+                push(goTo(0), list);
+            }
+            break;
+            case 128: /* reduce APackage */
+            {
+                ArrayList<Object> list = new128();
+                push(goTo(1), list);
+            }
+            break;
+            case 129: /* reduce AApkgname1PkgName */
+            {
+                ArrayList<Object> list = new129();
+                push(goTo(2), list);
+            }
+            break;
+            case 130: /* reduce AApkgname2PkgName */
+            {
+                ArrayList<Object> list = new130();
+                push(goTo(2), list);
+            }
+            break;
+            case 131: /* reduce APkgNameTail */
+            {
+                ArrayList<Object> list = new131();
+                push(goTo(3), list);
+            }
+            break;
+            case 132: /* reduce AHelpers */
+            {
+                ArrayList<Object> list = new132();
+                push(goTo(4), list);
+            }
+            break;
+            case 133: /* reduce AHelperDef */
+            {
+                ArrayList<Object> list = new133();
+                push(goTo(5), list);
+            }
+            break;
+            case 134: /* reduce AStates */
+            {
+                ArrayList<Object> list = new134();
+                push(goTo(6), list);
+            }
+            break;
+            case 135: /* reduce AAidlist1IdList */
+            {
+                ArrayList<Object> list = new135();
+                push(goTo(7), list);
+            }
+            break;
+            case 136: /* reduce AAidlist2IdList */
+            {
+                ArrayList<Object> list = new136();
+                push(goTo(7), list);
+            }
+            break;
+            case 137: /* reduce AIdListTail */
+            {
+                ArrayList<Object> list = new137();
+                push(goTo(8), list);
+            }
+            break;
+            case 138: /* reduce ATokens */
+            {
+                ArrayList<Object> list = new138();
+                push(goTo(9), list);
+            }
+            break;
+            case 139: /* reduce AAtokendef1TokenDef */
+            {
+                ArrayList<Object> list = new139();
+                push(goTo(10), list);
+            }
+            break;
+            case 140: /* reduce AAtokendef2TokenDef */
+            {
+                ArrayList<Object> list = new140();
+                push(goTo(10), list);
+            }
+            break;
+            case 141: /* reduce AAtokendef3TokenDef */
+            {
+                ArrayList<Object> list = new141();
+                push(goTo(10), list);
+            }
+            break;
+            case 142: /* reduce AAtokendef4TokenDef */
+            {
+                ArrayList<Object> list = new142();
+                push(goTo(10), list);
+            }
+            break;
+            case 143: /* reduce AAstatelist1StateList */
+            {
+                ArrayList<Object> list = new143();
+                push(goTo(11), list);
+            }
+            break;
+            case 144: /* reduce AAstatelist2StateList */
+            {
+                ArrayList<Object> list = new144();
+                push(goTo(11), list);
+            }
+            break;
+            case 145: /* reduce AAstatelist3StateList */
+            {
+                ArrayList<Object> list = new145();
+                push(goTo(11), list);
+            }
+            break;
+            case 146: /* reduce AAstatelist4StateList */
+            {
+                ArrayList<Object> list = new146();
+                push(goTo(11), list);
+            }
+            break;
+            case 147: /* reduce AAstatelisttail1StateListTail */
+            {
+                ArrayList<Object> list = new147();
+                push(goTo(12), list);
+            }
+            break;
+            case 148: /* reduce AAstatelisttail2StateListTail */
+            {
+                ArrayList<Object> list = new148();
+                push(goTo(12), list);
+            }
+            break;
+            case 149: /* reduce ATransition */
+            {
+                ArrayList<Object> list = new149();
+                push(goTo(13), list);
+            }
+            break;
+            case 150: /* reduce AAigntokens1IgnTokens */
+            {
+                ArrayList<Object> list = new150();
+                push(goTo(14), list);
+            }
+            break;
+            case 151: /* reduce AAigntokens2IgnTokens */
+            {
+                ArrayList<Object> list = new151();
+                push(goTo(14), list);
+            }
+            break;
+            case 152: /* reduce ALookAhead */
+            {
+                ArrayList<Object> list = new152();
+                push(goTo(15), list);
+            }
+            break;
+            case 153: /* reduce AAregexp1RegExp */
+            {
+                ArrayList<Object> list = new153();
+                push(goTo(16), list);
+            }
+            break;
+            case 154: /* reduce AAregexp2RegExp */
+            {
+                ArrayList<Object> list = new154();
+                push(goTo(16), list);
+            }
+            break;
+            case 155: /* reduce ARegExpTail */
+            {
+                ArrayList<Object> list = new155();
+                push(goTo(17), list);
+            }
+            break;
+            case 156: /* reduce AAconcat1Concat */
+            {
+                ArrayList<Object> list = new156();
+                push(goTo(18), list);
+            }
+            break;
+            case 157: /* reduce AAconcat2Concat */
+            {
+                ArrayList<Object> list = new157();
+                push(goTo(18), list);
+            }
+            break;
+            case 158: /* reduce AAunexp1UnExp */
+            {
+                ArrayList<Object> list = new158();
+                push(goTo(19), list);
+            }
+            break;
+            case 159: /* reduce AAunexp2UnExp */
+            {
+                ArrayList<Object> list = new159();
+                push(goTo(19), list);
+            }
+            break;
+            case 160: /* reduce ACharBasic */
+            {
+                ArrayList<Object> list = new160();
+                push(goTo(20), list);
+            }
+            break;
+            case 161: /* reduce ASetBasic */
+            {
+                ArrayList<Object> list = new161();
+                push(goTo(20), list);
+            }
+            break;
+            case 162: /* reduce AStringBasic */
+            {
+                ArrayList<Object> list = new162();
+                push(goTo(20), list);
+            }
+            break;
+            case 163: /* reduce AIdBasic */
+            {
+                ArrayList<Object> list = new163();
+                push(goTo(20), list);
+            }
+            break;
+            case 164: /* reduce ARegExpBasic */
+            {
+                ArrayList<Object> list = new164();
+                push(goTo(20), list);
+            }
+            break;
+            case 165: /* reduce ACharChar */
+            {
+                ArrayList<Object> list = new165();
+                push(goTo(21), list);
+            }
+            break;
+            case 166: /* reduce ADecChar */
+            {
+                ArrayList<Object> list = new166();
+                push(goTo(21), list);
+            }
+            break;
+            case 167: /* reduce AHexChar */
+            {
+                ArrayList<Object> list = new167();
+                push(goTo(21), list);
+            }
+            break;
+            case 168: /* reduce AOperationSet */
+            {
+                ArrayList<Object> list = new168();
+                push(goTo(22), list);
+            }
+            break;
+            case 169: /* reduce AIntervalSet */
+            {
+                ArrayList<Object> list = new169();
+                push(goTo(22), list);
+            }
+            break;
+            case 170: /* reduce AStarUnOp */
+            {
+                ArrayList<Object> list = new170();
+                push(goTo(23), list);
+            }
+            break;
+            case 171: /* reduce AQMarkUnOp */
+            {
+                ArrayList<Object> list = new171();
+                push(goTo(23), list);
+            }
+            break;
+            case 172: /* reduce APlusUnOp */
+            {
+                ArrayList<Object> list = new172();
+                push(goTo(23), list);
+            }
+            break;
+            case 173: /* reduce APlusBinOp */
+            {
+                ArrayList<Object> list = new173();
+                push(goTo(24), list);
+            }
+            break;
+            case 174: /* reduce AMinusBinOp */
+            {
+                ArrayList<Object> list = new174();
+                push(goTo(24), list);
+            }
+            break;
+            case 175: /* reduce AProductions */
+            {
+                ArrayList<Object> list = new175();
+                push(goTo(25), list);
+            }
+            break;
+            case 176: /* reduce AAprod1Prod */
+            {
+                ArrayList<Object> list = new176();
+                push(goTo(26), list);
+            }
+            break;
+            case 177: /* reduce AAprod2Prod */
+            {
+                ArrayList<Object> list = new177();
+                push(goTo(26), list);
+            }
+            break;
+            case 178: /* reduce AAprodtransform1ProdTransform */
+            {
+                ArrayList<Object> list = new178();
+                push(goTo(27), list);
+            }
+            break;
+            case 179: /* reduce AAprodtransform2ProdTransform */
+            {
+                ArrayList<Object> list = new179();
+                push(goTo(27), list);
+            }
+            break;
+            case 180: /* reduce AAalts1Alts */
+            {
+                ArrayList<Object> list = new180();
+                push(goTo(28), list);
+            }
+            break;
+            case 181: /* reduce AAalts2Alts */
+            {
+                ArrayList<Object> list = new181();
+                push(goTo(28), list);
+            }
+            break;
+            case 182: /* reduce AAltsTail */
+            {
+                ArrayList<Object> list = new182();
+                push(goTo(29), list);
+            }
+            break;
+            case 183: /* reduce AAalt1Alt */
+            {
+                ArrayList<Object> list = new183();
+                push(goTo(30), list);
+            }
+            break;
+            case 184: /* reduce AAalt2Alt */
+            {
+                ArrayList<Object> list = new184();
+                push(goTo(30), list);
+            }
+            break;
+            case 185: /* reduce AAalt3Alt */
+            {
+                ArrayList<Object> list = new185();
+                push(goTo(30), list);
+            }
+            break;
+            case 186: /* reduce AAalt4Alt */
+            {
+                ArrayList<Object> list = new186();
+                push(goTo(30), list);
+            }
+            break;
+            case 187: /* reduce AAalt5Alt */
+            {
+                ArrayList<Object> list = new187();
+                push(goTo(30), list);
+            }
+            break;
+            case 188: /* reduce AAalt6Alt */
+            {
+                ArrayList<Object> list = new188();
+                push(goTo(30), list);
+            }
+            break;
+            case 189: /* reduce AAalt7Alt */
+            {
+                ArrayList<Object> list = new189();
+                push(goTo(30), list);
+            }
+            break;
+            case 190: /* reduce AAalt8Alt */
+            {
+                ArrayList<Object> list = new190();
+                push(goTo(30), list);
+            }
+            break;
+            case 191: /* reduce AAalttransform1AltTransform */
+            {
+                ArrayList<Object> list = new191();
+                push(goTo(31), list);
+            }
+            break;
+            case 192: /* reduce AAalttransform2AltTransform */
+            {
+                ArrayList<Object> list = new192();
+                push(goTo(31), list);
+            }
+            break;
+            case 193: /* reduce AAnewterm1Term */
+            {
+                ArrayList<Object> list = new193();
+                push(goTo(32), list);
+            }
+            break;
+            case 194: /* reduce AAnewterm2Term */
+            {
+                ArrayList<Object> list = new194();
+                push(goTo(32), list);
+            }
+            break;
+            case 195: /* reduce AAlistterm1Term */
+            {
+                ArrayList<Object> list = new195();
+                push(goTo(32), list);
+            }
+            break;
+            case 196: /* reduce AAlistterm2Term */
+            {
+                ArrayList<Object> list = new196();
+                push(goTo(32), list);
+            }
+            break;
+            case 197: /* reduce AAsimpleterm1Term */
+            {
+                ArrayList<Object> list = new197();
+                push(goTo(32), list);
+            }
+            break;
+            case 198: /* reduce AAsimpleterm2Term */
+            {
+                ArrayList<Object> list = new198();
+                push(goTo(32), list);
+            }
+            break;
+            case 199: /* reduce AAsimpleterm3Term */
+            {
+                ArrayList<Object> list = new199();
+                push(goTo(32), list);
+            }
+            break;
+            case 200: /* reduce AAsimpleterm4Term */
+            {
+                ArrayList<Object> list = new200();
+                push(goTo(32), list);
+            }
+            break;
+            case 201: /* reduce ANullTerm */
+            {
+                ArrayList<Object> list = new201();
+                push(goTo(32), list);
+            }
+            break;
+            case 202: /* reduce AAlistoflistterm1ListOfListTerm */
+            {
+                ArrayList<Object> list = new202();
+                push(goTo(33), list);
+            }
+            break;
+            case 203: /* reduce AAlistoflistterm2ListOfListTerm */
+            {
+                ArrayList<Object> list = new203();
+                push(goTo(33), list);
+            }
+            break;
+            case 204: /* reduce AAnewlistterm1ListTerm */
+            {
+                ArrayList<Object> list = new204();
+                push(goTo(34), list);
+            }
+            break;
+            case 205: /* reduce AAnewlistterm2ListTerm */
+            {
+                ArrayList<Object> list = new205();
+                push(goTo(34), list);
+            }
+            break;
+            case 206: /* reduce AAsimplelistterm1ListTerm */
+            {
+                ArrayList<Object> list = new206();
+                push(goTo(34), list);
+            }
+            break;
+            case 207: /* reduce AAsimplelistterm2ListTerm */
+            {
+                ArrayList<Object> list = new207();
+                push(goTo(34), list);
+            }
+            break;
+            case 208: /* reduce AAsimplelistterm3ListTerm */
+            {
+                ArrayList<Object> list = new208();
+                push(goTo(34), list);
+            }
+            break;
+            case 209: /* reduce AAsimplelistterm4ListTerm */
+            {
+                ArrayList<Object> list = new209();
+                push(goTo(34), list);
+            }
+            break;
+            case 210: /* reduce AListTermTail */
+            {
+                ArrayList<Object> list = new210();
+                push(goTo(35), list);
+            }
+            break;
+            case 211: /* reduce ASimpleTermTail */
+            {
+                ArrayList<Object> list = new211();
+                push(goTo(36), list);
+            }
+            break;
+            case 212: /* reduce AAprodname1ProdName */
+            {
+                ArrayList<Object> list = new212();
+                push(goTo(37), list);
+            }
+            break;
+            case 213: /* reduce AAprodname2ProdName */
+            {
+                ArrayList<Object> list = new213();
+                push(goTo(37), list);
+            }
+            break;
+            case 214: /* reduce AProdNameTail */
+            {
+                ArrayList<Object> list = new214();
+                push(goTo(38), list);
+            }
+            break;
+            case 215: /* reduce AAparams1Params */
+            {
+                ArrayList<Object> list = new215();
+                push(goTo(39), list);
+            }
+            break;
+            case 216: /* reduce AAparams2Params */
+            {
+                ArrayList<Object> list = new216();
+                push(goTo(39), list);
+            }
+            break;
+            case 217: /* reduce AParamsTail */
+            {
+                ArrayList<Object> list = new217();
+                push(goTo(40), list);
+            }
+            break;
+            case 218: /* reduce AAltName */
+            {
+                ArrayList<Object> list = new218();
+                push(goTo(41), list);
+            }
+            break;
+            case 219: /* reduce AAelem1Elem */
+            {
+                ArrayList<Object> list = new219();
+                push(goTo(42), list);
+            }
+            break;
+            case 220: /* reduce AAelem2Elem */
+            {
+                ArrayList<Object> list = new220();
+                push(goTo(42), list);
+            }
+            break;
+            case 221: /* reduce AAelem3Elem */
+            {
+                ArrayList<Object> list = new221();
+                push(goTo(42), list);
+            }
+            break;
+            case 222: /* reduce AAelem4Elem */
+            {
+                ArrayList<Object> list = new222();
+                push(goTo(42), list);
+            }
+            break;
+            case 223: /* reduce AAelem5Elem */
+            {
+                ArrayList<Object> list = new223();
+                push(goTo(42), list);
+            }
+            break;
+            case 224: /* reduce AAelem6Elem */
+            {
+                ArrayList<Object> list = new224();
+                push(goTo(42), list);
+            }
+            break;
+            case 225: /* reduce AAelem7Elem */
+            {
+                ArrayList<Object> list = new225();
+                push(goTo(42), list);
+            }
+            break;
+            case 226: /* reduce AAelem8Elem */
+            {
+                ArrayList<Object> list = new226();
+                push(goTo(42), list);
+            }
+            break;
+            case 227: /* reduce AElemName */
+            {
+                ArrayList<Object> list = new227();
+                push(goTo(43), list);
+            }
+            break;
+            case 228: /* reduce ATokenSpecifier */
+            {
+                ArrayList<Object> list = new228();
+                push(goTo(44), list);
+            }
+            break;
+            case 229: /* reduce AProductionSpecifier */
+            {
+                ArrayList<Object> list = new229();
+                push(goTo(44), list);
+            }
+            break;
+            case 230: /* reduce AAst */
+            {
+                ArrayList<Object> list = new230();
+                push(goTo(45), list);
+            }
+            break;
+            case 231: /* reduce AAstProd */
+            {
+                ArrayList<Object> list = new231();
+                push(goTo(46), list);
+            }
+            break;
+            case 232: /* reduce AAastalts1AstAlts */
+            {
+                ArrayList<Object> list = new232();
+                push(goTo(47), list);
+            }
+            break;
+            case 233: /* reduce AAastalts2AstAlts */
+            {
+                ArrayList<Object> list = new233();
+                push(goTo(47), list);
+            }
+            break;
+            case 234: /* reduce AAstAltsTail */
+            {
+                ArrayList<Object> list = new234();
+                push(goTo(48), list);
+            }
+            break;
+            case 235: /* reduce AAastalt1AstAlt */
+            {
+                ArrayList<Object> list = new235();
+                push(goTo(49), list);
+            }
+            break;
+            case 236: /* reduce AAastalt2AstAlt */
+            {
+                ArrayList<Object> list = new236();
+                push(goTo(49), list);
+            }
+            break;
+            case 237: /* reduce AAastalt3AstAlt */
+            {
+                ArrayList<Object> list = new237();
+                push(goTo(49), list);
+            }
+            break;
+            case 238: /* reduce AAastalt4AstAlt */
+            {
+                ArrayList<Object> list = new238();
+                push(goTo(49), list);
+            }
+            break;
+            case 239: /* reduce ATerminal$PkgNameTail */
+            {
+                ArrayList<Object> list = new239();
+                push(goTo(50), list);
+            }
+            break;
+            case 240: /* reduce ANonTerminal$PkgNameTail */
+            {
+                ArrayList<Object> list = new240();
+                push(goTo(50), list);
+            }
+            break;
+            case 241: /* reduce ATerminal$HelperDef */
+            {
+                ArrayList<Object> list = new241();
+                push(goTo(51), list);
+            }
+            break;
+            case 242: /* reduce ANonTerminal$HelperDef */
+            {
+                ArrayList<Object> list = new242();
+                push(goTo(51), list);
+            }
+            break;
+            case 243: /* reduce ATerminal$IdListTail */
+            {
+                ArrayList<Object> list = new243();
+                push(goTo(52), list);
+            }
+            break;
+            case 244: /* reduce ANonTerminal$IdListTail */
+            {
+                ArrayList<Object> list = new244();
+                push(goTo(52), list);
+            }
+            break;
+            case 245: /* reduce ATerminal$TokenDef */
+            {
+                ArrayList<Object> list = new245();
+                push(goTo(53), list);
+            }
+            break;
+            case 246: /* reduce ANonTerminal$TokenDef */
+            {
+                ArrayList<Object> list = new246();
+                push(goTo(53), list);
+            }
+            break;
+            case 247: /* reduce ATerminal$StateListTail */
+            {
+                ArrayList<Object> list = new247();
+                push(goTo(54), list);
+            }
+            break;
+            case 248: /* reduce ANonTerminal$StateListTail */
+            {
+                ArrayList<Object> list = new248();
+                push(goTo(54), list);
+            }
+            break;
+            case 249: /* reduce ATerminal$RegExpTail */
+            {
+                ArrayList<Object> list = new249();
+                push(goTo(55), list);
+            }
+            break;
+            case 250: /* reduce ANonTerminal$RegExpTail */
+            {
+                ArrayList<Object> list = new250();
+                push(goTo(55), list);
+            }
+            break;
+            case 251: /* reduce ATerminal$UnExp */
+            {
+                ArrayList<Object> list = new251();
+                push(goTo(56), list);
+            }
+            break;
+            case 252: /* reduce ANonTerminal$UnExp */
+            {
+                ArrayList<Object> list = new252();
+                push(goTo(56), list);
+            }
+            break;
+            case 253: /* reduce ATerminal$Prod */
+            {
+                ArrayList<Object> list = new253();
+                push(goTo(57), list);
+            }
+            break;
+            case 254: /* reduce ANonTerminal$Prod */
+            {
+                ArrayList<Object> list = new254();
+                push(goTo(57), list);
+            }
+            break;
+            case 255: /* reduce ATerminal$Elem */
+            {
+                ArrayList<Object> list = new255();
+                push(goTo(58), list);
+            }
+            break;
+            case 256: /* reduce ANonTerminal$Elem */
+            {
+                ArrayList<Object> list = new256();
+                push(goTo(58), list);
+            }
+            break;
+            case 257: /* reduce ATerminal$AltsTail */
+            {
+                ArrayList<Object> list = new257();
+                push(goTo(59), list);
+            }
+            break;
+            case 258: /* reduce ANonTerminal$AltsTail */
+            {
+                ArrayList<Object> list = new258();
+                push(goTo(59), list);
+            }
+            break;
+            case 259: /* reduce ATerminal$Term */
+            {
+                ArrayList<Object> list = new259();
+                push(goTo(60), list);
+            }
+            break;
+            case 260: /* reduce ANonTerminal$Term */
+            {
+                ArrayList<Object> list = new260();
+                push(goTo(60), list);
+            }
+            break;
+            case 261: /* reduce ATerminal$ListTermTail */
+            {
+                ArrayList<Object> list = new261();
+                push(goTo(61), list);
+            }
+            break;
+            case 262: /* reduce ANonTerminal$ListTermTail */
+            {
+                ArrayList<Object> list = new262();
+                push(goTo(61), list);
+            }
+            break;
+            case 263: /* reduce ATerminal$ParamsTail */
+            {
+                ArrayList<Object> list = new263();
+                push(goTo(62), list);
+            }
+            break;
+            case 264: /* reduce ANonTerminal$ParamsTail */
+            {
+                ArrayList<Object> list = new264();
+                push(goTo(62), list);
+            }
+            break;
+            case 265: /* reduce ATerminal$AstProd */
+            {
+                ArrayList<Object> list = new265();
+                push(goTo(63), list);
+            }
+            break;
+            case 266: /* reduce ANonTerminal$AstProd */
+            {
+                ArrayList<Object> list = new266();
+                push(goTo(63), list);
+            }
+            break;
+            case 267: /* reduce ATerminal$AstAltsTail */
+            {
+                ArrayList<Object> list = new267();
+                push(goTo(64), list);
+            }
+            break;
+            case 268: /* reduce ANonTerminal$AstAltsTail */
+            {
+                ArrayList<Object> list = new268();
+                push(goTo(64), list);
+            }
+            break;
+        }
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new0() /* reduce AAgrammar1Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+
+        pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new1() /* reduce AAgrammar2Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList1.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        pgrammarNode1 = new AGrammar(listNode3, null, null, null, null, null, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new2() /* reduce AAgrammar3Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        phelpersNode3 = (PHelpers)nodeArrayList1.get(0);
+
+        pgrammarNode1 = new AGrammar(listNode2, phelpersNode3, null, null, null, null, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new3() /* reduce AAgrammar4Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new4() /* reduce AAgrammar5Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        pstatesNode4 = (PStates)nodeArrayList1.get(0);
+
+        pgrammarNode1 = new AGrammar(listNode2, null, pstatesNode4, null, null, null, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new5() /* reduce AAgrammar6Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new6() /* reduce AAgrammar7Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new7() /* reduce AAgrammar8Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new8() /* reduce AAgrammar9Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        ptokensNode5 = (PTokens)nodeArrayList1.get(0);
+
+        pgrammarNode1 = new AGrammar(listNode2, null, null, ptokensNode5, null, null, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new9() /* reduce AAgrammar10Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new10() /* reduce AAgrammar11Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new11() /* reduce AAgrammar12Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new12() /* reduce AAgrammar13Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new13() /* reduce AAgrammar14Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new14() /* reduce AAgrammar15Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new15() /* reduce AAgrammar16Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new16() /* reduce AAgrammar17Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        pigntokensNode6 = (PIgnTokens)nodeArrayList1.get(0);
+
+        pgrammarNode1 = new AGrammar(listNode2, null, null, null, pigntokensNode6, null, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new17() /* reduce AAgrammar18Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new18() /* reduce AAgrammar19Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new19() /* reduce AAgrammar20Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new20() /* reduce AAgrammar21Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new21() /* reduce AAgrammar22Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new22() /* reduce AAgrammar23Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new23() /* reduce AAgrammar24Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new24() /* reduce AAgrammar25Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new25() /* reduce AAgrammar26Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new26() /* reduce AAgrammar27Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new27() /* reduce AAgrammar28Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new28() /* reduce AAgrammar29Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new29() /* reduce AAgrammar30Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new30() /* reduce AAgrammar31Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new31() /* reduce AAgrammar32Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new32() /* reduce AAgrammar33Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        pproductionsNode7 = (PProductions)nodeArrayList1.get(0);
+
+        pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, pproductionsNode7, null);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new33() /* reduce AAgrammar34Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new34() /* reduce AAgrammar35Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new35() /* reduce AAgrammar36Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new36() /* reduce AAgrammar37Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new37() /* reduce AAgrammar38Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new38() /* reduce AAgrammar39Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new39() /* reduce AAgrammar40Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new40() /* reduce AAgrammar41Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new41() /* reduce AAgrammar42Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new42() /* reduce AAgrammar43Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new43() /* reduce AAgrammar44Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new44() /* reduce AAgrammar45Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new45() /* reduce AAgrammar46Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new46() /* reduce AAgrammar47Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new47() /* reduce AAgrammar48Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new48() /* reduce AAgrammar49Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new49() /* reduce AAgrammar50Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new50() /* reduce AAgrammar51Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new51() /* reduce AAgrammar52Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new52() /* reduce AAgrammar53Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new53() /* reduce AAgrammar54Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new54() /* reduce AAgrammar55Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new55() /* reduce AAgrammar56Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new56() /* reduce AAgrammar57Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new57() /* reduce AAgrammar58Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new58() /* reduce AAgrammar59Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new59() /* reduce AAgrammar60Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new60() /* reduce AAgrammar61Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new61() /* reduce AAgrammar62Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new62() /* reduce AAgrammar63Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new63() /* reduce AAgrammar64Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        @SuppressWarnings("unused") Object nullNode9 = null;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new64() /* reduce AAgrammar65Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        pastNode8 = (PAst)nodeArrayList1.get(0);
+
+        pgrammarNode1 = new AGrammar(listNode2, null, null, null, null, null, pastNode8);
+        }
+	nodeList.add(pgrammarNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new65() /* reduce AAgrammar66Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new66() /* reduce AAgrammar67Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new67() /* reduce AAgrammar68Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new68() /* reduce AAgrammar69Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new69() /* reduce AAgrammar70Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new70() /* reduce AAgrammar71Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new71() /* reduce AAgrammar72Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new72() /* reduce AAgrammar73Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new73() /* reduce AAgrammar74Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new74() /* reduce AAgrammar75Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new75() /* reduce AAgrammar76Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new76() /* reduce AAgrammar77Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new77() /* reduce AAgrammar78Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new78() /* reduce AAgrammar79Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new79() /* reduce AAgrammar80Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new80() /* reduce AAgrammar81Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new81() /* reduce AAgrammar82Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new82() /* reduce AAgrammar83Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new83() /* reduce AAgrammar84Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new84() /* reduce AAgrammar85Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new85() /* reduce AAgrammar86Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new86() /* reduce AAgrammar87Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new87() /* reduce AAgrammar88Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new88() /* reduce AAgrammar89Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new89() /* reduce AAgrammar90Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new90() /* reduce AAgrammar91Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new91() /* reduce AAgrammar92Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new92() /* reduce AAgrammar93Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new93() /* reduce AAgrammar94Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new94() /* reduce AAgrammar95Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new95() /* reduce AAgrammar96Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        @SuppressWarnings("unused") Object nullNode8 = null;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new96() /* reduce AAgrammar97Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new97() /* reduce AAgrammar98Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new98() /* reduce AAgrammar99Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new99() /* reduce AAgrammar100Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new100() /* reduce AAgrammar101Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new101() /* reduce AAgrammar102Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new102() /* reduce AAgrammar103Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new103() /* reduce AAgrammar104Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new104() /* reduce AAgrammar105Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new105() /* reduce AAgrammar106Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new106() /* reduce AAgrammar107Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new107() /* reduce AAgrammar108Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new108() /* reduce AAgrammar109Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new109() /* reduce AAgrammar110Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new110() /* reduce AAgrammar111Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new111() /* reduce AAgrammar112Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        @SuppressWarnings("unused") Object nullNode7 = null;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new112() /* reduce AAgrammar113Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new113() /* reduce AAgrammar114Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new114() /* reduce AAgrammar115Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new115() /* reduce AAgrammar116Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new116() /* reduce AAgrammar117Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new117() /* reduce AAgrammar118Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new118() /* reduce AAgrammar119Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new119() /* reduce AAgrammar120Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        @SuppressWarnings("unused") Object nullNode6 = null;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new120() /* reduce AAgrammar121Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new121() /* reduce AAgrammar122Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new122() /* reduce AAgrammar123Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new123() /* reduce AAgrammar124Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new124() /* reduce AAgrammar125Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new125() /* reduce AAgrammar126Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new126() /* reduce AAgrammar127Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        PHelpers phelpersNode3;
+        PStates pstatesNode4;
+        PTokens ptokensNode5;
+        PIgnTokens pigntokensNode6;
+        PProductions pproductionsNode7;
+        PAst pastNode8;
+        {
+            // Block
+        }
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new127() /* reduce AAgrammar128Grammar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList7 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PGrammar pgrammarNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PHelpers phelpersNode4;
+        PStates pstatesNode5;
+        PTokens ptokensNode6;
+        PIgnTokens pigntokensNode7;
+        PProductions pproductionsNode8;
+        PAst pastNode9;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new128() /* reduce APackage */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        listNode1 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode1 != null)
+	{
+	  listNode2.addAll(listNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new129() /* reduce AApkgname1PkgName */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        TPkgId tpkgidNode1;
+        tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
+	if(tpkgidNode1 != null)
+	{
+	  listNode2.add(tpkgidNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new130() /* reduce AApkgname2PkgName */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        TPkgId tpkgidNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(tpkgidNode1 != null)
+	{
+	  listNode3.add(tpkgidNode1);
+	}
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(listNode3);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new131() /* reduce APkgNameTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TPkgId tpkgidNode1;
+        tpkgidNode1 = (TPkgId)nodeArrayList2.get(0);
+	nodeList.add(tpkgidNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new132() /* reduce AHelpers */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PHelpers phelpersNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        phelpersNode1 = new AHelpers(listNode3);
+        }
+	nodeList.add(phelpersNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new133() /* reduce AHelperDef */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PHelperDef phelperdefNode1;
+        {
+            // Block
+        TId tidNode2;
+        PRegExp pregexpNode3;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        pregexpNode3 = (PRegExp)nodeArrayList3.get(0);
+
+        phelperdefNode1 = new AHelperDef(tidNode2, pregexpNode3);
+        }
+	nodeList.add(phelperdefNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new134() /* reduce AStates */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStates pstatesNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        pstatesNode1 = new AStates(listNode3);
+        }
+	nodeList.add(pstatesNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new135() /* reduce AAidlist1IdList */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList1.get(0);
+	if(tidNode1 != null)
+	{
+	  listNode2.add(tidNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new136() /* reduce AAidlist2IdList */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        TId tidNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        tidNode1 = (TId)nodeArrayList1.get(0);
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(tidNode1 != null)
+	{
+	  listNode3.add(tidNode1);
+	}
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(listNode3);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new137() /* reduce AIdListTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList2.get(0);
+	nodeList.add(tidNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new138() /* reduce ATokens */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTokens ptokensNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        ptokensNode1 = new ATokens(listNode3);
+        }
+	nodeList.add(ptokensNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new139() /* reduce AAtokendef1TokenDef */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTokenDef ptokendefNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        TId tidNode3;
+        PRegExp pregexpNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") 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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new140() /* reduce AAtokendef2TokenDef */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTokenDef ptokendefNode1;
+        {
+            // Block
+        PStateList pstatelistNode2;
+        TId tidNode3;
+        PRegExp pregexpNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        @SuppressWarnings("unused") 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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new141() /* reduce AAtokendef3TokenDef */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTokenDef ptokendefNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") 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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new142() /* reduce AAtokendef4TokenDef */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList6 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTokenDef ptokendefNode1;
+        {
+            // Block
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new143() /* reduce AAstatelist1StateList */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStateList pstatelistNode1;
+        {
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList2.get(0);
+        {
+            // Block
+        }
+
+        pstatelistNode1 = new AStateList(tidNode2, null, listNode4);
+        }
+	nodeList.add(pstatelistNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new144() /* reduce AAstatelist2StateList */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStateList pstatelistNode1;
+        {
+            // Block
+        TId tidNode2;
+        PTransition ptransitionNode3;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList2.get(0);
+        ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+        {
+            // Block
+        }
+
+        pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode4);
+        }
+	nodeList.add(pstatelistNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new145() /* reduce AAstatelist3StateList */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStateList pstatelistNode1;
+        {
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        LinkedList<Object> listNode5 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList2.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        listNode4 = (LinkedList)nodeArrayList3.get(0);
+	if(listNode4 != null)
+	{
+	  listNode5.addAll(listNode4);
+	}
+        }
+
+        pstatelistNode1 = new AStateList(tidNode2, null, listNode5);
+        }
+	nodeList.add(pstatelistNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new146() /* reduce AAstatelist4StateList */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStateList pstatelistNode1;
+        {
+            // Block
+        TId tidNode2;
+        PTransition ptransitionNode3;
+        LinkedList<Object> listNode5 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList2.get(0);
+        ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        listNode4 = (LinkedList)nodeArrayList4.get(0);
+	if(listNode4 != null)
+	{
+	  listNode5.addAll(listNode4);
+	}
+        }
+
+        pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
+        }
+	nodeList.add(pstatelistNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new147() /* reduce AAstatelisttail1StateListTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStateListTail pstatelisttailNode1;
+        {
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        tidNode2 = (TId)nodeArrayList2.get(0);
+
+        pstatelisttailNode1 = new AStateListTail(tidNode2, null);
+        }
+	nodeList.add(pstatelisttailNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new148() /* reduce AAstatelisttail2StateListTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PStateListTail pstatelisttailNode1;
+        {
+            // Block
+        TId tidNode2;
+        PTransition ptransitionNode3;
+        tidNode2 = (TId)nodeArrayList2.get(0);
+        ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+
+        pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
+        }
+	nodeList.add(pstatelisttailNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new149() /* reduce ATransition */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTransition ptransitionNode1;
+        {
+            // Block
+        TId tidNode2;
+        tidNode2 = (TId)nodeArrayList2.get(0);
+
+        ptransitionNode1 = new ATransition(tidNode2);
+        }
+	nodeList.add(ptransitionNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new150() /* reduce AAigntokens1IgnTokens */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PIgnTokens pigntokensNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        }
+
+        pigntokensNode1 = new AIgnTokens(listNode2);
+        }
+	nodeList.add(pigntokensNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new151() /* reduce AAigntokens2IgnTokens */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PIgnTokens pigntokensNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList3.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        pigntokensNode1 = new AIgnTokens(listNode3);
+        }
+	nodeList.add(pigntokensNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new152() /* reduce ALookAhead */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TSlash tslashNode1;
+        PRegExp pregexpNode2;
+        tslashNode1 = (TSlash)nodeArrayList1.get(0);
+        pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
+	nodeList.add(tslashNode1);
+	nodeList.add(pregexpNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new153() /* reduce AAregexp1RegExp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PRegExp pregexpNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        PConcat pconcatNode2;
+        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
+	if(pconcatNode2 != null)
+	{
+	  listNode3.add(pconcatNode2);
+	}
+        }
+
+        pregexpNode1 = new ARegExp(listNode3);
+        }
+	nodeList.add(pregexpNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new154() /* reduce AAregexp2RegExp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PRegExp pregexpNode1;
+        {
+            // Block
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        {
+            // Block
+        PConcat pconcatNode2;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
+        listNode3 = (LinkedList)nodeArrayList2.get(0);
+	if(pconcatNode2 != null)
+	{
+	  listNode4.add(pconcatNode2);
+	}
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
+        }
+
+        pregexpNode1 = new ARegExp(listNode4);
+        }
+	nodeList.add(pregexpNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new155() /* reduce ARegExpTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PConcat pconcatNode1;
+        pconcatNode1 = (PConcat)nodeArrayList2.get(0);
+	nodeList.add(pconcatNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new156() /* reduce AAconcat1Concat */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        PConcat pconcatNode1;
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        }
+
+        pconcatNode1 = new AConcat(listNode2);
+        }
+	nodeList.add(pconcatNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new157() /* reduce AAconcat2Concat */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PConcat pconcatNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList1.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        pconcatNode1 = new AConcat(listNode3);
+        }
+	nodeList.add(pconcatNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new158() /* reduce AAunexp1UnExp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PUnExp punexpNode1;
+        {
+            // Block
+        PBasic pbasicNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        pbasicNode2 = (PBasic)nodeArrayList1.get(0);
+
+        punexpNode1 = new AUnExp(pbasicNode2, null);
+        }
+	nodeList.add(punexpNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new159() /* reduce AAunexp2UnExp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PUnExp punexpNode1;
+        {
+            // Block
+        PBasic pbasicNode2;
+        PUnOp punopNode3;
+        pbasicNode2 = (PBasic)nodeArrayList1.get(0);
+        punopNode3 = (PUnOp)nodeArrayList2.get(0);
+
+        punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
+        }
+	nodeList.add(punexpNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new160() /* reduce ACharBasic */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBasic pbasicNode1;
+        {
+            // Block
+        PChar pcharNode2;
+        pcharNode2 = (PChar)nodeArrayList1.get(0);
+
+        pbasicNode1 = new ACharBasic(pcharNode2);
+        }
+	nodeList.add(pbasicNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new161() /* reduce ASetBasic */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBasic pbasicNode1;
+        {
+            // Block
+        PSet psetNode2;
+        psetNode2 = (PSet)nodeArrayList1.get(0);
+
+        pbasicNode1 = new ASetBasic(psetNode2);
+        }
+	nodeList.add(pbasicNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new162() /* reduce AStringBasic */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBasic pbasicNode1;
+        {
+            // Block
+        TString tstringNode2;
+        tstringNode2 = (TString)nodeArrayList1.get(0);
+
+        pbasicNode1 = new AStringBasic(tstringNode2);
+        }
+	nodeList.add(pbasicNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new163() /* reduce AIdBasic */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBasic pbasicNode1;
+        {
+            // Block
+        TId tidNode2;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+
+        pbasicNode1 = new AIdBasic(tidNode2);
+        }
+	nodeList.add(pbasicNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new164() /* reduce ARegExpBasic */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBasic pbasicNode1;
+        {
+            // Block
+        PRegExp pregexpNode2;
+        pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
+
+        pbasicNode1 = new ARegExpBasic(pregexpNode2);
+        }
+	nodeList.add(pbasicNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new165() /* reduce ACharChar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PChar pcharNode1;
+        {
+            // Block
+        TChar tcharNode2;
+        tcharNode2 = (TChar)nodeArrayList1.get(0);
+
+        pcharNode1 = new ACharChar(tcharNode2);
+        }
+	nodeList.add(pcharNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new166() /* reduce ADecChar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PChar pcharNode1;
+        {
+            // Block
+        TDecChar tdeccharNode2;
+        tdeccharNode2 = (TDecChar)nodeArrayList1.get(0);
+
+        pcharNode1 = new ADecChar(tdeccharNode2);
+        }
+	nodeList.add(pcharNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new167() /* reduce AHexChar */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PChar pcharNode1;
+        {
+            // Block
+        THexChar thexcharNode2;
+        thexcharNode2 = (THexChar)nodeArrayList1.get(0);
+
+        pcharNode1 = new AHexChar(thexcharNode2);
+        }
+	nodeList.add(pcharNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new168() /* reduce AOperationSet */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PSet psetNode1;
+        {
+            // Block
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new169() /* reduce AIntervalSet */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PSet psetNode1;
+        {
+            // Block
+        PChar pcharNode2;
+        PChar pcharNode3;
+        pcharNode2 = (PChar)nodeArrayList2.get(0);
+        pcharNode3 = (PChar)nodeArrayList4.get(0);
+
+        psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
+        }
+	nodeList.add(psetNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new170() /* reduce AStarUnOp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PUnOp punopNode1;
+        {
+            // Block
+        TStar tstarNode2;
+        tstarNode2 = (TStar)nodeArrayList1.get(0);
+
+        punopNode1 = new AStarUnOp(tstarNode2);
+        }
+	nodeList.add(punopNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new171() /* reduce AQMarkUnOp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PUnOp punopNode1;
+        {
+            // Block
+        TQMark tqmarkNode2;
+        tqmarkNode2 = (TQMark)nodeArrayList1.get(0);
+
+        punopNode1 = new AQMarkUnOp(tqmarkNode2);
+        }
+	nodeList.add(punopNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new172() /* reduce APlusUnOp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PUnOp punopNode1;
+        {
+            // Block
+        TPlus tplusNode2;
+        tplusNode2 = (TPlus)nodeArrayList1.get(0);
+
+        punopNode1 = new APlusUnOp(tplusNode2);
+        }
+	nodeList.add(punopNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new173() /* reduce APlusBinOp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBinOp pbinopNode1;
+        {
+            // Block
+
+        pbinopNode1 = new APlusBinOp();
+        }
+	nodeList.add(pbinopNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new174() /* reduce AMinusBinOp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PBinOp pbinopNode1;
+        {
+            // Block
+
+        pbinopNode1 = new AMinusBinOp();
+        }
+	nodeList.add(pbinopNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new175() /* reduce AProductions */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PProductions pproductionsNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+
+        pproductionsNode1 = new AProductions(listNode3);
+        }
+	nodeList.add(pproductionsNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new176() /* reduce AAprod1Prod */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PProd pprodNode1;
+        {
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        LinkedList<Object> listNode6 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        }
+        {
+            // Block
+        LinkedList<Object> listNode5 = new LinkedList<Object>();
+        listNode5 = (LinkedList)nodeArrayList3.get(0);
+	if(listNode5 != null)
+	{
+	  listNode6.addAll(listNode5);
+	}
+        }
+
+        pprodNode1 = new AProd(tidNode2, null, listNode4, listNode6);
+        }
+	nodeList.add(pprodNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new177() /* reduce AAprod2Prod */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PProd pprodNode1;
+        {
+            // Block
+        TId tidNode2;
+        TArrow tarrowNode3;
+        LinkedList<Object> listNode5 = new LinkedList<Object>();
+        LinkedList<Object> listNode7 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        tarrowNode3 = (TArrow)nodeArrayList2.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        listNode4 = (LinkedList)nodeArrayList2.get(1);
+	if(listNode4 != null)
+	{
+	  listNode5.addAll(listNode4);
+	}
+        }
+        {
+            // Block
+        LinkedList<Object> listNode6 = new LinkedList<Object>();
+        listNode6 = (LinkedList)nodeArrayList4.get(0);
+	if(listNode6 != null)
+	{
+	  listNode7.addAll(listNode6);
+	}
+        }
+
+        pprodNode1 = new AProd(tidNode2, tarrowNode3, listNode5, listNode7);
+        }
+	nodeList.add(pprodNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new178() /* reduce AAprodtransform1ProdTransform */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TArrow tarrowNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        tarrowNode1 = (TArrow)nodeArrayList2.get(0);
+        {
+            // Block
+        }
+	nodeList.add(tarrowNode1);
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new179() /* reduce AAprodtransform2ProdTransform */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TArrow tarrowNode1;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        tarrowNode1 = (TArrow)nodeArrayList2.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList3.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(tarrowNode1);
+	nodeList.add(listNode3);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new180() /* reduce AAalts1Alts */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PAlt paltNode1;
+        paltNode1 = (PAlt)nodeArrayList1.get(0);
+	if(paltNode1 != null)
+	{
+	  listNode2.add(paltNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new181() /* reduce AAalts2Alts */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        PAlt paltNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        paltNode1 = (PAlt)nodeArrayList1.get(0);
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(paltNode1 != null)
+	{
+	  listNode3.add(paltNode1);
+	}
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(listNode3);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new182() /* reduce AAltsTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        paltNode1 = (PAlt)nodeArrayList2.get(0);
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new183() /* reduce AAalt1Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        PAlt paltNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        {
+            // Block
+        }
+
+        paltNode1 = new AAlt(null, listNode3, null);
+        }
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new184() /* reduce AAalt2Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        }
+
+        paltNode1 = new AAlt(tidNode2, listNode3, null);
+        }
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new185() /* reduce AAalt3Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)nodeArrayList1.get(0);
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
+        }
+
+        paltNode1 = new AAlt(null, listNode4, null);
+        }
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new186() /* reduce AAalt4Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
+        }
+
+        paltNode1 = new AAlt(tidNode2, listNode4, null);
+        }
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new187() /* reduce AAalt5Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PAltTransform palttransformNode4;
+        {
+            // Block
+        }
+        palttransformNode4 = (PAltTransform)nodeArrayList1.get(0);
+
+        paltNode1 = new AAlt(null, listNode3, palttransformNode4);
+        }
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new188() /* reduce AAalt6Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        PAltTransform palttransformNode4;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        }
+        palttransformNode4 = (PAltTransform)nodeArrayList2.get(0);
+
+        paltNode1 = new AAlt(tidNode2, listNode3, palttransformNode4);
+        }
+	nodeList.add(paltNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new189() /* reduce AAalt7Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        PAltTransform palttransformNode5;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new190() /* reduce AAalt8Alt */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAlt paltNode1;
+        {
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        PAltTransform palttransformNode5;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new191() /* reduce AAalttransform1AltTransform */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAltTransform palttransformNode1;
+        {
+            // Block
+        TLBrace tlbraceNode2;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        TRBrace trbraceNode4;
+        tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
+        {
+            // Block
+        }
+        trbraceNode4 = (TRBrace)nodeArrayList3.get(0);
+
+        palttransformNode1 = new AAltTransform(tlbraceNode2, listNode3, trbraceNode4);
+        }
+	nodeList.add(palttransformNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new192() /* reduce AAalttransform2AltTransform */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAltTransform palttransformNode1;
+        {
+            // Block
+        TLBrace tlbraceNode2;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        TRBrace trbraceNode5;
+        tlbraceNode2 = (TLBrace)nodeArrayList1.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new193() /* reduce AAnewterm1Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        PProdName pprodnameNode2;
+        TLPar tlparNode3;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        {
+            // Block
+        }
+
+        ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode4);
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new194() /* reduce AAnewterm2Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        PProdName pprodnameNode2;
+        TLPar tlparNode3;
+        LinkedList<Object> listNode5 = new LinkedList<Object>();
+        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        listNode4 = (LinkedList)nodeArrayList4.get(0);
+	if(listNode4 != null)
+	{
+	  listNode5.addAll(listNode4);
+	}
+        }
+
+        ptermNode1 = new ANewTerm(pprodnameNode2, tlparNode3, listNode5);
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new195() /* reduce AAlistterm1Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        TLBkt tlbktNode2;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
+        {
+            // Block
+        }
+
+        ptermNode1 = new AListTerm(tlbktNode2, listNode3);
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new196() /* reduce AAlistterm2Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        TLBkt tlbktNode2;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        tlbktNode2 = (TLBkt)nodeArrayList1.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
+        }
+
+        ptermNode1 = new AListTerm(tlbktNode2, listNode4);
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new197() /* reduce AAsimpleterm1Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        TId tidNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        tidNode3 = (TId)nodeArrayList1.get(0);
+
+        ptermNode1 = new ASimpleTerm(null, tidNode3, null);
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new198() /* reduce AAsimpleterm2Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        PSpecifier pspecifierNode2;
+        TId tidNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
+        tidNode3 = (TId)nodeArrayList2.get(0);
+
+        ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new199() /* reduce AAsimpleterm3Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") 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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new200() /* reduce AAsimpleterm4Term */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new201() /* reduce ANullTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        {
+            // Block
+
+        ptermNode1 = new ANullTerm();
+        }
+	nodeList.add(ptermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new202() /* reduce AAlistoflistterm1ListOfListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PListTerm plisttermNode1;
+        plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
+	if(plisttermNode1 != null)
+	{
+	  listNode2.add(plisttermNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new203() /* reduce AAlistoflistterm2ListOfListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        PListTerm plisttermNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(plisttermNode1 != null)
+	{
+	  listNode3.add(plisttermNode1);
+	}
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(listNode3);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new204() /* reduce AAnewlistterm1ListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        {
+            // Block
+        PProdName pprodnameNode2;
+        TLPar tlparNode3;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        {
+            // Block
+        }
+
+        plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode4);
+        }
+	nodeList.add(plisttermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new205() /* reduce AAnewlistterm2ListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList5 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        {
+            // Block
+        PProdName pprodnameNode2;
+        TLPar tlparNode3;
+        LinkedList<Object> listNode5 = new LinkedList<Object>();
+        pprodnameNode2 = (PProdName)nodeArrayList2.get(0);
+        tlparNode3 = (TLPar)nodeArrayList3.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        listNode4 = (LinkedList)nodeArrayList4.get(0);
+	if(listNode4 != null)
+	{
+	  listNode5.addAll(listNode4);
+	}
+        }
+
+        plisttermNode1 = new ANewListTerm(pprodnameNode2, tlparNode3, listNode5);
+        }
+	nodeList.add(plisttermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new206() /* reduce AAsimplelistterm1ListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        TId tidNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        tidNode3 = (TId)nodeArrayList1.get(0);
+
+        plisttermNode1 = new ASimpleListTerm(null, tidNode3, null);
+        }
+	nodeList.add(plisttermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new207() /* reduce AAsimplelistterm2ListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        {
+            // Block
+        PSpecifier pspecifierNode2;
+        TId tidNode3;
+        @SuppressWarnings("unused") Object nullNode4 = null;
+        pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
+        tidNode3 = (TId)nodeArrayList2.get(0);
+
+        plisttermNode1 = new ASimpleListTerm(pspecifierNode2, tidNode3, null);
+        }
+	nodeList.add(plisttermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new208() /* reduce AAsimplelistterm3ListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") 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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new209() /* reduce AAsimplelistterm4ListTerm */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        {
+            // Block
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new210() /* reduce AListTermTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PListTerm plisttermNode1;
+        plisttermNode1 = (PListTerm)nodeArrayList2.get(0);
+	nodeList.add(plisttermNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new211() /* reduce ASimpleTermTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList2.get(0);
+	nodeList.add(tidNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new212() /* reduce AAprodname1ProdName */
     {
-      stack.add(new State(numstate, this.nodeList));
-      return;
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PProdName pprodnameNode1;
+        {
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+
+        pprodnameNode1 = new AProdName(tidNode2, null);
+        }
+	nodeList.add(pprodnameNode1);
+        return nodeList;
     }
 
-    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)
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new213() /* reduce AAprodname2ProdName */
     {
-      int middle = (low + high) / 2;
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      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)
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PProdName pprodnameNode1;
         {
-          listNode5.addAll(listNode4);
+            // Block
+        TId tidNode2;
+        TId tidNode3;
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        tidNode3 = (TId)nodeArrayList2.get(0);
+
+        pprodnameNode1 = new AProdName(tidNode2, tidNode3);
         }
-      }
+	nodeList.add(pprodnameNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new214() /* reduce AProdNameTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList2.get(0);
+	nodeList.add(tidNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new215() /* reduce AAparams1Params */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pstatelistNode1 = new AStateList(tidNode2, ptransitionNode3, listNode5);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PTerm ptermNode1;
+        ptermNode1 = (PTerm)nodeArrayList1.get(0);
+	if(ptermNode1 != null)
+	{
+	  listNode2.add(ptermNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(pstatelistNode1);
-    return nodeList;
-  }
 
-  ArrayList new147() /* reduce AAstatelisttail1StateListTail */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PStateListTail pstatelisttailNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new216() /* reduce AAparams2Params */
     {
-      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;
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        PTerm ptermNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        ptermNode1 = (PTerm)nodeArrayList1.get(0);
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(ptermNode1 != null)
+	{
+	  listNode3.add(ptermNode1);
+	}
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(listNode3);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new217() /* reduce AParamsTail */
     {
-      TId tidNode2;
-      PTransition ptransitionNode3;
-      tidNode2 = (TId)nodeArrayList2.get(0);
-      ptransitionNode3 = (PTransition)nodeArrayList3.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pstatelisttailNode1 = new AStateListTail(tidNode2, ptransitionNode3);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PTerm ptermNode1;
+        ptermNode1 = (PTerm)nodeArrayList2.get(0);
+	nodeList.add(ptermNode1);
+        return nodeList;
     }
-    nodeList.add(pstatelisttailNode1);
-    return nodeList;
-  }
 
-  ArrayList new149() /* reduce ATransition */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PTransition ptransitionNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new218() /* reduce AAltName */
     {
-      TId tidNode2;
-      tidNode2 = (TId)nodeArrayList2.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      ptransitionNode1 = new ATransition(tidNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList2.get(0);
+	nodeList.add(tidNode1);
+        return nodeList;
     }
-    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;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new219() /* reduce AAelem1Elem */
     {
-      TypedLinkedList listNode2 = new TypedLinkedList();
-      {}
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pigntokensNode1 = new AIgnTokens(listNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        TId tidNode4;
+        @SuppressWarnings("unused") Object nullNode5 = null;
+        tidNode4 = (TId)nodeArrayList1.get(0);
+
+        pelemNode1 = new AElem(null, null, tidNode4, null);
+        }
+	nodeList.add(pelemNode1);
+        return nodeList;
     }
-    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;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new220() /* reduce AAelem2Elem */
     {
-      TypedLinkedList listNode3 = new TypedLinkedList();
-      {
-        TypedLinkedList listNode2 = new TypedLinkedList();
-        listNode2 = (TypedLinkedList)nodeArrayList3.get(0);
-        if(listNode2 != null)
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
         {
-          listNode3.addAll(listNode2);
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") Object nullNode3 = null;
+        TId tidNode4;
+        @SuppressWarnings("unused") 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;
+    }
+
+
 
-      pigntokensNode1 = new AIgnTokens(listNode3);
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new221() /* reduce AAelem3Elem */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        PSpecifier pspecifierNode3;
+        TId tidNode4;
+        @SuppressWarnings("unused") 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;
     }
-    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();
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new222() /* reduce AAelem4Elem */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
+        {
+            // Block
+        TId tidNode2;
+        PSpecifier pspecifierNode3;
+        TId tidNode4;
+        @SuppressWarnings("unused") 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 nodeArrayList1 = (ArrayList) pop();
-    PRegExp pregexpNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new223() /* reduce AAelem5Elem */
     {
-      TypedLinkedList listNode3 = new TypedLinkedList();
-      {
-        PConcat pconcatNode2;
-        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
-        if(pconcatNode2 != null)
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
         {
-          listNode3.add(pconcatNode2);
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        @SuppressWarnings("unused") 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;
+    }
+
 
-      pregexpNode1 = new ARegExp(listNode3);
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new224() /* reduce AAelem6Elem */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
+        {
+            // Block
+        TId tidNode2;
+        @SuppressWarnings("unused") 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;
     }
-    nodeList.add(pregexpNode1);
-    return nodeList;
-  }
 
-  ArrayList new154() /* reduce AAregexp2RegExp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PRegExp pregexpNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new225() /* reduce AAelem7Elem */
     {
-      TypedLinkedList listNode4 = new TypedLinkedList();
-      {
-        PConcat pconcatNode2;
-        TypedLinkedList listNode3 = new TypedLinkedList();
-        pconcatNode2 = (PConcat)nodeArrayList1.get(0);
-        listNode3 = (TypedLinkedList)nodeArrayList2.get(0);
-        if(pconcatNode2 != null)
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
         {
-          listNode4.add(pconcatNode2);
+            // Block
+        @SuppressWarnings("unused") 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);
         }
-        if(listNode3 != null)
+	nodeList.add(pelemNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new226() /* reduce AAelem8Elem */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PElem pelemNode1;
         {
-          listNode4.addAll(listNode3);
+            // Block
+        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;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new227() /* reduce AElemName */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList2.get(0);
+	nodeList.add(tidNode1);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new228() /* reduce ATokenSpecifier */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PSpecifier pspecifierNode1;
+        {
+            // Block
 
-      pregexpNode1 = new ARegExp(listNode4);
+        pspecifierNode1 = new ATokenSpecifier();
+        }
+	nodeList.add(pspecifierNode1);
+        return nodeList;
     }
-    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();
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new229() /* reduce AProductionSpecifier */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PSpecifier pspecifierNode1;
+        {
+            // Block
+
+        pspecifierNode1 = new AProductionSpecifier();
+        }
+	nodeList.add(pspecifierNode1);
+        return nodeList;
+    }
+
+
 
-    PConcat pconcatNode1;
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new230() /* reduce AAst */
     {
-      TypedLinkedList listNode2 = new TypedLinkedList();
-      {}
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAst pastNode1;
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        listNode2 = (LinkedList)nodeArrayList4.get(0);
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
 
-      pconcatNode1 = new AConcat(listNode2);
+        pastNode1 = new AAst(listNode3);
+        }
+	nodeList.add(pastNode1);
+        return nodeList;
     }
-    nodeList.add(pconcatNode1);
-    return nodeList;
-  }
 
-  ArrayList new157() /* reduce AAconcat2Concat */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PConcat pconcatNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new231() /* reduce AAstProd */
     {
-      TypedLinkedList listNode3 = new TypedLinkedList();
-      {
-        TypedLinkedList listNode2 = new TypedLinkedList();
-        listNode2 = (TypedLinkedList)nodeArrayList1.get(0);
-        if(listNode2 != null)
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList4 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList3 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAstProd pastprodNode1;
         {
-          listNode3.addAll(listNode2);
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)nodeArrayList3.get(0);
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
         }
-      }
 
-      pconcatNode1 = new AConcat(listNode3);
+        pastprodNode1 = new AAstProd(tidNode2, listNode4);
+        }
+	nodeList.add(pastprodNode1);
+        return nodeList;
     }
-    nodeList.add(pconcatNode1);
-    return nodeList;
-  }
 
-  ArrayList new158() /* reduce AAunexp1UnExp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PUnExp punexpNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new232() /* reduce AAastalts1AstAlts */
     {
-      PBasic pbasicNode2;
-      Object nullNode3 = null;
-      pbasicNode2 = (PBasic)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      punexpNode1 = new AUnExp(pbasicNode2, null);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PAstAlt pastaltNode1;
+        pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
+	if(pastaltNode1 != null)
+	{
+	  listNode2.add(pastaltNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(punexpNode1);
-    return nodeList;
-  }
 
-  ArrayList new159() /* reduce AAunexp2UnExp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PUnExp punexpNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new233() /* reduce AAastalts2AstAlts */
     {
-      PBasic pbasicNode2;
-      PUnOp punopNode3;
-      pbasicNode2 = (PBasic)nodeArrayList1.get(0);
-      punopNode3 = (PUnOp)nodeArrayList2.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      punexpNode1 = new AUnExp(pbasicNode2, punopNode3);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        PAstAlt pastaltNode1;
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
+        listNode2 = (LinkedList)nodeArrayList2.get(0);
+	if(pastaltNode1 != null)
+	{
+	  listNode3.add(pastaltNode1);
+	}
+	if(listNode2 != null)
+	{
+	  listNode3.addAll(listNode2);
+	}
+        }
+	nodeList.add(listNode3);
+        return nodeList;
     }
-    nodeList.add(punexpNode1);
-    return nodeList;
-  }
 
-  ArrayList new160() /* reduce ACharBasic */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PBasic pbasicNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new234() /* reduce AAstAltsTail */
     {
-      PChar pcharNode2;
-      pcharNode2 = (PChar)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pbasicNode1 = new ACharBasic(pcharNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAstAlt pastaltNode1;
+        pastaltNode1 = (PAstAlt)nodeArrayList2.get(0);
+	nodeList.add(pastaltNode1);
+        return nodeList;
     }
-    nodeList.add(pbasicNode1);
-    return nodeList;
-  }
 
-  ArrayList new161() /* reduce ASetBasic */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PBasic pbasicNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new235() /* reduce AAastalt1AstAlt */
     {
-      PSet psetNode2;
-      psetNode2 = (PSet)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        PAstAlt pastaltNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        }
 
-      pbasicNode1 = new ASetBasic(psetNode2);
+        pastaltNode1 = new AAstAlt(null, listNode3);
+        }
+	nodeList.add(pastaltNode1);
+        return nodeList;
     }
-    nodeList.add(pbasicNode1);
-    return nodeList;
-  }
 
-  ArrayList new162() /* reduce AStringBasic */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PBasic pbasicNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new236() /* reduce AAastalt2AstAlt */
     {
-      TString tstringNode2;
-      tstringNode2 = (TString)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pbasicNode1 = new AStringBasic(tstringNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAstAlt pastaltNode1;
+        {
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        }
+
+        pastaltNode1 = new AAstAlt(tidNode2, listNode3);
+        }
+	nodeList.add(pastaltNode1);
+        return nodeList;
     }
-    nodeList.add(pbasicNode1);
-    return nodeList;
-  }
 
-  ArrayList new163() /* reduce AIdBasic */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PBasic pbasicNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new237() /* reduce AAastalt3AstAlt */
     {
-      TId tidNode2;
-      tidNode2 = (TId)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAstAlt pastaltNode1;
+        {
+            // Block
+        @SuppressWarnings("unused") Object nullNode2 = null;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)nodeArrayList1.get(0);
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
+        }
 
-      pbasicNode1 = new AIdBasic(tidNode2);
+        pastaltNode1 = new AAstAlt(null, listNode4);
+        }
+	nodeList.add(pastaltNode1);
+        return nodeList;
     }
-    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;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new238() /* reduce AAastalt4AstAlt */
     {
-      PRegExp pregexpNode2;
-      pregexpNode2 = (PRegExp)nodeArrayList2.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        PAstAlt pastaltNode1;
+        {
+            // Block
+        TId tidNode2;
+        LinkedList<Object> listNode4 = new LinkedList<Object>();
+        tidNode2 = (TId)nodeArrayList1.get(0);
+        {
+            // Block
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        listNode3 = (LinkedList)nodeArrayList2.get(0);
+	if(listNode3 != null)
+	{
+	  listNode4.addAll(listNode3);
+	}
+        }
 
-      pbasicNode1 = new ARegExpBasic(pregexpNode2);
+        pastaltNode1 = new AAstAlt(tidNode2, listNode4);
+        }
+	nodeList.add(pastaltNode1);
+        return nodeList;
     }
-    nodeList.add(pbasicNode1);
-    return nodeList;
-  }
 
-  ArrayList new165() /* reduce ACharChar */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PChar pcharNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new239() /* reduce ATerminal$PkgNameTail */
     {
-      TChar tcharNode2;
-      tcharNode2 = (TChar)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pcharNode1 = new ACharChar(tcharNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        TPkgId tpkgidNode1;
+        tpkgidNode1 = (TPkgId)nodeArrayList1.get(0);
+	if(tpkgidNode1 != null)
+	{
+	  listNode2.add(tpkgidNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(pcharNode1);
-    return nodeList;
-  }
 
-  ArrayList new166() /* reduce ADecChar */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PChar pcharNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new240() /* reduce ANonTerminal$PkgNameTail */
     {
-      TDecChar tdeccharNode2;
-      tdeccharNode2 = (TDecChar)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pcharNode1 = new ADecChar(tdeccharNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        TPkgId tpkgidNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(pcharNode1);
-    return nodeList;
-  }
 
-  ArrayList new167() /* reduce AHexChar */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PChar pcharNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new241() /* reduce ATerminal$HelperDef */
     {
-      THexChar thexcharNode2;
-      thexcharNode2 = (THexChar)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pcharNode1 = new AHexChar(thexcharNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PHelperDef phelperdefNode1;
+        phelperdefNode1 = (PHelperDef)nodeArrayList1.get(0);
+	if(phelperdefNode1 != null)
+	{
+	  listNode2.add(phelperdefNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    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;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new242() /* reduce ANonTerminal$HelperDef */
     {
-      PBasic pbasicNode2;
-      PBinOp pbinopNode3;
-      PBasic pbasicNode4;
-      pbasicNode2 = (PBasic)nodeArrayList2.get(0);
-      pbinopNode3 = (PBinOp)nodeArrayList3.get(0);
-      pbasicNode4 = (PBasic)nodeArrayList4.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      psetNode1 = new AOperationSet(pbasicNode2, pbinopNode3, pbasicNode4);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PHelperDef phelperdefNode2;
+        listNode1 = (LinkedList)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;
     }
-    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;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new243() /* reduce ATerminal$IdListTail */
     {
-      PChar pcharNode2;
-      PChar pcharNode3;
-      pcharNode2 = (PChar)nodeArrayList2.get(0);
-      pcharNode3 = (PChar)nodeArrayList4.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      psetNode1 = new AIntervalSet(pcharNode2, pcharNode3);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        TId tidNode1;
+        tidNode1 = (TId)nodeArrayList1.get(0);
+	if(tidNode1 != null)
+	{
+	  listNode2.add(tidNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(psetNode1);
-    return nodeList;
-  }
 
-  ArrayList new170() /* reduce AStarUnOp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PUnOp punopNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new244() /* reduce ANonTerminal$IdListTail */
     {
-      TStar tstarNode2;
-      tstarNode2 = (TStar)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      punopNode1 = new AStarUnOp(tstarNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        TId tidNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(punopNode1);
-    return nodeList;
-  }
 
-  ArrayList new171() /* reduce AQMarkUnOp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PUnOp punopNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new245() /* reduce ATerminal$TokenDef */
     {
-      TQMark tqmarkNode2;
-      tqmarkNode2 = (TQMark)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      punopNode1 = new AQMarkUnOp(tqmarkNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PTokenDef ptokendefNode1;
+        ptokendefNode1 = (PTokenDef)nodeArrayList1.get(0);
+	if(ptokendefNode1 != null)
+	{
+	  listNode2.add(ptokendefNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(punopNode1);
-    return nodeList;
-  }
 
-  ArrayList new172() /* reduce APlusUnOp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PUnOp punopNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new246() /* reduce ANonTerminal$TokenDef */
     {
-      TPlus tplusNode2;
-      tplusNode2 = (TPlus)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      punopNode1 = new APlusUnOp(tplusNode2);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PTokenDef ptokendefNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(punopNode1);
-    return nodeList;
-  }
 
-  ArrayList new173() /* reduce APlusBinOp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PBinOp pbinopNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new247() /* reduce ATerminal$StateListTail */
     {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pbinopNode1 = new APlusBinOp();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PStateListTail pstatelisttailNode1;
+        pstatelisttailNode1 = (PStateListTail)nodeArrayList1.get(0);
+	if(pstatelisttailNode1 != null)
+	{
+	  listNode2.add(pstatelisttailNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(pbinopNode1);
-    return nodeList;
-  }
 
-  ArrayList new174() /* reduce AMinusBinOp */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PBinOp pbinopNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new248() /* reduce ANonTerminal$StateListTail */
     {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pbinopNode1 = new AMinusBinOp();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PStateListTail pstatelisttailNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(pbinopNode1);
-    return nodeList;
-  }
 
-  ArrayList new175() /* reduce AProductions */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PProductions pproductionsNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new249() /* reduce ATerminal$RegExpTail */
     {
-      TypedLinkedList listNode3 = new TypedLinkedList();
-      {
-        TypedLinkedList listNode2 = new TypedLinkedList();
-        listNode2 = (TypedLinkedList)nodeArrayList2.get(0);
-        if(listNode2 != null)
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
         {
-          listNode3.addAll(listNode2);
+            // Block
+        PConcat pconcatNode1;
+        pconcatNode1 = (PConcat)nodeArrayList1.get(0);
+	if(pconcatNode1 != null)
+	{
+	  listNode2.add(pconcatNode1);
+	}
         }
-      }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
 
-      pproductionsNode1 = new AProductions(listNode3);
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new250() /* reduce ANonTerminal$RegExpTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PConcat pconcatNode2;
+        listNode1 = (LinkedList)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;
     }
-    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;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new251() /* reduce ATerminal$UnExp */
     {
-      TId tidNode2;
-      Object nullNode3 = null;
-      TypedLinkedList listNode4 = new TypedLinkedList();
-      TypedLinkedList listNode6 = new TypedLinkedList();
-      tidNode2 = (TId)nodeArrayList1.get(0);
-      {}
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      {
-        TypedLinkedList listNode5 = new TypedLinkedList();
-        listNode5 = (TypedLinkedList)nodeArrayList3.get(0);
-        if(listNode5 != null)
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
         {
-          listNode6.addAll(listNode5);
+            // Block
+        PUnExp punexpNode1;
+        punexpNode1 = (PUnExp)nodeArrayList1.get(0);
+	if(punexpNode1 != null)
+	{
+	  listNode2.add(punexpNode1);
+	}
         }
-      }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
 
-      pprodNode1 = new AProd(tidNode2, null, listNode4, listNode6);
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new252() /* reduce ANonTerminal$UnExp */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PUnExp punexpNode2;
+        listNode1 = (LinkedList)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;
     }
-    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)
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new253() /* reduce ATerminal$Prod */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
         {
-          listNode4.addAll(listNode3);
+            // Block
+        PProd pprodNode1;
+        pprodNode1 = (PProd)nodeArrayList1.get(0);
+	if(pprodNode1 != null)
+	{
+	  listNode2.add(pprodNode1);
+	}
         }
-      }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new254() /* reduce ANonTerminal$Prod */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      paltNode1 = new AAlt(tidNode2, listNode4, null);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PProd pprodNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(paltNode1);
-    return nodeList;
-  }
 
-  ArrayList new187() /* reduce AAalt5Alt */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PAlt paltNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new255() /* reduce ATerminal$Elem */
     {
-      Object nullNode2 = null;
-      TypedLinkedList listNode3 = new TypedLinkedList();
-      PAltTransform palttransformNode4;
-      {}
-      palttransformNode4 = (PAltTransform)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      paltNode1 = new AAlt(null, listNode3, palttransformNode4);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PElem pelemNode1;
+        pelemNode1 = (PElem)nodeArrayList1.get(0);
+	if(pelemNode1 != null)
+	{
+	  listNode2.add(pelemNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(paltNode1);
-    return nodeList;
-  }
 
-  ArrayList new188() /* reduce AAalt6Alt */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PAlt paltNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new256() /* reduce ANonTerminal$Elem */
     {
-      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;
-  }
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PElem pelemNode2;
+        listNode1 = (LinkedList)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 new189() /* reduce AAalt7Alt */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PAlt paltNode1;
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new257() /* reduce ATerminal$AltsTail */
     {
-      Object nullNode2 = null;
-      TypedLinkedList listNode4 = new TypedLinkedList();
-      PAltTransform palttransformNode5;
-      {
-        TypedLinkedList listNode3 = new TypedLinkedList();
-        listNode3 = (TypedLinkedList)nodeArrayList1.get(0);
-        if(listNode3 != null)
-        {
-          listNode4.addAll(listNode3);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PAlt paltNode1;
+        paltNode1 = (PAlt)nodeArrayList1.get(0);
+	if(paltNode1 != null)
+	{
+	  listNode2.add(paltNode1);
+	}
         }
-      }
-      palttransformNode5 = (PAltTransform)nodeArrayList2.get(0);
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
 
-      paltNode1 = new AAlt(null, listNode4, palttransformNode5);
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new258() /* reduce ANonTerminal$AltsTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PAlt paltNode2;
+        listNode1 = (LinkedList)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;
     }
-    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;
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new259() /* reduce ATerminal$Term */
     {
-      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;
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PTerm ptermNode1;
+        ptermNode1 = (PTerm)nodeArrayList1.get(0);
+	if(ptermNode1 != null)
+	{
+	  listNode2.add(ptermNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new260() /* reduce ANonTerminal$Term */
     {
-      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)
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
         {
-          listNode4.addAll(listNode3);
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PTerm ptermNode2;
+        listNode1 = (LinkedList)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;
+    }
 
-      ptermNode1 = new AListTerm(tlbktNode2, listNode4);
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new261() /* reduce ATerminal$ListTermTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PListTerm plisttermNode1;
+        plisttermNode1 = (PListTerm)nodeArrayList1.get(0);
+	if(plisttermNode1 != null)
+	{
+	  listNode2.add(plisttermNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(ptermNode1);
-    return nodeList;
-  }
 
-  ArrayList new197() /* reduce AAsimpleterm1Term */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PTerm ptermNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new262() /* reduce ANonTerminal$ListTermTail */
     {
-      Object nullNode2 = null;
-      TId tidNode3;
-      Object nullNode4 = null;
-      tidNode3 = (TId)nodeArrayList1.get(0);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      ptermNode1 = new ASimpleTerm(null, tidNode3, null);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PListTerm plisttermNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(ptermNode1);
-    return nodeList;
-  }
 
-  ArrayList new198() /* reduce AAsimpleterm2Term */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PTerm ptermNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new263() /* reduce ATerminal$ParamsTail */
     {
-      PSpecifier pspecifierNode2;
-      TId tidNode3;
-      Object nullNode4 = null;
-      pspecifierNode2 = (PSpecifier)nodeArrayList1.get(0);
-      tidNode3 = (TId)nodeArrayList2.get(0);
-
-      ptermNode1 = new ASimpleTerm(pspecifierNode2, tidNode3, null);
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PTerm ptermNode1;
+        ptermNode1 = (PTerm)nodeArrayList1.get(0);
+	if(ptermNode1 != null)
+	{
+	  listNode2.add(ptermNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    nodeList.add(ptermNode1);
-    return nodeList;
-  }
 
-  ArrayList new199() /* reduce AAsimpleterm3Term */
-  {
-    ArrayList nodeList = new ArrayList();
 
-    ArrayList nodeArrayList2 = (ArrayList) pop();
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    PTerm ptermNode1;
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new264() /* reduce ANonTerminal$ParamsTail */
     {
-      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);
-        }
-      }
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      pastprodNode1 = new AAstProd(tidNode2, listNode4);
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PTerm ptermNode2;
+        listNode1 = (LinkedList)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;
     }
-    nodeList.add(pastprodNode1);
-    return nodeList;
-  }
-
-  ArrayList new232() /* reduce AAastalts1AstAlts */
-  {
-    ArrayList nodeList = new ArrayList();
-
-    ArrayList nodeArrayList1 = (ArrayList) pop();
-    TypedLinkedList listNode2 = new TypedLinkedList();
+
+
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new265() /* reduce ATerminal$AstProd */
     {
-      PAstAlt pastaltNode1;
-      pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
-      if(pastaltNode1 != null)
-      {
-        listNode2.add(pastaltNode1);
-      }
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PAstProd pastprodNode1;
+        pastprodNode1 = (PAstProd)nodeArrayList1.get(0);
+	if(pastprodNode1 != null)
+	{
+	  listNode2.add(pastprodNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
     }
-    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();
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new266() /* reduce ANonTerminal$AstProd */
     {
-      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);
-      }
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PAstProd pastprodNode2;
+        listNode1 = (LinkedList)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;
     }
-    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();
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new267() /* reduce ATerminal$AstAltsTail */
+    {
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
+
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode2 = new LinkedList<Object>();
+        {
+            // Block
+        PAstAlt pastaltNode1;
+        pastaltNode1 = (PAstAlt)nodeArrayList1.get(0);
+	if(pastaltNode1 != null)
+	{
+	  listNode2.add(pastaltNode1);
+	}
+        }
+	nodeList.add(listNode2);
+        return nodeList;
+    }
+
+
 
-    PAstAlt pastaltNode1;
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    ArrayList<Object> new268() /* reduce ANonTerminal$AstAltsTail */
     {
-      Object nullNode2 = null;
-      TypedLinkedList listNode3 = new TypedLinkedList();
-      {}
+        @SuppressWarnings("hiding") ArrayList<Object> nodeList = new ArrayList<Object>();
 
-      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}, { [...]
-  			{{-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, 3 [...]
-          };*/
-
-  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.");
-    }
-  }
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList2 = pop();
+        @SuppressWarnings("unused") ArrayList<Object> nodeArrayList1 = pop();
+        LinkedList<Object> listNode3 = new LinkedList<Object>();
+        {
+            // Block
+        LinkedList<Object> listNode1 = new LinkedList<Object>();
+        PAstAlt pastaltNode2;
+        listNode1 = (LinkedList)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}, {16 [...]
+			{{-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, [...]
+        };*/
+
+    static 
+    {
+        try
+        {
+            DataInputStream s = new DataInputStream(
+                new BufferedInputStream(
+                Parser.class.getResourceAsStream("parser.dat")));
+
+            // read actionTable
+            int length = s.readInt();
+            Parser.actionTable = new int[length][][];
+            for(int i = 0; i < Parser.actionTable.length; i++)
+            {
+                length = s.readInt();
+                Parser.actionTable[i] = new int[length][3];
+                for(int j = 0; j < Parser.actionTable[i].length; j++)
+                {
+                for(int k = 0; k < 3; k++)
+                {
+                    Parser.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.");
+        }
+    }
 }
diff --git a/src/org/sablecc/sablecc/parser/ParserException.java b/src/org/sablecc/sablecc/parser/ParserException.java
index da9525f..e8ea14c 100644
--- a/src/org/sablecc/sablecc/parser/ParserException.java
+++ b/src/org/sablecc/sablecc/parser/ParserException.java
@@ -4,18 +4,19 @@ package org.sablecc.sablecc.parser;
 
 import org.sablecc.sablecc.node.*;
 
+ at SuppressWarnings("serial")
 public class ParserException extends Exception
 {
-  Token token;
+    private Token token;
 
-  public ParserException(Token token, String  message)
-  {
-    super(message);
-    this.token = token;
-  }
+    public ParserException(@SuppressWarnings("hiding") Token token, String  message)
+    {
+        super(message);
+        this.token = token;
+    }
 
-  public Token getToken()
-  {
-    return token;
-  }
+    public Token getToken()
+    {
+        return this.token;
+    }
 }
diff --git a/src/org/sablecc/sablecc/parser/State.java b/src/org/sablecc/sablecc/parser/State.java
index 1807f8c..2b6fa70 100644
--- a/src/org/sablecc/sablecc/parser/State.java
+++ b/src/org/sablecc/sablecc/parser/State.java
@@ -6,12 +6,12 @@ import java.util.ArrayList;
 
 final class State
 {
-  int state;
-  ArrayList nodes;
+    int state;
+    ArrayList<Object> nodes;
 
-  State(int state, ArrayList nodes)
-  {
-    this.state = state;
-    this.nodes = nodes;
-  }
+    State(@SuppressWarnings("hiding") int state, @SuppressWarnings("hiding") ArrayList<Object> nodes)
+    {
+        this.state = state;
+        this.nodes = nodes;
+    }
 }
diff --git a/src/org/sablecc/sablecc/parser/TokenIndex.java b/src/org/sablecc/sablecc/parser/TokenIndex.java
index 088f948..7c9e180 100644
--- a/src/org/sablecc/sablecc/parser/TokenIndex.java
+++ b/src/org/sablecc/sablecc/parser/TokenIndex.java
@@ -7,200 +7,239 @@ import org.sablecc.sablecc.analysis.*;
 
 class TokenIndex extends AnalysisAdapter
 {
-  int index;
-
-  public void caseTPkgId(TPkgId node)
-  {
-    index = 0;
-  }
-
-  public void caseTPackage(TPackage node)
-  {
-    index = 1;
-  }
-
-  public void caseTStates(TStates node)
-  {
-    index = 2;
-  }
-
-  public void caseTHelpers(THelpers node)
-  {
-    index = 3;
-  }
-
-  public void caseTTokens(TTokens node)
-  {
-    index = 4;
-  }
-
-  public void caseTIgnored(TIgnored node)
-  {
-    index = 5;
-  }
-
-  public void caseTProductions(TProductions node)
-  {
-    index = 6;
-  }
-
-  public void caseTAbstract(TAbstract node)
-  {
-    index = 7;
-  }
-
-  public void caseTSyntax(TSyntax node)
-  {
-    index = 8;
-  }
-
-  public void caseTTree(TTree node)
-  {
-    index = 9;
-  }
-
-  public void caseTNew(TNew node)
-  {
-    index = 10;
-  }
-
-  public void caseTNull(TNull node)
-  {
-    index = 11;
-  }
-
-  public void caseTTokenSpecifier(TTokenSpecifier node)
-  {
-    index = 12;
-  }
-
-  public void caseTProductionSpecifier(TProductionSpecifier node)
-  {
-    index = 13;
-  }
-
-  public void caseTDot(TDot node)
-  {
-    index = 14;
-  }
-
-  public void caseTDDot(TDDot node)
-  {
-    index = 15;
-  }
-
-  public void caseTSemicolon(TSemicolon node)
-  {
-    index = 16;
-  }
-
-  public void caseTEqual(TEqual node)
-  {
-    index = 17;
-  }
-
-  public void caseTLBkt(TLBkt node)
-  {
-    index = 18;
-  }
-
-  public void caseTRBkt(TRBkt node)
-  {
-    index = 19;
-  }
-
-  public void caseTLPar(TLPar node)
-  {
-    index = 20;
-  }
-
-  public void caseTRPar(TRPar node)
-  {
-    index = 21;
-  }
-
-  public void caseTLBrace(TLBrace node)
-  {
-    index = 22;
-  }
-
-  public void caseTRBrace(TRBrace node)
-  {
-    index = 23;
-  }
-
-  public void caseTPlus(TPlus node)
-  {
-    index = 24;
-  }
-
-  public void caseTMinus(TMinus node)
-  {
-    index = 25;
-  }
-
-  public void caseTQMark(TQMark node)
-  {
-    index = 26;
-  }
-
-  public void caseTStar(TStar node)
-  {
-    index = 27;
-  }
-
-  public void caseTBar(TBar node)
-  {
-    index = 28;
-  }
-
-  public void caseTComma(TComma node)
-  {
-    index = 29;
-  }
-
-  public void caseTSlash(TSlash node)
-  {
-    index = 30;
-  }
-
-  public void caseTArrow(TArrow node)
-  {
-    index = 31;
-  }
-
-  public void caseTColon(TColon node)
-  {
-    index = 32;
-  }
-
-  public void caseTId(TId node)
-  {
-    index = 33;
-  }
-
-  public void caseTChar(TChar node)
-  {
-    index = 34;
-  }
-
-  public void caseTDecChar(TDecChar node)
-  {
-    index = 35;
-  }
-
-  public void caseTHexChar(THexChar node)
-  {
-    index = 36;
-  }
-
-  public void caseTString(TString node)
-  {
-    index = 37;
-  }
-
-  public void caseEOF(EOF node)
-  {
-    index = 38;
-  }
+    int index;
+
+    @Override
+    public void caseTPkgId(@SuppressWarnings("unused") TPkgId node)
+    {
+        this.index = 0;
+    }
+
+    @Override
+    public void caseTPackage(@SuppressWarnings("unused") TPackage node)
+    {
+        this.index = 1;
+    }
+
+    @Override
+    public void caseTStates(@SuppressWarnings("unused") TStates node)
+    {
+        this.index = 2;
+    }
+
+    @Override
+    public void caseTHelpers(@SuppressWarnings("unused") THelpers node)
+    {
+        this.index = 3;
+    }
+
+    @Override
+    public void caseTTokens(@SuppressWarnings("unused") TTokens node)
+    {
+        this.index = 4;
+    }
+
+    @Override
+    public void caseTIgnored(@SuppressWarnings("unused") TIgnored node)
+    {
+        this.index = 5;
+    }
+
+    @Override
+    public void caseTProductions(@SuppressWarnings("unused") TProductions node)
+    {
+        this.index = 6;
+    }
+
+    @Override
+    public void caseTAbstract(@SuppressWarnings("unused") TAbstract node)
+    {
+        this.index = 7;
+    }
+
+    @Override
+    public void caseTSyntax(@SuppressWarnings("unused") TSyntax node)
+    {
+        this.index = 8;
+    }
+
+    @Override
+    public void caseTTree(@SuppressWarnings("unused") TTree node)
+    {
+        this.index = 9;
+    }
+
+    @Override
+    public void caseTNew(@SuppressWarnings("unused") TNew node)
+    {
+        this.index = 10;
+    }
+
+    @Override
+    public void caseTNull(@SuppressWarnings("unused") TNull node)
+    {
+        this.index = 11;
+    }
+
+    @Override
+    public void caseTTokenSpecifier(@SuppressWarnings("unused") TTokenSpecifier node)
+    {
+        this.index = 12;
+    }
+
+    @Override
+    public void caseTProductionSpecifier(@SuppressWarnings("unused") TProductionSpecifier node)
+    {
+        this.index = 13;
+    }
+
+    @Override
+    public void caseTDot(@SuppressWarnings("unused") TDot node)
+    {
+        this.index = 14;
+    }
+
+    @Override
+    public void caseTDDot(@SuppressWarnings("unused") TDDot node)
+    {
+        this.index = 15;
+    }
+
+    @Override
+    public void caseTSemicolon(@SuppressWarnings("unused") TSemicolon node)
+    {
+        this.index = 16;
+    }
+
+    @Override
+    public void caseTEqual(@SuppressWarnings("unused") TEqual node)
+    {
+        this.index = 17;
+    }
+
+    @Override
+    public void caseTLBkt(@SuppressWarnings("unused") TLBkt node)
+    {
+        this.index = 18;
+    }
+
+    @Override
+    public void caseTRBkt(@SuppressWarnings("unused") TRBkt node)
+    {
+        this.index = 19;
+    }
+
+    @Override
+    public void caseTLPar(@SuppressWarnings("unused") TLPar node)
+    {
+        this.index = 20;
+    }
+
+    @Override
+    public void caseTRPar(@SuppressWarnings("unused") TRPar node)
+    {
+        this.index = 21;
+    }
+
+    @Override
+    public void caseTLBrace(@SuppressWarnings("unused") TLBrace node)
+    {
+        this.index = 22;
+    }
+
+    @Override
+    public void caseTRBrace(@SuppressWarnings("unused") TRBrace node)
+    {
+        this.index = 23;
+    }
+
+    @Override
+    public void caseTPlus(@SuppressWarnings("unused") TPlus node)
+    {
+        this.index = 24;
+    }
+
+    @Override
+    public void caseTMinus(@SuppressWarnings("unused") TMinus node)
+    {
+        this.index = 25;
+    }
+
+    @Override
+    public void caseTQMark(@SuppressWarnings("unused") TQMark node)
+    {
+        this.index = 26;
+    }
+
+    @Override
+    public void caseTStar(@SuppressWarnings("unused") TStar node)
+    {
+        this.index = 27;
+    }
+
+    @Override
+    public void caseTBar(@SuppressWarnings("unused") TBar node)
+    {
+        this.index = 28;
+    }
+
+    @Override
+    public void caseTComma(@SuppressWarnings("unused") TComma node)
+    {
+        this.index = 29;
+    }
+
+    @Override
+    public void caseTSlash(@SuppressWarnings("unused") TSlash node)
+    {
+        this.index = 30;
+    }
+
+    @Override
+    public void caseTArrow(@SuppressWarnings("unused") TArrow node)
+    {
+        this.index = 31;
+    }
+
+    @Override
+    public void caseTColon(@SuppressWarnings("unused") TColon node)
+    {
+        this.index = 32;
+    }
+
+    @Override
+    public void caseTId(@SuppressWarnings("unused") TId node)
+    {
+        this.index = 33;
+    }
+
+    @Override
+    public void caseTChar(@SuppressWarnings("unused") TChar node)
+    {
+        this.index = 34;
+    }
+
+    @Override
+    public void caseTDecChar(@SuppressWarnings("unused") TDecChar node)
+    {
+        this.index = 35;
+    }
+
+    @Override
+    public void caseTHexChar(@SuppressWarnings("unused") THexChar node)
+    {
+        this.index = 36;
+    }
+
+    @Override
+    public void caseTString(@SuppressWarnings("unused") TString node)
+    {
+        this.index = 37;
+    }
+
+    @Override
+    public void caseEOF(@SuppressWarnings("unused") EOF node)
+    {
+        this.index = 38;
+    }
 }
diff --git a/src/org/sablecc/sablecc/tokens.txt b/src/org/sablecc/sablecc/tokens.txt
index e1fbe0d..b1441c2 100644
--- a/src/org/sablecc/sablecc/tokens.txt
+++ b/src/org/sablecc/sablecc/tokens.txt
@@ -36,6 +36,7 @@ public final class $2$ extends Token
       return new $2$(getText(), getLine(), getPos());
     }
 
+    @Override
     public void apply(Switch sw)
     {
         ((Analysis) sw).case$2$(this);
@@ -76,6 +77,7 @@ public final class $2$ extends Token
       return new $2$(getLine(), getPos());
     }
 
+    @Override
     public void apply(Switch sw)
     {
         ((Analysis) sw).case$2$(this);
diff --git a/src/org/sablecc/sablecc/utils.txt b/src/org/sablecc/sablecc/utils.txt
index b55c582..bf8a7fb 100644
--- a/src/org/sablecc/sablecc/utils.txt
+++ b/src/org/sablecc/sablecc/utils.txt
@@ -39,6 +39,7 @@ public final class Start extends Node
             cloneNode(this._eof_));
     }
 
+    @Override
     public void apply(Switch sw)
     {
         ((Analysis) sw).caseStart(this);
@@ -169,6 +170,7 @@ public final class EOF extends Token
         return new EOF(getLine(), getPos());
     }
 
+    @Override
     public void apply(Switch sw)
     {
         ((Analysis) sw).caseEOF(this);
@@ -177,6 +179,43 @@ public final class EOF extends Token
 
 $
 
+Macro:InvalidToken
+/* This file was generated by SableCC (http://www.sablecc.org/). */
+
+package $0$;
+
+import $1$.*;
+
+ at SuppressWarnings("nls")
+public final class InvalidToken extends Token
+{
+    public InvalidToken(String text)
+    {
+        setText(text);
+    }
+
+    public InvalidToken(String text, int line, int pos)
+    {
+        setText(text);
+        setLine(line);
+        setPos(pos);
+    }
+
+    @Override
+    public Object clone()
+    {
+        return new InvalidToken(getText(), getLine(), getPos());
+    }
+
+    @Override
+    public void apply(Switch sw)
+    {
+        ((Analysis) sw).caseInvalidToken(this);
+    }
+}
+
+$
+
 Macro:Token
 /* This file was generated by SableCC (http://www.sablecc.org/). */
 
@@ -283,11 +322,11 @@ public abstract class Node implements Switchable, Cloneable
         return "";
     }
 
-    protected String toString(List list)
+    protected String toString(List<?> list)
     {
         StringBuffer s = new StringBuffer();
 
-        for(Iterator i = list.iterator(); i.hasNext();)
+        for(Iterator<?> i = list.iterator(); i.hasNext();)
         {
             s.append(i.next());
         }
@@ -306,13 +345,14 @@ public abstract class Node implements Switchable, Cloneable
         return null;
     }
 
-    protected <T> List<T> cloneList(List<T> list)
+    @SuppressWarnings("unchecked")
+    protected <T extends Node> List<T> cloneList(List<T> list)
     {
         List<T> clone = new LinkedList<T>();
 
         for(T n : list)
         {
-            clone.add(n);
+            clone.add((T) n.clone());
         }
 
         return clone;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/sablecc.git



More information about the pkg-java-commits mailing list