gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r2969 - in freeway: . bin contrib lib native src/org/gnu/fr


From: mdonoughe
Subject: [GNUnet-SVN] r2969 - in freeway: . bin contrib lib native src/org/gnu/freeway src/org/gnu/freeway/cwrappers/util src/org/gnu/freeway/server src/org/gnu/freeway/support src/org/gnu/freeway/support/javaparser src/org/gnu/freeway/support/visitors
Date: Wed, 7 Jun 2006 21:57:40 -0700 (PDT)

Author: mdonoughe
Date: 2006-06-07 21:56:56 -0700 (Wed, 07 Jun 2006)
New Revision: 2969

Added:
   freeway/bin/
   freeway/bin/README
   freeway/bin/javacc
   freeway/bin/jjdoc
   freeway/bin/jtb
   freeway/bin/makeParser.sh
   freeway/contrib/
   freeway/contrib/java-1.2.jj
   freeway/contrib/java-1.2.oo
   freeway/lib/javacc.jar
   freeway/lib/javacc.jar-license
   freeway/lib/jtb.jar
   freeway/src/org/gnu/freeway/support/
   freeway/src/org/gnu/freeway/support/javaparser/
   freeway/src/org/gnu/freeway/support/javaparser/AdditiveExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/AllocationExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/AndExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/ArgumentList.java
   freeway/src/org/gnu/freeway/support/javaparser/Arguments.java
   freeway/src/org/gnu/freeway/support/javaparser/ArrayDimsAndInits.java
   freeway/src/org/gnu/freeway/support/javaparser/ArrayInitializer.java
   freeway/src/org/gnu/freeway/support/javaparser/AssignmentOperator.java
   freeway/src/org/gnu/freeway/support/javaparser/Block.java
   freeway/src/org/gnu/freeway/support/javaparser/BlockStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/BooleanLiteral.java
   freeway/src/org/gnu/freeway/support/javaparser/BreakStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/CastExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/CastLookahead.java
   freeway/src/org/gnu/freeway/support/javaparser/ClassBody.java
   freeway/src/org/gnu/freeway/support/javaparser/ClassBodyDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/ClassDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/CompilationUnit.java
   freeway/src/org/gnu/freeway/support/javaparser/ConditionalAndExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/ConditionalExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/ConditionalOrExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/ConstructorDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/ContinueStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/DoStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/EmptyStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/EqualityExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/ExclusiveOrExpression.java
   
freeway/src/org/gnu/freeway/support/javaparser/ExplicitConstructorInvocation.java
   freeway/src/org/gnu/freeway/support/javaparser/Expression.java
   freeway/src/org/gnu/freeway/support/javaparser/FieldDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/ForInit.java
   freeway/src/org/gnu/freeway/support/javaparser/ForStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/ForUpdate.java
   freeway/src/org/gnu/freeway/support/javaparser/FormalParameter.java
   freeway/src/org/gnu/freeway/support/javaparser/FormalParameters.java
   freeway/src/org/gnu/freeway/support/javaparser/IfStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/ImportDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/InclusiveOrExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/Initializer.java
   freeway/src/org/gnu/freeway/support/javaparser/InstanceOfExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/InterfaceDeclaration.java
   
freeway/src/org/gnu/freeway/support/javaparser/InterfaceMemberDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/JavaCharStream.java
   freeway/src/org/gnu/freeway/support/javaparser/JavaParser.java
   freeway/src/org/gnu/freeway/support/javaparser/JavaParserConstants.java
   freeway/src/org/gnu/freeway/support/javaparser/JavaParserTokenManager.java
   freeway/src/org/gnu/freeway/support/javaparser/LabeledStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/Literal.java
   freeway/src/org/gnu/freeway/support/javaparser/LocalVariableDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/MethodDeclaration.java
   
freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarationLookahead.java
   freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarator.java
   freeway/src/org/gnu/freeway/support/javaparser/MultiplicativeExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/Name.java
   freeway/src/org/gnu/freeway/support/javaparser/NameList.java
   freeway/src/org/gnu/freeway/support/javaparser/NestedClassDeclaration.java
   
freeway/src/org/gnu/freeway/support/javaparser/NestedInterfaceDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/Node.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeChoice.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeList.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeListInterface.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeListOptional.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeOptional.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeSequence.java
   freeway/src/org/gnu/freeway/support/javaparser/NodeToken.java
   freeway/src/org/gnu/freeway/support/javaparser/NullLiteral.java
   freeway/src/org/gnu/freeway/support/javaparser/PackageDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/ParseException.java
   freeway/src/org/gnu/freeway/support/javaparser/PostfixExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/PreDecrementExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/PreIncrementExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/PrimaryExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/PrimaryPrefix.java
   freeway/src/org/gnu/freeway/support/javaparser/PrimarySuffix.java
   freeway/src/org/gnu/freeway/support/javaparser/PrimitiveType.java
   freeway/src/org/gnu/freeway/support/javaparser/RelationalExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/ResultType.java
   freeway/src/org/gnu/freeway/support/javaparser/ReturnStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/ShiftExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/Statement.java
   freeway/src/org/gnu/freeway/support/javaparser/StatementExpression.java
   freeway/src/org/gnu/freeway/support/javaparser/StatementExpressionList.java
   freeway/src/org/gnu/freeway/support/javaparser/SwitchLabel.java
   freeway/src/org/gnu/freeway/support/javaparser/SwitchStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/SynchronizedStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/ThrowStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/Token.java
   freeway/src/org/gnu/freeway/support/javaparser/TokenMgrError.java
   freeway/src/org/gnu/freeway/support/javaparser/TryStatement.java
   freeway/src/org/gnu/freeway/support/javaparser/Type.java
   freeway/src/org/gnu/freeway/support/javaparser/TypeDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/UnaryExpression.java
   
freeway/src/org/gnu/freeway/support/javaparser/UnaryExpressionNotPlusMinus.java
   
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedClassDeclaration.java
   
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedInterfaceDeclaration.java
   freeway/src/org/gnu/freeway/support/javaparser/VariableDeclarator.java
   freeway/src/org/gnu/freeway/support/javaparser/VariableDeclaratorId.java
   freeway/src/org/gnu/freeway/support/javaparser/VariableInitializer.java
   freeway/src/org/gnu/freeway/support/javaparser/WhileStatement.java
   freeway/src/org/gnu/freeway/support/visitors/
   freeway/src/org/gnu/freeway/support/visitors/DepthFirstVisitor.java
   freeway/src/org/gnu/freeway/support/visitors/ObjectDepthFirst.java
   freeway/src/org/gnu/freeway/support/visitors/ObjectVisitor.java
   freeway/src/org/gnu/freeway/support/visitors/Visitor.java
Modified:
   freeway/native/org_gnu_freeway_server_CPluginLoader.c
   freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
   freeway/src/org/gnu/freeway/server/CoreAPI.java
Log:
added a Java parser, but it isn't used yet.


Added: freeway/bin/README
===================================================================
--- freeway/bin/README  2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/bin/README  2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1 @@
+javacc, jjdoc, and jtb are used for the Java source parser that 
SwitchTableGenerator uses. Just run makeParser.sh and it will do all the work.
\ No newline at end of file

Added: freeway/bin/javacc
===================================================================
--- freeway/bin/javacc  2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/bin/javacc  2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec java -classpath $MAINDIR/lib/javacc.jar javacc "$@"


Property changes on: freeway/bin/javacc
___________________________________________________________________
Name: svn:executable
   + *

Added: freeway/bin/jjdoc
===================================================================
--- freeway/bin/jjdoc   2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/bin/jjdoc   2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,3 @@
+#!/bin/sh
+JAR=$MAINDIR/lib/javacc.jar
+java -classpath $JAR jjdoc "$@"


Property changes on: freeway/bin/jjdoc
___________________________________________________________________
Name: svn:executable
   + *

Added: freeway/bin/jtb
===================================================================
--- freeway/bin/jtb     2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/bin/jtb     2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec java -classpath $MAINDIR/lib/jtb.jar -Dinstall.root=$MAINDIR/lib/ 
EDU/purdue/jtb/JTB "$@"


Property changes on: freeway/bin/jtb
___________________________________________________________________
Name: svn:executable
   + *

Added: freeway/bin/makeParser.sh
===================================================================
--- freeway/bin/makeParser.sh   2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/bin/makeParser.sh   2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,16 @@
+#!/bin/bash
+export MAINDIR=`pwd`
+export PATH=${MAINDIR}/bin:$PATH
+
+cd ${MAINDIR}/src/org/gnu/freeway/support
+jtb -r -jd -np org.gnu.freeway.support.javaparser -vp 
org.gnu.freeway.support.javaparser.visitors -o ${MAINDIR}/contrib/java-1.2.oo 
${MAINDIR}/contrib/java-1.2.jj
+cd ${MAINDIR}/src/org/gnu/freeway/support/javaparser
+javacc -STATIC=false ${MAINDIR}/contrib/java-1.2.oo
+echo package org.gnu.freeway.support.javaparser\; > PACKAGE
+for n in *.java
+do
+       mv $n $n-away
+       cat PACKAGE $n-away > $n
+       rm $n-away
+done
+rm PACKAGE

Added: freeway/contrib/java-1.2.jj
===================================================================
--- freeway/contrib/java-1.2.jj 2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/contrib/java-1.2.jj 2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,1129 @@
+/**
+ * This file is a modified version of one originally found in the
+ * JavaGrammars Examples directory of JavaCC1_1. It has been
+ * modified to accept Java source code for Java 1.2. Basically,
+ * this means a new key word was added, 'strictfp', and that keyword
+ * added to the appropriate productions and LOOKAHEADs (where other,
+ * similar keywords are listed as possible choices). This involved
+ * changing 11 lines.
+ *
+ * Minor changes were also made to the main program for testing.
+ *
+ * The goal of this effort was for the grammar to be able to parse
+ * any legal Java 1.2 source code. It does not reject all illegal
+ * cases, but neither did the original. Plus, when it comes to
+ * the new 'strictfp' keyword, the Java Compiler from Sun (JDK1.2.1)
+ * also does not reject all illegal cases, as defined by the
+ * "Updates" document found at
+ *       http://java.sun.com/docs/books/jls/strictfp-changes.pdf
+ * (see the testcases.txt file for details).
+ *
+ * David Williams, 7/99
+ * ===================================================================
+ *
+ *
+ * Copyright (C) 1996, 1997 Sun Microsystems Inc.
+ *
+ * Use of this file and the system it is part of is constrained by the
+ * file COPYRIGHT in the root directory of this system.  You may, however,
+ * make any modifications you wish to this file.
+ *
+ * Java files generated by running JavaCC on this file (or modified versions
+ * of this file) may be used in exactly the same manner as Java files
+ * generated from any grammar developed by you.
+ *
+ * Author: Sriram Sankar
+ * Date: 3/5/97
+ *
+ * This file contains a Java grammar and actions that implement a front-end.
+ *
+ */
+
+options {
+  JAVA_UNICODE_ESCAPE = true;
+}
+
+PARSER_BEGIN(JavaParser)
+
+public class JavaParser
+{
+// modified main. DW, 7/99
+    public static void main (String [] args) {
+        JavaParser parser;
+        String filename = null;
+        long initTime = 0;
+        long parseTime = 0;
+        long startTime = 0;
+        long stopTime = 0;
+        if (args.length == 0)
+        {
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Reading from standard input . . .");
+            parser = new JavaParser(System.in);
+        } else if (args.length == 1)
+        {
+            filename = args[0];
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Reading from file " + filename + " . . .");
+            try
+            {
+                startTime = System.currentTimeMillis();
+                parser = new JavaParser(new java.io.FileInputStream(filename));
+                stopTime = System.currentTimeMillis();
+                initTime = stopTime - startTime;
+            } catch (java.io.FileNotFoundException e)
+            {
+                System.out.println("Java Parser Version 1.1 (for Java1.2 
code):  File " + filename + " not found.");
+                return;
+            }
+        } else
+        {
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Usage is one of:");
+            System.out.println("         java JavaParser < inputfile");
+            System.out.println("OR");
+            System.out.println("         java JavaParser inputfile");
+            return;
+        }
+        try
+        {
+            startTime = System.currentTimeMillis();
+            parser.CompilationUnit();
+            stopTime = System.currentTimeMillis();
+            parseTime = stopTime - startTime;
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code): ");
+            System.out.println("   Java program parsed " + filename + " 
successfully in " + (initTime + parseTime) + " ms.");
+            System.out.println("      parser initialization time was " + 
initTime + " ms.");
+            System.out.println("      parser parse time was " + parseTime + " 
ms.");
+        } catch (ParseException e)
+        {
+            System.out.println(e.getMessage());
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Encountered errors during parse.");
+        }
+    }
+
+}
+
+PARSER_END(JavaParser)
+
+
+/* WHITE SPACE */
+
+SKIP :
+{
+  " "
+| "\t"
+| "\n"
+| "\r"
+| "\f"
+}
+
+/* COMMENTS */
+
+MORE :
+{
+  "//" : IN_SINGLE_LINE_COMMENT
+|
+  <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT
+|
+  "/*" : IN_MULTI_LINE_COMMENT
+}
+
+<IN_SINGLE_LINE_COMMENT>
+SPECIAL_TOKEN :
+{
+  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" > : DEFAULT
+}
+
+<IN_FORMAL_COMMENT>
+SPECIAL_TOKEN :
+{
+  <FORMAL_COMMENT: "*/" > : DEFAULT
+}
+
+<IN_MULTI_LINE_COMMENT>
+SPECIAL_TOKEN :
+{
+  <MULTI_LINE_COMMENT: "*/" > : DEFAULT
+}
+
+<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>
+MORE :
+{
+  < ~[] >
+}
+
+/* RESERVED WORDS AND LITERALS */
+
+TOKEN :
+{
+  < ABSTRACT: "abstract" >
+| < BOOLEAN: "boolean" >
+| < BREAK: "break" >
+| < BYTE: "byte" >
+| < CASE: "case" >
+| < CATCH: "catch" >
+| < CHAR: "char" >
+| < CLASS: "class" >
+| < CONST: "const" >
+| < CONTINUE: "continue" >
+| < _DEFAULT: "default" >
+| < DO: "do" >
+| < DOUBLE: "double" >
+| < ELSE: "else" >
+| < EXTENDS: "extends" >
+| < FALSE: "false" >
+| < FINAL: "final" >
+| < FINALLY: "finally" >
+| < FLOAT: "float" >
+| < FOR: "for" >
+| < GOTO: "goto" >
+| < IF: "if" >
+| < IMPLEMENTS: "implements" >
+| < IMPORT: "import" >
+| < INSTANCEOF: "instanceof" >
+| < INT: "int" >
+| < INTERFACE: "interface" >
+| < LONG: "long" >
+| < NATIVE: "native" >
+| < NEW: "new" >
+| < NULL: "null" >
+| < PACKAGE: "package">
+| < PRIVATE: "private" >
+| < PROTECTED: "protected" >
+| < PUBLIC: "public" >
+| < RETURN: "return" >
+| < SHORT: "short" >
+| < STATIC: "static" >
+| < SUPER: "super" >
+| < SWITCH: "switch" >
+| < SYNCHRONIZED: "synchronized" >
+| < THIS: "this" >
+| < THROW: "throw" >
+| < THROWS: "throws" >
+| < TRANSIENT: "transient" >
+| < TRUE: "true" >
+| < TRY: "try" >
+| < VOID: "void" >
+| < VOLATILE: "volatile" >
+| < WHILE: "while" >
+| < STRICTFP: "strictfp" >
+}
+
+/* LITERALS */
+
+TOKEN :
+{
+  < INTEGER_LITERAL:
+        <DECIMAL_LITERAL> (["l","L"])?
+      | <HEX_LITERAL> (["l","L"])?
+      | <OCTAL_LITERAL> (["l","L"])?
+  >
+|
+  < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
+|
+  < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
+|
+  < #OCTAL_LITERAL: "0" (["0"-"7"])* >
+|
+  < FLOATING_POINT_LITERAL:
+        (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
+      | "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
+      | (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
+      | (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
+  >
+|
+  < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
+|
+  < CHARACTER_LITERAL:
+      "'"
+      (   (~["'","\\","\n","\r"])
+        | ("\\"
+            ( ["n","t","b","r","f","\\","'","\""]
+            | ["0"-"7"] ( ["0"-"7"] )?
+            | ["0"-"3"] ["0"-"7"] ["0"-"7"]
+            )
+          )
+      )
+      "'"
+  >
+|
+  < STRING_LITERAL:
+      "\""
+      (   (~["\"","\\","\n","\r"])
+        | ("\\"
+            ( ["n","t","b","r","f","\\","'","\""]
+            | ["0"-"7"] ( ["0"-"7"] )?
+            | ["0"-"3"] ["0"-"7"] ["0"-"7"]
+            )
+          )
+      )*
+      "\""
+  >
+}
+
+/* IDENTIFIERS */
+
+TOKEN :
+{
+  < IDENTIFIER: <LETTER> (<LETTER>|<DIGIT>)* >
+|
+  < #LETTER:
+      [
+       "\u0024",
+       "\u0041"-"\u005a",
+       "\u005f",
+       "\u0061"-"\u007a",
+       "\u00c0"-"\u00d6",
+       "\u00d8"-"\u00f6",
+       "\u00f8"-"\u00ff",
+       "\u0100"-"\u1fff",
+       "\u3040"-"\u318f",
+       "\u3300"-"\u337f",
+       "\u3400"-"\u3d2d",
+       "\u4e00"-"\u9fff",
+       "\uf900"-"\ufaff"
+      ]
+  >
+|
+  < #DIGIT:
+      [
+       "\u0030"-"\u0039",
+       "\u0660"-"\u0669",
+       "\u06f0"-"\u06f9",
+       "\u0966"-"\u096f",
+       "\u09e6"-"\u09ef",
+       "\u0a66"-"\u0a6f",
+       "\u0ae6"-"\u0aef",
+       "\u0b66"-"\u0b6f",
+       "\u0be7"-"\u0bef",
+       "\u0c66"-"\u0c6f",
+       "\u0ce6"-"\u0cef",
+       "\u0d66"-"\u0d6f",
+       "\u0e50"-"\u0e59",
+       "\u0ed0"-"\u0ed9",
+       "\u1040"-"\u1049"
+      ]
+  >
+}
+
+/* SEPARATORS */
+
+TOKEN :
+{
+  < LPAREN: "(" >
+| < RPAREN: ")" >
+| < LBRACE: "{" >
+| < RBRACE: "}" >
+| < LBRACKET: "[" >
+| < RBRACKET: "]" >
+| < SEMICOLON: ";" >
+| < COMMA: "," >
+| < DOT: "." >
+}
+
+/* OPERATORS */
+
+TOKEN :
+{
+  < ASSIGN: "=" >
+| < GT: ">" >
+| < LT: "<" >
+| < BANG: "!" >
+| < TILDE: "~" >
+| < HOOK: "?" >
+| < COLON: ":" >
+| < EQ: "==" >
+| < LE: "<=" >
+| < GE: ">=" >
+| < NE: "!=" >
+| < SC_OR: "||" >
+| < SC_AND: "&&" >
+| < INCR: "++" >
+| < DECR: "--" >
+| < PLUS: "+" >
+| < MINUS: "-" >
+| < STAR: "*" >
+| < SLASH: "/" >
+| < BIT_AND: "&" >
+| < BIT_OR: "|" >
+| < XOR: "^" >
+| < REM: "%" >
+| < LSHIFT: "<<" >
+| < RSIGNEDSHIFT: ">>" >
+| < RUNSIGNEDSHIFT: ">>>" >
+| < PLUSASSIGN: "+=" >
+| < MINUSASSIGN: "-=" >
+| < STARASSIGN: "*=" >
+| < SLASHASSIGN: "/=" >
+| < ANDASSIGN: "&=" >
+| < ORASSIGN: "|=" >
+| < XORASSIGN: "^=" >
+| < REMASSIGN: "%=" >
+| < LSHIFTASSIGN: "<<=" >
+| < RSIGNEDSHIFTASSIGN: ">>=" >
+| < RUNSIGNEDSHIFTASSIGN: ">>>=" >
+}
+
+
+/*****************************************
+ * THE JAVA LANGUAGE GRAMMAR STARTS HERE *
+ *****************************************/
+
+/*
+ * Program structuring syntax follows.
+ */
+
+void CompilationUnit() :
+{}
+{
+  [ PackageDeclaration() ]
+  ( ImportDeclaration() )*
+  ( TypeDeclaration() )*
+  <EOF>
+}
+
+void PackageDeclaration() :
+{}
+{
+  "package" Name() ";"
+}
+
+void ImportDeclaration() :
+{}
+{
+  "import" Name() [ "." "*" ] ";"
+}
+
+void TypeDeclaration() :
+{}
+{
+  LOOKAHEAD( ( "abstract" | "final" | "public" | "strictfp" )* "class" )
+  ClassDeclaration()
+|
+  InterfaceDeclaration()
+|
+  ";"
+}
+
+
+/*
+ * Declaration syntax follows.
+ */
+
+void ClassDeclaration() :
+{}
+{
+  ( "abstract" | "final" | "public" | "strictfp")*
+  UnmodifiedClassDeclaration()
+}
+
+void UnmodifiedClassDeclaration() :
+{}
+{
+  "class" <IDENTIFIER> [ "extends" Name() ] [ "implements" NameList() ]
+  ClassBody()
+}
+
+void ClassBody() :
+{}
+{
+  "{" ( ClassBodyDeclaration() )* "}"
+}
+
+void NestedClassDeclaration() :
+{}
+{
+  ( "static" | "abstract" | "final" | "public" | "protected" | "private" | 
"strictfp")*
+  UnmodifiedClassDeclaration()(";")?
+}
+
+void ClassBodyDeclaration() :
+{}
+{
+  LOOKAHEAD(2)
+  Initializer()
+|
+  LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp")* "class" )
+  NestedClassDeclaration()
+|
+  LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp")* "interface" )
+  NestedInterfaceDeclaration()
+|
+  LOOKAHEAD( [ "public" | "protected" | "private" ] Name() "(" )
+  ConstructorDeclaration()
+|
+  LOOKAHEAD( MethodDeclarationLookahead() )
+  MethodDeclaration()
+|
+  FieldDeclaration()
+}
+
+// This production is to determine lookahead only.
+void MethodDeclarationLookahead() :
+{}
+{
+  ( "public" | "protected" | "private" | "static" | "abstract" | "final" | 
"native" | "synchronized" | "strictfp")*
+  ResultType() <IDENTIFIER> "("
+}
+
+void InterfaceDeclaration() :
+{}
+{
+  ( "abstract" | "public" | "strictfp")*
+  UnmodifiedInterfaceDeclaration()
+}
+
+void NestedInterfaceDeclaration() :
+{}
+{
+  ( "static" | "abstract" | "final" | "public" | "protected" | "private" | 
"strictfp")*
+  UnmodifiedInterfaceDeclaration()
+}
+
+void UnmodifiedInterfaceDeclaration() :
+{}
+{
+  "interface" <IDENTIFIER> [ "extends" NameList() ]
+  "{" ( InterfaceMemberDeclaration() )* "}"
+}
+
+void InterfaceMemberDeclaration() :
+{}
+{
+  LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp")* "class" )
+  NestedClassDeclaration()
+|
+  LOOKAHEAD( ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp")* "interface" )
+  NestedInterfaceDeclaration()
+|
+  LOOKAHEAD( MethodDeclarationLookahead() )
+  MethodDeclaration()
+|
+  FieldDeclaration()
+}
+
+void FieldDeclaration() :
+{}
+{
+  ( "public" | "protected" | "private" | "static" | "final" | "transient" | 
"volatile" )*
+  Type() VariableDeclarator() ( "," VariableDeclarator() )* ";"
+}
+
+void VariableDeclarator() :
+{}
+{
+  VariableDeclaratorId() [ "=" VariableInitializer() ]
+}
+
+void VariableDeclaratorId() :
+{}
+{
+  <IDENTIFIER> ( "[" "]" )*
+}
+
+void VariableInitializer() :
+{}
+{
+  ArrayInitializer()
+|
+  Expression()
+}
+
+void ArrayInitializer() :
+{}
+{
+  "{" [ VariableInitializer() ( LOOKAHEAD(2) "," VariableInitializer() )* ] [ 
"," ] "}"
+}
+
+void MethodDeclaration() :
+{}
+{
+  ( "public" | "protected" | "private" | "static" | "abstract" | "final" | 
"native" | "synchronized" | "strictfp")*
+  ResultType() MethodDeclarator() [ "throws" NameList() ]
+  ( Block() | ";" )(";")?
+}
+
+void MethodDeclarator() :
+{}
+{
+  <IDENTIFIER> FormalParameters() ( "[" "]" )*
+}
+
+void FormalParameters() :
+{}
+{
+  "(" [ FormalParameter() ( "," FormalParameter() )* ] ")"
+}
+
+void FormalParameter() :
+{}
+{
+  [ "final" ] Type() VariableDeclaratorId()
+}
+
+void ConstructorDeclaration() :
+{}
+{
+  [ "public" | "protected" | "private" ]
+  <IDENTIFIER> FormalParameters() [ "throws" NameList() ]
+  "{"
+    [ LOOKAHEAD(ExplicitConstructorInvocation()) 
ExplicitConstructorInvocation() ]
+    ( BlockStatement() )*
+  "}"
+}
+
+void ExplicitConstructorInvocation() :
+{}
+{
+  LOOKAHEAD("this" Arguments() ";")
+  "this" Arguments() ";"
+|
+  [ LOOKAHEAD(2) PrimaryExpression() "." ] "super" Arguments() ";"
+}
+
+void Initializer() :
+{}
+{
+  [ "static" ] Block()
+}
+
+
+/*
+ * Type, name and expression syntax follows.
+ */
+
+void Type() :
+{}
+{
+  ( PrimitiveType() | Name() ) ( "[" "]" )*
+}
+
+void PrimitiveType() :
+{}
+{
+  "boolean"
+|
+  "char"
+|
+  "byte"
+|
+  "short"
+|
+  "int"
+|
+  "long"
+|
+  "float"
+|
+  "double"
+}
+
+void ResultType() :
+{}
+{
+  "void"
+|
+  Type()
+}
+
+void Name() :
+/*
+ * A lookahead of 2 is required below since "Name" can be followed
+ * by a ".*" when used in the context of an "ImportDeclaration".
+ */
+{}
+{
+  <IDENTIFIER>
+  ( LOOKAHEAD(2) "." <IDENTIFIER>
+  )*
+}
+
+void NameList() :
+{}
+{
+  Name()
+  ( "," Name()
+  )*
+}
+
+
+/*
+ * Expression syntax follows.
+ */
+
+void Expression() :
+/*
+ * This expansion has been written this way instead of:
+ *   Assignment() | ConditionalExpression()
+ * for performance reasons.
+ * However, it is a weakening of the grammar for it allows the LHS of
+ * assignments to be any conditional expression whereas it can only be
+ * a primary expression.  Consider adding a semantic predicate to work
+ * around this.
+ */
+{}
+{
+  ConditionalExpression()
+  [
+    AssignmentOperator() Expression()
+  ]
+}
+
+void AssignmentOperator() :
+{}
+{
+  "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | 
"^=" | "|="
+}
+
+void ConditionalExpression() :
+{}
+{
+  ConditionalOrExpression() [ "?" Expression() ":" ConditionalExpression() ]
+}
+
+void ConditionalOrExpression() :
+{}
+{
+  ConditionalAndExpression() ( "||" ConditionalAndExpression() )*
+}
+
+void ConditionalAndExpression() :
+{}
+{
+  InclusiveOrExpression() ( "&&" InclusiveOrExpression() )*
+}
+
+void InclusiveOrExpression() :
+{}
+{
+  ExclusiveOrExpression() ( "|" ExclusiveOrExpression() )*
+}
+
+void ExclusiveOrExpression() :
+{}
+{
+  AndExpression() ( "^" AndExpression() )*
+}
+
+void AndExpression() :
+{}
+{
+  EqualityExpression() ( "&" EqualityExpression() )*
+}
+
+void EqualityExpression() :
+{}
+{
+  InstanceOfExpression() ( ( "==" | "!=" ) InstanceOfExpression() )*
+}
+
+void InstanceOfExpression() :
+{}
+{
+  RelationalExpression() [ "instanceof" Type() ]
+}
+
+void RelationalExpression() :
+{}
+{
+  ShiftExpression() ( ( "<" | ">" | "<=" | ">=" ) ShiftExpression() )*
+}
+
+void ShiftExpression() :
+{}
+{
+  AdditiveExpression() ( ( "<<" | ">>" | ">>>" ) AdditiveExpression() )*
+}
+
+void AdditiveExpression() :
+{}
+{
+  MultiplicativeExpression() ( ( "+" | "-" ) MultiplicativeExpression() )*
+}
+
+void MultiplicativeExpression() :
+{}
+{
+  UnaryExpression() ( ( "*" | "/" | "%" ) UnaryExpression() )*
+}
+
+void UnaryExpression() :
+{}
+{
+  ( "+" | "-" ) UnaryExpression()
+|
+  PreIncrementExpression()
+|
+  PreDecrementExpression()
+|
+  UnaryExpressionNotPlusMinus()
+}
+
+void PreIncrementExpression() :
+{}
+{
+  "++" PrimaryExpression()
+}
+
+void PreDecrementExpression() :
+{}
+{
+  "--" PrimaryExpression()
+}
+
+void UnaryExpressionNotPlusMinus() :
+{}
+{
+  ( "~" | "!" ) UnaryExpression()
+|
+  LOOKAHEAD( CastLookahead() )
+  CastExpression()
+|
+  PostfixExpression()
+}
+
+// This production is to determine lookahead only.  The LOOKAHEAD 
specifications
+// below are not used, but they are there just to indicate that we know about
+// this.
+void CastLookahead() :
+{}
+{
+  LOOKAHEAD(2)
+  "(" PrimitiveType()
+|
+  LOOKAHEAD("(" Name() "[")
+  "(" Name() "[" "]"
+|
+  "(" Name() ")" ( "~" | "!" | "(" | <IDENTIFIER> | "this" | "super" | "new" | 
Literal() )
+}
+
+void PostfixExpression() :
+{}
+{
+  PrimaryExpression() [ "++" | "--" ]
+}
+
+void CastExpression() :
+{}
+{
+  LOOKAHEAD("(" PrimitiveType())
+  "(" Type() ")" UnaryExpression()
+|
+  "(" Type() ")" UnaryExpressionNotPlusMinus()
+}
+
+void PrimaryExpression() :
+{}
+{
+  PrimaryPrefix() ( LOOKAHEAD(2) PrimarySuffix() )*
+}
+
+void PrimaryPrefix() :
+{}
+{
+  Literal()
+|
+  "this"
+|
+  "super" "." <IDENTIFIER>
+|
+  "(" Expression() ")"
+|
+  AllocationExpression()
+|
+  LOOKAHEAD( ResultType() "." "class" )
+  ResultType() "." "class"
+|
+  Name()
+}
+
+void PrimarySuffix() :
+{}
+{
+  LOOKAHEAD(2)
+  "." "this"
+|
+  LOOKAHEAD(2)
+  "." AllocationExpression()
+|
+  "[" Expression() "]"
+|
+  "." <IDENTIFIER>
+|
+  Arguments()
+}
+
+void Literal() :
+{}
+{
+  <INTEGER_LITERAL>
+|
+  <FLOATING_POINT_LITERAL>
+|
+  <CHARACTER_LITERAL>
+|
+  <STRING_LITERAL>
+|
+  BooleanLiteral()
+|
+  NullLiteral()
+}
+
+void BooleanLiteral() :
+{}
+{
+  "true"
+|
+  "false"
+}
+
+void NullLiteral() :
+{}
+{
+  "null"
+}
+
+void Arguments() :
+{}
+{
+  "(" [ ArgumentList() ] ")"
+}
+
+void ArgumentList() :
+{}
+{
+  Expression() ( "," Expression() )*
+}
+
+void AllocationExpression() :
+{}
+{
+  LOOKAHEAD(2)
+  "new" PrimitiveType() ArrayDimsAndInits()
+|
+  "new" Name()
+    (
+      ArrayDimsAndInits()
+    |
+      Arguments() [ ClassBody() ]
+    )
+}
+
+/*
+ * The second LOOKAHEAD specification below is to parse to PrimarySuffix
+ * if there is an expression between the "[...]".
+ */
+void ArrayDimsAndInits() :
+{}
+{
+  LOOKAHEAD(2)
+  ( LOOKAHEAD(2) "[" Expression() "]" )+ ( LOOKAHEAD(2) "[" "]" )*
+|
+  ( "[" "]" )+ ArrayInitializer()
+}
+
+
+/*
+ * Statement syntax follows.
+ */
+
+void Statement() :
+{}
+{
+  LOOKAHEAD(2)
+  LabeledStatement()
+|
+  Block()
+|
+  EmptyStatement()
+|
+  StatementExpression() ";"
+|
+  SwitchStatement()
+|
+  IfStatement()
+|
+  WhileStatement()
+|
+  DoStatement()
+|
+  ForStatement()
+|
+  BreakStatement()
+|
+  ContinueStatement()
+|
+  ReturnStatement()
+|
+  ThrowStatement()
+|
+  SynchronizedStatement()
+|
+  TryStatement()
+}
+
+void LabeledStatement() :
+{}
+{
+  <IDENTIFIER> ":" Statement()
+}
+
+void Block() :
+{}
+{
+  "{" ( BlockStatement() )* "}"
+}
+
+void BlockStatement() :
+{}
+{
+  LOOKAHEAD([ "final" ] Type() <IDENTIFIER>)
+  LocalVariableDeclaration() ";"
+|
+  Statement()
+|
+  UnmodifiedClassDeclaration()
+|
+  UnmodifiedInterfaceDeclaration()
+}
+
+void LocalVariableDeclaration() :
+{}
+{
+  [ "final" ] Type() VariableDeclarator() ( "," VariableDeclarator() )*
+}
+
+void EmptyStatement() :
+{}
+{
+  ";"
+}
+
+void StatementExpression() :
+/*
+ * The last expansion of this production accepts more than the legal
+ * Java expansions for StatementExpression.  This expansion does not
+ * use PostfixExpression for performance reasons.
+ */
+{}
+{
+  PreIncrementExpression()
+|
+  PreDecrementExpression()
+|
+  PrimaryExpression()
+  [
+    "++"
+  |
+    "--"
+  |
+    AssignmentOperator() Expression()
+  ]
+}
+
+void SwitchStatement() :
+{}
+{
+  "switch" "(" Expression() ")" "{"
+    ( SwitchLabel() ( BlockStatement() )* )*
+  "}"
+}
+
+void SwitchLabel() :
+{}
+{
+  "case" Expression() ":"
+|
+  "default" ":"
+}
+
+void IfStatement() :
+/*
+ * The disambiguating algorithm of JavaCC automatically binds dangling
+ * else's to the innermost if statement.  The LOOKAHEAD specification
+ * is to tell JavaCC that we know what we are doing.
+ */
+{}
+{
+  "if" "(" Expression() ")" Statement() [ LOOKAHEAD(1) "else" Statement() ]
+}
+
+void WhileStatement() :
+{}
+{
+  "while" "(" Expression() ")" Statement()
+}
+
+void DoStatement() :
+{}
+{
+  "do" Statement() "while" "(" Expression() ")" ";"
+}
+
+void ForStatement() :
+{}
+{
+  "for" "(" [ ForInit() ] ";" [ Expression() ] ";" [ ForUpdate() ] ")" 
Statement()
+}
+
+void ForInit() :
+{}
+{
+  LOOKAHEAD( [ "final" ] Type() <IDENTIFIER> )
+  LocalVariableDeclaration()
+|
+  StatementExpressionList()
+}
+
+void StatementExpressionList() :
+{}
+{
+  StatementExpression() ( "," StatementExpression() )*
+}
+
+void ForUpdate() :
+{}
+{
+  StatementExpressionList()
+}
+
+void BreakStatement() :
+{}
+{
+  "break" [ <IDENTIFIER> ] ";"
+}
+
+void ContinueStatement() :
+{}
+{
+  "continue" [ <IDENTIFIER> ] ";"
+}
+
+void ReturnStatement() :
+{}
+{
+  "return" [ Expression() ] ";"
+}
+
+void ThrowStatement() :
+{}
+{
+  "throw" Expression() ";"
+}
+
+void SynchronizedStatement() :
+{}
+{
+  "synchronized" "(" Expression() ")" Block()
+}
+
+void TryStatement() :
+/*
+ * Semantic check required here to make sure that at least one
+ * finally/catch is present.
+ */
+{}
+{
+  "try" Block()
+  ( "catch" "(" FormalParameter() ")" Block() )*
+  [ "finally" Block() ]
+}
+

Added: freeway/contrib/java-1.2.oo
===================================================================
--- freeway/contrib/java-1.2.oo 2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/contrib/java-1.2.oo 2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,3502 @@
+//
+// Generated by JTB 1.2.2
+//
+
+options {
+   JAVA_UNICODE_ESCAPE = true;
+}
+
+PARSER_BEGIN(JavaParser)
+import org.gnu.freeway.support.javaparser.*;
+import java.util.Vector;
+
+
+public class JavaParser 
+{
+   public static void main(String[] args)
+   {
+      JavaParser parser;
+      String filename = null;
+      long initTime = 0;
+      long parseTime = 0;
+      long startTime = 0;
+      long stopTime = 0;
+      if ( args.length == 0 )
+      {
+         System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Reading from standard input . . .");
+         parser = new JavaParser(System.in);
+      }
+      else
+         if ( args.length == 1 )
+         {
+            filename = args[0];
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Reading from file " + filename+ " . . .");
+            try
+            {
+               startTime = System.currentTimeMillis();
+               parser = new JavaParser(new java.io.FileInputStream(filename));
+               stopTime = System.currentTimeMillis();
+               initTime = stopTime - startTime;
+            }
+            catch (java.io.FileNotFoundException e)
+            {
+               System.out.println("Java Parser Version 1.1 (for Java1.2 code): 
 File " + filename+ " not found.");
+               return;
+            }
+         }
+         else
+         {
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Usage is one of:");
+            System.out.println("         java JavaParser < inputfile");
+            System.out.println("OR");
+            System.out.println("         java JavaParser inputfile");
+            return;
+         }
+      try
+      {
+         startTime = System.currentTimeMillis();
+         parser.CompilationUnit();
+         stopTime = System.currentTimeMillis();
+         parseTime = stopTime - startTime;
+         System.out.println("Java Parser Version 1.1 (for Java1.2 code): ");
+         System.out.println("   Java program parsed " + filename+ " 
successfully in "+ (initTime + parseTime)+ " ms.");
+         System.out.println("      parser initialization time was " + 
initTime+ " ms.");
+         System.out.println("      parser parse time was " + parseTime+ " 
ms.");
+      }
+      catch (ParseException e)
+      {
+         System.out.println(e.getMessage());
+         System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Encountered errors during parse.");
+      }
+   }
+}
+
+class JTBToolkit {
+   static NodeToken makeNodeToken(Token t) {
+      return new NodeToken(t.image.intern(), t.kind, t.beginLine, 
t.beginColumn, t.endLine, t.endColumn);
+   }
+}
+
+
+PARSER_END(JavaParser)
+
+SKIP :
+{
+   " "
+   | "\t"
+   | "\n"
+   | "\r"
+   | "\f"
+}
+
+MORE :
+{
+   "//" : IN_SINGLE_LINE_COMMENT
+   | <"/**" ~["/"]>
+      {
+         input_stream.backup(1);
+      } : IN_FORMAL_COMMENT
+   | "/*" : IN_MULTI_LINE_COMMENT
+}
+
+<IN_SINGLE_LINE_COMMENT> SPECIAL_TOKEN :
+{
+   <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n"> : DEFAULT
+}
+
+<IN_FORMAL_COMMENT> SPECIAL_TOKEN :
+{
+   <FORMAL_COMMENT: "*/"> : DEFAULT
+}
+
+<IN_MULTI_LINE_COMMENT> SPECIAL_TOKEN :
+{
+   <MULTI_LINE_COMMENT: "*/"> : DEFAULT
+}
+
+<IN_SINGLE_LINE_COMMENT, IN_FORMAL_COMMENT, IN_MULTI_LINE_COMMENT> MORE :
+{
+   <~[]>
+}
+
+TOKEN :
+{
+   <ABSTRACT: "abstract">
+   | <BOOLEAN: "boolean">
+   | <BREAK: "break">
+   | <BYTE: "byte">
+   | <CASE: "case">
+   | <CATCH: "catch">
+   | <CHAR: "char">
+   | <CLASS: "class">
+   | <CONST: "const">
+   | <CONTINUE: "continue">
+   | <_DEFAULT: "default">
+   | <DO: "do">
+   | <DOUBLE: "double">
+   | <ELSE: "else">
+   | <EXTENDS: "extends">
+   | <FALSE: "false">
+   | <FINAL: "final">
+   | <FINALLY: "finally">
+   | <FLOAT: "float">
+   | <FOR: "for">
+   | <GOTO: "goto">
+   | <IF: "if">
+   | <IMPLEMENTS: "implements">
+   | <IMPORT: "import">
+   | <INSTANCEOF: "instanceof">
+   | <INT: "int">
+   | <INTERFACE: "interface">
+   | <LONG: "long">
+   | <NATIVE: "native">
+   | <NEW: "new">
+   | <NULL: "null">
+   | <PACKAGE: "package">
+   | <PRIVATE: "private">
+   | <PROTECTED: "protected">
+   | <PUBLIC: "public">
+   | <RETURN: "return">
+   | <SHORT: "short">
+   | <STATIC: "static">
+   | <SUPER: "super">
+   | <SWITCH: "switch">
+   | <SYNCHRONIZED: "synchronized">
+   | <THIS: "this">
+   | <THROW: "throw">
+   | <THROWS: "throws">
+   | <TRANSIENT: "transient">
+   | <TRUE: "true">
+   | <TRY: "try">
+   | <VOID: "void">
+   | <VOLATILE: "volatile">
+   | <WHILE: "while">
+   | <STRICTFP: "strictfp">
+}
+
+TOKEN :
+{
+   <INTEGER_LITERAL: <DECIMAL_LITERAL> (["l", "L"])? | <HEX_LITERAL> (["l", 
"L"])? | <OCTAL_LITERAL> (["l", "L"])?>
+   | <#DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])*>
+   | <#HEX_LITERAL: "0" ["x", "X"] (["0"-"9", "a"-"f", "A"-"F"])+>
+   | <#OCTAL_LITERAL: "0" (["0"-"7"])*>
+   | <FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? 
(["f", "F", "d", "D"])? | "." (["0"-"9"])+ (<EXPONENT>)? (["f", "F", "d", 
"D"])? | (["0"-"9"])+ <EXPONENT> (["f", "F", "d", "D"])? | (["0"-"9"])+ 
(<EXPONENT>)? ["f", "F", "d", "D"]>
+   | <#EXPONENT: ["e", "E"] (["+", "-"])? (["0"-"9"])+>
+   | <CHARACTER_LITERAL: "'" ((~["'", "\\", "\n", "\r"]) | ("\\" (["n", "t", 
"b", "r", "f", "\\", "'", "\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] 
["0"-"7"]))) "'">
+   | <STRING_LITERAL: "\"" ((~["\"", "\\", "\n", "\r"]) | ("\\" (["n", "t", 
"b", "r", "f", "\\", "'", "\""] | ["0"-"7"] (["0"-"7"])? | ["0"-"3"] ["0"-"7"] 
["0"-"7"])))* "\"">
+}
+
+TOKEN :
+{
+   <IDENTIFIER: <LETTER> (<LETTER> | <DIGIT>)*>
+   | <#LETTER: ["$", "A"-"Z", "_", "a"-"z", "\u00c0"-"\u00d6", 
"\u00d8"-"\u00f6", "\u00f8"-"\u00ff", "\u0100"-"\u1fff", "\u3040"-"\u318f", 
"\u3300"-"\u337f", "\u3400"-"\u3d2d", "\u4e00"-"\u9fff", "\uf900"-"\ufaff"]>
+   | <#DIGIT: ["0"-"9", "\u0660"-"\u0669", "\u06f0"-"\u06f9", 
"\u0966"-"\u096f", "\u09e6"-"\u09ef", "\u0a66"-"\u0a6f", "\u0ae6"-"\u0aef", 
"\u0b66"-"\u0b6f", "\u0be7"-"\u0bef", "\u0c66"-"\u0c6f", "\u0ce6"-"\u0cef", 
"\u0d66"-"\u0d6f", "\u0e50"-"\u0e59", "\u0ed0"-"\u0ed9", "\u1040"-"\u1049"]>
+}
+
+TOKEN :
+{
+   <LPAREN: "(">
+   | <RPAREN: ")">
+   | <LBRACE: "{">
+   | <RBRACE: "}">
+   | <LBRACKET: "[">
+   | <RBRACKET: "]">
+   | <SEMICOLON: ";">
+   | <COMMA: ",">
+   | <DOT: ".">
+}
+
+TOKEN :
+{
+   <ASSIGN: "=">
+   | <GT: ">">
+   | <LT: "<">
+   | <BANG: "!">
+   | <TILDE: "~">
+   | <HOOK: "?">
+   | <COLON: ":">
+   | <EQ: "==">
+   | <LE: "<=">
+   | <GE: ">=">
+   | <NE: "!=">
+   | <SC_OR: "||">
+   | <SC_AND: "&&">
+   | <INCR: "++">
+   | <DECR: "--">
+   | <PLUS: "+">
+   | <MINUS: "-">
+   | <STAR: "*">
+   | <SLASH: "/">
+   | <BIT_AND: "&">
+   | <BIT_OR: "|">
+   | <XOR: "^">
+   | <REM: "%">
+   | <LSHIFT: "<<">
+   | <RSIGNEDSHIFT: ">>">
+   | <RUNSIGNEDSHIFT: ">>>">
+   | <PLUSASSIGN: "+=">
+   | <MINUSASSIGN: "-=">
+   | <STARASSIGN: "*=">
+   | <SLASHASSIGN: "/=">
+   | <ANDASSIGN: "&=">
+   | <ORASSIGN: "|=">
+   | <XORASSIGN: "^=">
+   | <REMASSIGN: "%=">
+   | <LSHIFTASSIGN: "<<=">
+   | <RSIGNEDSHIFTASSIGN: ">>=">
+   | <RUNSIGNEDSHIFTASSIGN: ">>>=">
+}
+
+CompilationUnit CompilationUnit() :
+{
+   NodeOptional n0 = new NodeOptional();
+   PackageDeclaration n1;
+   NodeListOptional n2 = new NodeListOptional();
+   ImportDeclaration n3;
+   NodeListOptional n4 = new NodeListOptional();
+   TypeDeclaration n5;
+   NodeToken n6;
+   Token n7;
+
+   {
+   }
+}
+{
+   (
+      n1=PackageDeclaration()
+      { n0.addNode(n1); }
+   )?
+   (
+      n3=ImportDeclaration()
+      { n2.addNode(n3); }
+   )*
+   { n2.nodes.trimToSize(); }
+   (
+      n5=TypeDeclaration()
+      { n4.addNode(n5); }
+   )*
+   { n4.nodes.trimToSize(); }
+   n7=<EOF> { 
+      n7.beginColumn++; n7.endColumn++;
+      n6 = JTBToolkit.makeNodeToken(n7);
+   }
+   
+   { return new CompilationUnit(n0,n2,n4,n6); }
+}
+
+PackageDeclaration PackageDeclaration() :
+{
+   NodeToken n0;
+   Token n1;
+   Name n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+}
+{
+   n1="package" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=Name()
+   n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
+   
+   { return new PackageDeclaration(n0,n2,n3); }
+}
+
+ImportDeclaration ImportDeclaration() :
+{
+   NodeToken n0;
+   Token n1;
+   Name n2;
+   NodeOptional n3 = new NodeOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+
+   {
+   }
+}
+{
+   n1="import" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=Name()
+   (
+      { n4 = new NodeSequence(2); }
+      n6="." { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n4.addNode(n5); }
+      n8="*" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n4.addNode(n7); }
+      { n3.addNode(n4); }
+   )?
+   n10=";" { n9 = JTBToolkit.makeNodeToken(n10); }
+   
+   { return new ImportDeclaration(n0,n2,n3,n9); }
+}
+
+TypeDeclaration TypeDeclaration() :
+{
+   NodeChoice n0;
+   ClassDeclaration n1;
+   InterfaceDeclaration n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(( "abstract" | "final" | "public" | "strictfp" )* "class")
+      n1=ClassDeclaration()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n2=InterfaceDeclaration()
+      { n0 = new NodeChoice(n2, 1); }
+   |
+      n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n0 = new NodeChoice(n3, 2); }
+   )
+   
+   { return new TypeDeclaration(n0); }
+}
+
+ClassDeclaration ClassDeclaration() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   UnmodifiedClassDeclaration n10;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="abstract" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="final" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="public" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      |
+         n9="strictfp" { n8 = JTBToolkit.makeNodeToken(n9); }
+         { n1 = new NodeChoice(n8, 3); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n10=UnmodifiedClassDeclaration()
+   
+   { return new ClassDeclaration(n0,n10); }
+}
+
+UnmodifiedClassDeclaration UnmodifiedClassDeclaration() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   NodeOptional n4 = new NodeOptional();
+   NodeSequence n5;
+   NodeToken n6;
+   Token n7;
+   Name n8;
+   NodeOptional n9 = new NodeOptional();
+   NodeSequence n10;
+   NodeToken n11;
+   Token n12;
+   NameList n13;
+   ClassBody n14;
+
+   {
+   }
+}
+{
+   n1="class" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3=<IDENTIFIER> { n2 = JTBToolkit.makeNodeToken(n3); }
+   (
+      { n5 = new NodeSequence(2); }
+      n7="extends" { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n5.addNode(n6); }
+      n8=Name()
+      { n5.addNode(n8); }
+      { n4.addNode(n5); }
+   )?
+   (
+      { n10 = new NodeSequence(2); }
+      n12="implements" { n11 = JTBToolkit.makeNodeToken(n12); }
+      { n10.addNode(n11); }
+      n13=NameList()
+      { n10.addNode(n13); }
+      { n9.addNode(n10); }
+   )?
+   n14=ClassBody()
+   
+   { return new UnmodifiedClassDeclaration(n0,n2,n4,n9,n14); }
+}
+
+ClassBody ClassBody() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   ClassBodyDeclaration n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+}
+{
+   n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      n3=ClassBodyDeclaration()
+      { n2.addNode(n3); }
+   )*
+   { n2.nodes.trimToSize(); }
+   n5="}" { n4 = JTBToolkit.makeNodeToken(n5); }
+   
+   { return new ClassBody(n0,n2,n4); }
+}
+
+NestedClassDeclaration NestedClassDeclaration() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   UnmodifiedClassDeclaration n16;
+   NodeOptional n17 = new NodeOptional();
+   NodeToken n18;
+   Token n19;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="static" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="abstract" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="final" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      |
+         n9="public" { n8 = JTBToolkit.makeNodeToken(n9); }
+         { n1 = new NodeChoice(n8, 3); }
+      |
+         n11="protected" { n10 = JTBToolkit.makeNodeToken(n11); }
+         { n1 = new NodeChoice(n10, 4); }
+      |
+         n13="private" { n12 = JTBToolkit.makeNodeToken(n13); }
+         { n1 = new NodeChoice(n12, 5); }
+      |
+         n15="strictfp" { n14 = JTBToolkit.makeNodeToken(n15); }
+         { n1 = new NodeChoice(n14, 6); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n16=UnmodifiedClassDeclaration()
+   (
+      n19=";" { n18 = JTBToolkit.makeNodeToken(n19); }
+      { n17.addNode(n18); }
+   )?
+   
+   { return new NestedClassDeclaration(n0,n16,n17); }
+}
+
+ClassBodyDeclaration ClassBodyDeclaration() :
+{
+   NodeChoice n0;
+   Initializer n1;
+   NestedClassDeclaration n2;
+   NestedInterfaceDeclaration n3;
+   ConstructorDeclaration n4;
+   MethodDeclaration n5;
+   FieldDeclaration n6;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(2)
+      n1=Initializer()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )* "class")
+      n2=NestedClassDeclaration()
+      { n0 = new NodeChoice(n2, 1); }
+   |
+      LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )* "interface")
+      n3=NestedInterfaceDeclaration()
+      { n0 = new NodeChoice(n3, 2); }
+   |
+      LOOKAHEAD([ "public" | "protected" | "private" ] Name() "(")
+      n4=ConstructorDeclaration()
+      { n0 = new NodeChoice(n4, 3); }
+   |
+      LOOKAHEAD(MethodDeclarationLookahead())
+      n5=MethodDeclaration()
+      { n0 = new NodeChoice(n5, 4); }
+   |
+      n6=FieldDeclaration()
+      { n0 = new NodeChoice(n6, 5); }
+   )
+   
+   { return new ClassBodyDeclaration(n0); }
+}
+
+MethodDeclarationLookahead MethodDeclarationLookahead() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   NodeToken n16;
+   Token n17;
+   NodeToken n18;
+   Token n19;
+   ResultType n20;
+   NodeToken n21;
+   Token n22;
+   NodeToken n23;
+   Token n24;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      |
+         n9="static" { n8 = JTBToolkit.makeNodeToken(n9); }
+         { n1 = new NodeChoice(n8, 3); }
+      |
+         n11="abstract" { n10 = JTBToolkit.makeNodeToken(n11); }
+         { n1 = new NodeChoice(n10, 4); }
+      |
+         n13="final" { n12 = JTBToolkit.makeNodeToken(n13); }
+         { n1 = new NodeChoice(n12, 5); }
+      |
+         n15="native" { n14 = JTBToolkit.makeNodeToken(n15); }
+         { n1 = new NodeChoice(n14, 6); }
+      |
+         n17="synchronized" { n16 = JTBToolkit.makeNodeToken(n17); }
+         { n1 = new NodeChoice(n16, 7); }
+      |
+         n19="strictfp" { n18 = JTBToolkit.makeNodeToken(n19); }
+         { n1 = new NodeChoice(n18, 8); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n20=ResultType()
+   n22=<IDENTIFIER> { n21 = JTBToolkit.makeNodeToken(n22); }
+   n24="(" { n23 = JTBToolkit.makeNodeToken(n24); }
+   
+   { return new MethodDeclarationLookahead(n0,n20,n21,n23); }
+}
+
+InterfaceDeclaration InterfaceDeclaration() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   UnmodifiedInterfaceDeclaration n8;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="abstract" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="public" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="strictfp" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n8=UnmodifiedInterfaceDeclaration()
+   
+   { return new InterfaceDeclaration(n0,n8); }
+}
+
+NestedInterfaceDeclaration NestedInterfaceDeclaration() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   UnmodifiedInterfaceDeclaration n16;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="static" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="abstract" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="final" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      |
+         n9="public" { n8 = JTBToolkit.makeNodeToken(n9); }
+         { n1 = new NodeChoice(n8, 3); }
+      |
+         n11="protected" { n10 = JTBToolkit.makeNodeToken(n11); }
+         { n1 = new NodeChoice(n10, 4); }
+      |
+         n13="private" { n12 = JTBToolkit.makeNodeToken(n13); }
+         { n1 = new NodeChoice(n12, 5); }
+      |
+         n15="strictfp" { n14 = JTBToolkit.makeNodeToken(n15); }
+         { n1 = new NodeChoice(n14, 6); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n16=UnmodifiedInterfaceDeclaration()
+   
+   { return new NestedInterfaceDeclaration(n0,n16); }
+}
+
+UnmodifiedInterfaceDeclaration UnmodifiedInterfaceDeclaration() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   NodeOptional n4 = new NodeOptional();
+   NodeSequence n5;
+   NodeToken n6;
+   Token n7;
+   NameList n8;
+   NodeToken n9;
+   Token n10;
+   NodeListOptional n11 = new NodeListOptional();
+   InterfaceMemberDeclaration n12;
+   NodeToken n13;
+   Token n14;
+
+   {
+   }
+}
+{
+   n1="interface" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3=<IDENTIFIER> { n2 = JTBToolkit.makeNodeToken(n3); }
+   (
+      { n5 = new NodeSequence(2); }
+      n7="extends" { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n5.addNode(n6); }
+      n8=NameList()
+      { n5.addNode(n8); }
+      { n4.addNode(n5); }
+   )?
+   n10="{" { n9 = JTBToolkit.makeNodeToken(n10); }
+   (
+      n12=InterfaceMemberDeclaration()
+      { n11.addNode(n12); }
+   )*
+   { n11.nodes.trimToSize(); }
+   n14="}" { n13 = JTBToolkit.makeNodeToken(n14); }
+   
+   { return new UnmodifiedInterfaceDeclaration(n0,n2,n4,n9,n11,n13); }
+}
+
+InterfaceMemberDeclaration InterfaceMemberDeclaration() :
+{
+   NodeChoice n0;
+   NestedClassDeclaration n1;
+   NestedInterfaceDeclaration n2;
+   MethodDeclaration n3;
+   FieldDeclaration n4;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )* "class")
+      n1=NestedClassDeclaration()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      LOOKAHEAD(( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )* "interface")
+      n2=NestedInterfaceDeclaration()
+      { n0 = new NodeChoice(n2, 1); }
+   |
+      LOOKAHEAD(MethodDeclarationLookahead())
+      n3=MethodDeclaration()
+      { n0 = new NodeChoice(n3, 2); }
+   |
+      n4=FieldDeclaration()
+      { n0 = new NodeChoice(n4, 3); }
+   )
+   
+   { return new InterfaceMemberDeclaration(n0); }
+}
+
+FieldDeclaration FieldDeclaration() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   Type n16;
+   VariableDeclarator n17;
+   NodeListOptional n18 = new NodeListOptional();
+   NodeSequence n19;
+   NodeToken n20;
+   Token n21;
+   VariableDeclarator n22;
+   NodeToken n23;
+   Token n24;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      |
+         n9="static" { n8 = JTBToolkit.makeNodeToken(n9); }
+         { n1 = new NodeChoice(n8, 3); }
+      |
+         n11="final" { n10 = JTBToolkit.makeNodeToken(n11); }
+         { n1 = new NodeChoice(n10, 4); }
+      |
+         n13="transient" { n12 = JTBToolkit.makeNodeToken(n13); }
+         { n1 = new NodeChoice(n12, 5); }
+      |
+         n15="volatile" { n14 = JTBToolkit.makeNodeToken(n15); }
+         { n1 = new NodeChoice(n14, 6); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n16=Type()
+   n17=VariableDeclarator()
+   (
+      { n19 = new NodeSequence(2); }
+      n21="," { n20 = JTBToolkit.makeNodeToken(n21); }
+      { n19.addNode(n20); }
+      n22=VariableDeclarator()
+      { n19.addNode(n22); }
+      { n18.addNode(n19); }
+   )*
+   { n18.nodes.trimToSize(); }
+   n24=";" { n23 = JTBToolkit.makeNodeToken(n24); }
+   
+   { return new FieldDeclaration(n0,n16,n17,n18,n23); }
+}
+
+VariableDeclarator VariableDeclarator() :
+{
+   VariableDeclaratorId n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   VariableInitializer n5;
+
+   {
+   }
+}
+{
+   n0=VariableDeclaratorId()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="=" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=VariableInitializer()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )?
+   
+   { return new VariableDeclarator(n0,n1); }
+}
+
+VariableDeclaratorId VariableDeclaratorId() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   NodeSequence n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+
+   {
+   }
+}
+{
+   n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      { n3 = new NodeSequence(2); }
+      n5="[" { n4 = JTBToolkit.makeNodeToken(n5); }
+      { n3.addNode(n4); }
+      n7="]" { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n3.addNode(n6); }
+      { n2.addNode(n3); }
+   )*
+   { n2.nodes.trimToSize(); }
+   
+   { return new VariableDeclaratorId(n0,n2); }
+}
+
+VariableInitializer VariableInitializer() :
+{
+   NodeChoice n0;
+   ArrayInitializer n1;
+   Expression n2;
+
+   {
+   }
+}
+{
+   (
+      n1=ArrayInitializer()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n2=Expression()
+      { n0 = new NodeChoice(n2, 1); }
+   )
+   
+   { return new VariableInitializer(n0); }
+}
+
+ArrayInitializer ArrayInitializer() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeSequence n3;
+   VariableInitializer n4;
+   NodeListOptional n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   VariableInitializer n9;
+   NodeOptional n10 = new NodeOptional();
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+
+   {
+   }
+}
+{
+   n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      { n5 = new NodeListOptional(); }
+      { n3 = new NodeSequence(2); }
+      n4=VariableInitializer()
+      { n3.addNode(n4); }
+      (
+         LOOKAHEAD(2)
+         { n6 = new NodeSequence(2); }
+         n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
+         { n6.addNode(n7); }
+         n9=VariableInitializer()
+         { n6.addNode(n9); }
+         { n5.addNode(n6); }
+      )*
+      { n5.nodes.trimToSize(); }
+      { n3.addNode(n5); }
+      { n2.addNode(n3); }
+   )?
+   (
+      n12="," { n11 = JTBToolkit.makeNodeToken(n12); }
+      { n10.addNode(n11); }
+   )?
+   n14="}" { n13 = JTBToolkit.makeNodeToken(n14); }
+   
+   { return new ArrayInitializer(n0,n2,n10,n13); }
+}
+
+MethodDeclaration MethodDeclaration() :
+{
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   NodeToken n16;
+   Token n17;
+   NodeToken n18;
+   Token n19;
+   ResultType n20;
+   MethodDeclarator n21;
+   NodeOptional n22 = new NodeOptional();
+   NodeSequence n23;
+   NodeToken n24;
+   Token n25;
+   NameList n26;
+   NodeChoice n27;
+   Block n28;
+   NodeToken n29;
+   Token n30;
+   NodeOptional n31 = new NodeOptional();
+   NodeToken n32;
+   Token n33;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      |
+         n9="static" { n8 = JTBToolkit.makeNodeToken(n9); }
+         { n1 = new NodeChoice(n8, 3); }
+      |
+         n11="abstract" { n10 = JTBToolkit.makeNodeToken(n11); }
+         { n1 = new NodeChoice(n10, 4); }
+      |
+         n13="final" { n12 = JTBToolkit.makeNodeToken(n13); }
+         { n1 = new NodeChoice(n12, 5); }
+      |
+         n15="native" { n14 = JTBToolkit.makeNodeToken(n15); }
+         { n1 = new NodeChoice(n14, 6); }
+      |
+         n17="synchronized" { n16 = JTBToolkit.makeNodeToken(n17); }
+         { n1 = new NodeChoice(n16, 7); }
+      |
+         n19="strictfp" { n18 = JTBToolkit.makeNodeToken(n19); }
+         { n1 = new NodeChoice(n18, 8); }
+      )
+      { n0.addNode(n1); }
+   )*
+   { n0.nodes.trimToSize(); }
+   n20=ResultType()
+   n21=MethodDeclarator()
+   (
+      { n23 = new NodeSequence(2); }
+      n25="throws" { n24 = JTBToolkit.makeNodeToken(n25); }
+      { n23.addNode(n24); }
+      n26=NameList()
+      { n23.addNode(n26); }
+      { n22.addNode(n23); }
+   )?
+   (
+      (
+         n28=Block()
+         { n27 = new NodeChoice(n28, 0); }
+      |
+         n30=";" { n29 = JTBToolkit.makeNodeToken(n30); }
+         { n27 = new NodeChoice(n29, 1); }
+      )
+      
+   )
+   (
+      n33=";" { n32 = JTBToolkit.makeNodeToken(n33); }
+      { n31.addNode(n32); }
+   )?
+   
+   { return new MethodDeclaration(n0,n20,n21,n22,n27,n31); }
+}
+
+MethodDeclarator MethodDeclarator() :
+{
+   NodeToken n0;
+   Token n1;
+   FormalParameters n2;
+   NodeListOptional n3 = new NodeListOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+
+   {
+   }
+}
+{
+   n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=FormalParameters()
+   (
+      { n4 = new NodeSequence(2); }
+      n6="[" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n4.addNode(n5); }
+      n8="]" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n4.addNode(n7); }
+      { n3.addNode(n4); }
+   )*
+   { n3.nodes.trimToSize(); }
+   
+   { return new MethodDeclarator(n0,n2,n3); }
+}
+
+FormalParameters FormalParameters() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeSequence n3;
+   FormalParameter n4;
+   NodeListOptional n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   FormalParameter n9;
+   NodeToken n10;
+   Token n11;
+
+   {
+   }
+}
+{
+   n1="(" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      { n5 = new NodeListOptional(); }
+      { n3 = new NodeSequence(2); }
+      n4=FormalParameter()
+      { n3.addNode(n4); }
+      (
+         { n6 = new NodeSequence(2); }
+         n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
+         { n6.addNode(n7); }
+         n9=FormalParameter()
+         { n6.addNode(n9); }
+         { n5.addNode(n6); }
+      )*
+      { n5.nodes.trimToSize(); }
+      { n3.addNode(n5); }
+      { n2.addNode(n3); }
+   )?
+   n11=")" { n10 = JTBToolkit.makeNodeToken(n11); }
+   
+   { return new FormalParameters(n0,n2,n10); }
+}
+
+FormalParameter FormalParameter() :
+{
+   NodeOptional n0 = new NodeOptional();
+   NodeToken n1;
+   Token n2;
+   Type n3;
+   VariableDeclaratorId n4;
+
+   {
+   }
+}
+{
+   (
+      n2="final" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0.addNode(n1); }
+   )?
+   n3=Type()
+   n4=VariableDeclaratorId()
+   
+   { return new FormalParameter(n0,n3,n4); }
+}
+
+ConstructorDeclaration ConstructorDeclaration() :
+{
+   NodeOptional n0 = new NodeOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   FormalParameters n10;
+   NodeOptional n11 = new NodeOptional();
+   NodeSequence n12;
+   NodeToken n13;
+   Token n14;
+   NameList n15;
+   NodeToken n16;
+   Token n17;
+   NodeOptional n18 = new NodeOptional();
+   ExplicitConstructorInvocation n19;
+   NodeListOptional n20 = new NodeListOptional();
+   BlockStatement n21;
+   NodeToken n22;
+   Token n23;
+
+   {
+   }
+}
+{
+   (
+      (
+         n3="public" { n2 = JTBToolkit.makeNodeToken(n3); }
+         { n1 = new NodeChoice(n2, 0); }
+      |
+         n5="protected" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n1 = new NodeChoice(n4, 1); }
+      |
+         n7="private" { n6 = JTBToolkit.makeNodeToken(n7); }
+         { n1 = new NodeChoice(n6, 2); }
+      )
+      { n0.addNode(n1); }
+   )?
+   n9=<IDENTIFIER> { n8 = JTBToolkit.makeNodeToken(n9); }
+   n10=FormalParameters()
+   (
+      { n12 = new NodeSequence(2); }
+      n14="throws" { n13 = JTBToolkit.makeNodeToken(n14); }
+      { n12.addNode(n13); }
+      n15=NameList()
+      { n12.addNode(n15); }
+      { n11.addNode(n12); }
+   )?
+   n17="{" { n16 = JTBToolkit.makeNodeToken(n17); }
+   (
+      LOOKAHEAD(ExplicitConstructorInvocation())
+      n19=ExplicitConstructorInvocation()
+      { n18.addNode(n19); }
+   )?
+   (
+      n21=BlockStatement()
+      { n20.addNode(n21); }
+   )*
+   { n20.nodes.trimToSize(); }
+   n23="}" { n22 = JTBToolkit.makeNodeToken(n23); }
+   
+   { return new ConstructorDeclaration(n0,n8,n10,n11,n16,n18,n20,n22); }
+}
+
+ExplicitConstructorInvocation ExplicitConstructorInvocation() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   Arguments n4;
+   NodeToken n5;
+   Token n6;
+   NodeSequence n7;
+   NodeOptional n8 = new NodeOptional();
+   NodeSequence n9;
+   PrimaryExpression n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   Arguments n15;
+   NodeToken n16;
+   Token n17;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD("this" Arguments() ";")
+      { n1 = new NodeSequence(4); }
+      n3="this" { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n1.addNode(n2); }
+      n4=Arguments()
+      { n1.addNode(n4); }
+      n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n1.addNode(n5); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      { n7 = new NodeSequence(4); }
+      (
+         LOOKAHEAD(2)
+         { n9 = new NodeSequence(2); }
+         n10=PrimaryExpression()
+         { n9.addNode(n10); }
+         n12="." { n11 = JTBToolkit.makeNodeToken(n12); }
+         { n9.addNode(n11); }
+         { n8.addNode(n9); }
+      )?
+      { n7.addNode(n8); }
+      n14="super" { n13 = JTBToolkit.makeNodeToken(n14); }
+      { n7.addNode(n13); }
+      n15=Arguments()
+      { n7.addNode(n15); }
+      n17=";" { n16 = JTBToolkit.makeNodeToken(n17); }
+      { n7.addNode(n16); }
+      { n0 = new NodeChoice(n7, 1); }
+   )
+   
+   { return new ExplicitConstructorInvocation(n0); }
+}
+
+Initializer Initializer() :
+{
+   NodeOptional n0 = new NodeOptional();
+   NodeToken n1;
+   Token n2;
+   Block n3;
+
+   {
+   }
+}
+{
+   (
+      n2="static" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0.addNode(n1); }
+   )?
+   n3=Block()
+   
+   { return new Initializer(n0,n3); }
+}
+
+Type Type() :
+{
+   NodeChoice n0;
+   PrimitiveType n1;
+   Name n2;
+   NodeListOptional n3 = new NodeListOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+
+   {
+   }
+}
+{
+   (
+      (
+         n1=PrimitiveType()
+         { n0 = new NodeChoice(n1, 0); }
+      |
+         n2=Name()
+         { n0 = new NodeChoice(n2, 1); }
+      )
+      
+   )
+   (
+      { n4 = new NodeSequence(2); }
+      n6="[" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n4.addNode(n5); }
+      n8="]" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n4.addNode(n7); }
+      { n3.addNode(n4); }
+   )*
+   { n3.nodes.trimToSize(); }
+   
+   { return new Type(n0,n3); }
+}
+
+PrimitiveType PrimitiveType() :
+{
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   NodeToken n15;
+   Token n16;
+
+   {
+   }
+}
+{
+   (
+      n2="boolean" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n4="char" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n0 = new NodeChoice(n3, 1); }
+   |
+      n6="byte" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n0 = new NodeChoice(n5, 2); }
+   |
+      n8="short" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n0 = new NodeChoice(n7, 3); }
+   |
+      n10="int" { n9 = JTBToolkit.makeNodeToken(n10); }
+      { n0 = new NodeChoice(n9, 4); }
+   |
+      n12="long" { n11 = JTBToolkit.makeNodeToken(n12); }
+      { n0 = new NodeChoice(n11, 5); }
+   |
+      n14="float" { n13 = JTBToolkit.makeNodeToken(n14); }
+      { n0 = new NodeChoice(n13, 6); }
+   |
+      n16="double" { n15 = JTBToolkit.makeNodeToken(n16); }
+      { n0 = new NodeChoice(n15, 7); }
+   )
+   
+   { return new PrimitiveType(n0); }
+}
+
+ResultType ResultType() :
+{
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   Type n3;
+
+   {
+   }
+}
+{
+   (
+      n2="void" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n3=Type()
+      { n0 = new NodeChoice(n3, 1); }
+   )
+   
+   { return new ResultType(n0); }
+}
+
+Name Name() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   NodeSequence n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+
+   {
+   }
+}
+{
+   n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      LOOKAHEAD(2)
+      { n3 = new NodeSequence(2); }
+      n5="." { n4 = JTBToolkit.makeNodeToken(n5); }
+      { n3.addNode(n4); }
+      n7=<IDENTIFIER> { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n3.addNode(n6); }
+      { n2.addNode(n3); }
+   )*
+   { n2.nodes.trimToSize(); }
+   
+   { return new Name(n0,n2); }
+}
+
+NameList NameList() :
+{
+   Name n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Name n5;
+
+   {
+   }
+}
+{
+   n0=Name()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=Name()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new NameList(n0,n1); }
+}
+
+Expression Expression() :
+{
+   ConditionalExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   AssignmentOperator n3;
+   Expression n4;
+
+   {
+   }
+}
+{
+   n0=ConditionalExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n3=AssignmentOperator()
+      { n2.addNode(n3); }
+      n4=Expression()
+      { n2.addNode(n4); }
+      { n1.addNode(n2); }
+   )?
+   
+   { return new Expression(n0,n1); }
+}
+
+AssignmentOperator AssignmentOperator() :
+{
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   NodeToken n15;
+   Token n16;
+   NodeToken n17;
+   Token n18;
+   NodeToken n19;
+   Token n20;
+   NodeToken n21;
+   Token n22;
+   NodeToken n23;
+   Token n24;
+
+   {
+   }
+}
+{
+   (
+      n2="=" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n4="*=" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n0 = new NodeChoice(n3, 1); }
+   |
+      n6="/=" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n0 = new NodeChoice(n5, 2); }
+   |
+      n8="%=" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n0 = new NodeChoice(n7, 3); }
+   |
+      n10="+=" { n9 = JTBToolkit.makeNodeToken(n10); }
+      { n0 = new NodeChoice(n9, 4); }
+   |
+      n12="-=" { n11 = JTBToolkit.makeNodeToken(n12); }
+      { n0 = new NodeChoice(n11, 5); }
+   |
+      n14="<<=" { n13 = JTBToolkit.makeNodeToken(n14); }
+      { n0 = new NodeChoice(n13, 6); }
+   |
+      n16=">>=" { n15 = JTBToolkit.makeNodeToken(n16); }
+      { n0 = new NodeChoice(n15, 7); }
+   |
+      n18=">>>=" { n17 = JTBToolkit.makeNodeToken(n18); }
+      { n0 = new NodeChoice(n17, 8); }
+   |
+      n20="&=" { n19 = JTBToolkit.makeNodeToken(n20); }
+      { n0 = new NodeChoice(n19, 9); }
+   |
+      n22="^=" { n21 = JTBToolkit.makeNodeToken(n22); }
+      { n0 = new NodeChoice(n21, 10); }
+   |
+      n24="|=" { n23 = JTBToolkit.makeNodeToken(n24); }
+      { n0 = new NodeChoice(n23, 11); }
+   )
+   
+   { return new AssignmentOperator(n0); }
+}
+
+ConditionalExpression ConditionalExpression() :
+{
+   ConditionalOrExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Expression n5;
+   NodeToken n6;
+   Token n7;
+   ConditionalExpression n8;
+
+   {
+   }
+}
+{
+   n0=ConditionalOrExpression()
+   (
+      { n2 = new NodeSequence(4); }
+      n4="?" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=Expression()
+      { n2.addNode(n5); }
+      n7=":" { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n2.addNode(n6); }
+      n8=ConditionalExpression()
+      { n2.addNode(n8); }
+      { n1.addNode(n2); }
+   )?
+   
+   { return new ConditionalExpression(n0,n1); }
+}
+
+ConditionalOrExpression ConditionalOrExpression() :
+{
+   ConditionalAndExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   ConditionalAndExpression n5;
+
+   {
+   }
+}
+{
+   n0=ConditionalAndExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="||" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=ConditionalAndExpression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new ConditionalOrExpression(n0,n1); }
+}
+
+ConditionalAndExpression ConditionalAndExpression() :
+{
+   InclusiveOrExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   InclusiveOrExpression n5;
+
+   {
+   }
+}
+{
+   n0=InclusiveOrExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="&&" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=InclusiveOrExpression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new ConditionalAndExpression(n0,n1); }
+}
+
+InclusiveOrExpression InclusiveOrExpression() :
+{
+   ExclusiveOrExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   ExclusiveOrExpression n5;
+
+   {
+   }
+}
+{
+   n0=ExclusiveOrExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="|" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=ExclusiveOrExpression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new InclusiveOrExpression(n0,n1); }
+}
+
+ExclusiveOrExpression ExclusiveOrExpression() :
+{
+   AndExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   AndExpression n5;
+
+   {
+   }
+}
+{
+   n0=AndExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="^" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=AndExpression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new ExclusiveOrExpression(n0,n1); }
+}
+
+AndExpression AndExpression() :
+{
+   EqualityExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   EqualityExpression n5;
+
+   {
+   }
+}
+{
+   n0=EqualityExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="&" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=EqualityExpression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new AndExpression(n0,n1); }
+}
+
+EqualityExpression EqualityExpression() :
+{
+   InstanceOfExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   InstanceOfExpression n8;
+
+   {
+   }
+}
+{
+   n0=InstanceOfExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      (
+         (
+            n5="==" { n4 = JTBToolkit.makeNodeToken(n5); }
+            { n3 = new NodeChoice(n4, 0); }
+         |
+            n7="!=" { n6 = JTBToolkit.makeNodeToken(n7); }
+            { n3 = new NodeChoice(n6, 1); }
+         )
+         
+      )
+      { n2.addNode(n3); }
+      n8=InstanceOfExpression()
+      { n2.addNode(n8); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new EqualityExpression(n0,n1); }
+}
+
+InstanceOfExpression InstanceOfExpression() :
+{
+   RelationalExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Type n5;
+
+   {
+   }
+}
+{
+   n0=RelationalExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="instanceof" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=Type()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )?
+   
+   { return new InstanceOfExpression(n0,n1); }
+}
+
+RelationalExpression RelationalExpression() :
+{
+   ShiftExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   ShiftExpression n12;
+
+   {
+   }
+}
+{
+   n0=ShiftExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      (
+         (
+            n5="<" { n4 = JTBToolkit.makeNodeToken(n5); }
+            { n3 = new NodeChoice(n4, 0); }
+         |
+            n7=">" { n6 = JTBToolkit.makeNodeToken(n7); }
+            { n3 = new NodeChoice(n6, 1); }
+         |
+            n9="<=" { n8 = JTBToolkit.makeNodeToken(n9); }
+            { n3 = new NodeChoice(n8, 2); }
+         |
+            n11=">=" { n10 = JTBToolkit.makeNodeToken(n11); }
+            { n3 = new NodeChoice(n10, 3); }
+         )
+         
+      )
+      { n2.addNode(n3); }
+      n12=ShiftExpression()
+      { n2.addNode(n12); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new RelationalExpression(n0,n1); }
+}
+
+ShiftExpression ShiftExpression() :
+{
+   AdditiveExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   AdditiveExpression n10;
+
+   {
+   }
+}
+{
+   n0=AdditiveExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      (
+         (
+            n5="<<" { n4 = JTBToolkit.makeNodeToken(n5); }
+            { n3 = new NodeChoice(n4, 0); }
+         |
+            n7=">>" { n6 = JTBToolkit.makeNodeToken(n7); }
+            { n3 = new NodeChoice(n6, 1); }
+         |
+            n9=">>>" { n8 = JTBToolkit.makeNodeToken(n9); }
+            { n3 = new NodeChoice(n8, 2); }
+         )
+         
+      )
+      { n2.addNode(n3); }
+      n10=AdditiveExpression()
+      { n2.addNode(n10); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new ShiftExpression(n0,n1); }
+}
+
+AdditiveExpression AdditiveExpression() :
+{
+   MultiplicativeExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   MultiplicativeExpression n8;
+
+   {
+   }
+}
+{
+   n0=MultiplicativeExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      (
+         (
+            n5="+" { n4 = JTBToolkit.makeNodeToken(n5); }
+            { n3 = new NodeChoice(n4, 0); }
+         |
+            n7="-" { n6 = JTBToolkit.makeNodeToken(n7); }
+            { n3 = new NodeChoice(n6, 1); }
+         )
+         
+      )
+      { n2.addNode(n3); }
+      n8=MultiplicativeExpression()
+      { n2.addNode(n8); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new AdditiveExpression(n0,n1); }
+}
+
+MultiplicativeExpression MultiplicativeExpression() :
+{
+   UnaryExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   UnaryExpression n10;
+
+   {
+   }
+}
+{
+   n0=UnaryExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      (
+         (
+            n5="*" { n4 = JTBToolkit.makeNodeToken(n5); }
+            { n3 = new NodeChoice(n4, 0); }
+         |
+            n7="/" { n6 = JTBToolkit.makeNodeToken(n7); }
+            { n3 = new NodeChoice(n6, 1); }
+         |
+            n9="%" { n8 = JTBToolkit.makeNodeToken(n9); }
+            { n3 = new NodeChoice(n8, 2); }
+         )
+         
+      )
+      { n2.addNode(n3); }
+      n10=UnaryExpression()
+      { n2.addNode(n10); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new MultiplicativeExpression(n0,n1); }
+}
+
+UnaryExpression UnaryExpression() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeChoice n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   UnaryExpression n7;
+   PreIncrementExpression n8;
+   PreDecrementExpression n9;
+   UnaryExpressionNotPlusMinus n10;
+
+   {
+   }
+}
+{
+   (
+      { n1 = new NodeSequence(2); }
+      (
+         (
+            n4="+" { n3 = JTBToolkit.makeNodeToken(n4); }
+            { n2 = new NodeChoice(n3, 0); }
+         |
+            n6="-" { n5 = JTBToolkit.makeNodeToken(n6); }
+            { n2 = new NodeChoice(n5, 1); }
+         )
+         
+      )
+      { n1.addNode(n2); }
+      n7=UnaryExpression()
+      { n1.addNode(n7); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n8=PreIncrementExpression()
+      { n0 = new NodeChoice(n8, 1); }
+   |
+      n9=PreDecrementExpression()
+      { n0 = new NodeChoice(n9, 2); }
+   |
+      n10=UnaryExpressionNotPlusMinus()
+      { n0 = new NodeChoice(n10, 3); }
+   )
+   
+   { return new UnaryExpression(n0); }
+}
+
+PreIncrementExpression PreIncrementExpression() :
+{
+   NodeToken n0;
+   Token n1;
+   PrimaryExpression n2;
+
+   {
+   }
+}
+{
+   n1="++" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=PrimaryExpression()
+   
+   { return new PreIncrementExpression(n0,n2); }
+}
+
+PreDecrementExpression PreDecrementExpression() :
+{
+   NodeToken n0;
+   Token n1;
+   PrimaryExpression n2;
+
+   {
+   }
+}
+{
+   n1="--" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=PrimaryExpression()
+   
+   { return new PreDecrementExpression(n0,n2); }
+}
+
+UnaryExpressionNotPlusMinus UnaryExpressionNotPlusMinus() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeChoice n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   UnaryExpression n7;
+   CastExpression n8;
+   PostfixExpression n9;
+
+   {
+   }
+}
+{
+   (
+      { n1 = new NodeSequence(2); }
+      (
+         (
+            n4="~" { n3 = JTBToolkit.makeNodeToken(n4); }
+            { n2 = new NodeChoice(n3, 0); }
+         |
+            n6="!" { n5 = JTBToolkit.makeNodeToken(n6); }
+            { n2 = new NodeChoice(n5, 1); }
+         )
+         
+      )
+      { n1.addNode(n2); }
+      n7=UnaryExpression()
+      { n1.addNode(n7); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      LOOKAHEAD(CastLookahead())
+      n8=CastExpression()
+      { n0 = new NodeChoice(n8, 1); }
+   |
+      n9=PostfixExpression()
+      { n0 = new NodeChoice(n9, 2); }
+   )
+   
+   { return new UnaryExpressionNotPlusMinus(n0); }
+}
+
+CastLookahead CastLookahead() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   PrimitiveType n4;
+   NodeSequence n5;
+   NodeToken n6;
+   Token n7;
+   Name n8;
+   NodeToken n9;
+   Token n10;
+   NodeToken n11;
+   Token n12;
+   NodeSequence n13;
+   NodeToken n14;
+   Token n15;
+   Name n16;
+   NodeToken n17;
+   Token n18;
+   NodeChoice n19;
+   NodeToken n20;
+   Token n21;
+   NodeToken n22;
+   Token n23;
+   NodeToken n24;
+   Token n25;
+   NodeToken n26;
+   Token n27;
+   NodeToken n28;
+   Token n29;
+   NodeToken n30;
+   Token n31;
+   NodeToken n32;
+   Token n33;
+   Literal n34;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(2)
+      { n1 = new NodeSequence(3); }
+      n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n1.addNode(n2); }
+      n4=PrimitiveType()
+      { n1.addNode(n4); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      LOOKAHEAD("(" Name() "[")
+      { n5 = new NodeSequence(5); }
+      n7="(" { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n5.addNode(n6); }
+      n8=Name()
+      { n5.addNode(n8); }
+      n10="[" { n9 = JTBToolkit.makeNodeToken(n10); }
+      { n5.addNode(n9); }
+      n12="]" { n11 = JTBToolkit.makeNodeToken(n12); }
+      { n5.addNode(n11); }
+      { n0 = new NodeChoice(n5, 1); }
+   |
+      { n13 = new NodeSequence(4); }
+      n15="(" { n14 = JTBToolkit.makeNodeToken(n15); }
+      { n13.addNode(n14); }
+      n16=Name()
+      { n13.addNode(n16); }
+      n18=")" { n17 = JTBToolkit.makeNodeToken(n18); }
+      { n13.addNode(n17); }
+      (
+         (
+            n21="~" { n20 = JTBToolkit.makeNodeToken(n21); }
+            { n19 = new NodeChoice(n20, 0); }
+         |
+            n23="!" { n22 = JTBToolkit.makeNodeToken(n23); }
+            { n19 = new NodeChoice(n22, 1); }
+         |
+            n25="(" { n24 = JTBToolkit.makeNodeToken(n25); }
+            { n19 = new NodeChoice(n24, 2); }
+         |
+            n27=<IDENTIFIER> { n26 = JTBToolkit.makeNodeToken(n27); }
+            { n19 = new NodeChoice(n26, 3); }
+         |
+            n29="this" { n28 = JTBToolkit.makeNodeToken(n29); }
+            { n19 = new NodeChoice(n28, 4); }
+         |
+            n31="super" { n30 = JTBToolkit.makeNodeToken(n31); }
+            { n19 = new NodeChoice(n30, 5); }
+         |
+            n33="new" { n32 = JTBToolkit.makeNodeToken(n33); }
+            { n19 = new NodeChoice(n32, 6); }
+         |
+            n34=Literal()
+            { n19 = new NodeChoice(n34, 7); }
+         )
+         
+      )
+      { n13.addNode(n19); }
+      { n0 = new NodeChoice(n13, 2); }
+   )
+   
+   { return new CastLookahead(n0); }
+}
+
+PostfixExpression PostfixExpression() :
+{
+   PrimaryExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeChoice n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+
+   {
+   }
+}
+{
+   n0=PrimaryExpression()
+   (
+      (
+         n4="++" { n3 = JTBToolkit.makeNodeToken(n4); }
+         { n2 = new NodeChoice(n3, 0); }
+      |
+         n6="--" { n5 = JTBToolkit.makeNodeToken(n6); }
+         { n2 = new NodeChoice(n5, 1); }
+      )
+      { n1.addNode(n2); }
+   )?
+   
+   { return new PostfixExpression(n0,n1); }
+}
+
+CastExpression CastExpression() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   Type n4;
+   NodeToken n5;
+   Token n6;
+   UnaryExpression n7;
+   NodeSequence n8;
+   NodeToken n9;
+   Token n10;
+   Type n11;
+   NodeToken n12;
+   Token n13;
+   UnaryExpressionNotPlusMinus n14;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD("(" PrimitiveType())
+      { n1 = new NodeSequence(5); }
+      n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n1.addNode(n2); }
+      n4=Type()
+      { n1.addNode(n4); }
+      n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n1.addNode(n5); }
+      n7=UnaryExpression()
+      { n1.addNode(n7); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      { n8 = new NodeSequence(4); }
+      n10="(" { n9 = JTBToolkit.makeNodeToken(n10); }
+      { n8.addNode(n9); }
+      n11=Type()
+      { n8.addNode(n11); }
+      n13=")" { n12 = JTBToolkit.makeNodeToken(n13); }
+      { n8.addNode(n12); }
+      n14=UnaryExpressionNotPlusMinus()
+      { n8.addNode(n14); }
+      { n0 = new NodeChoice(n8, 1); }
+   )
+   
+   { return new CastExpression(n0); }
+}
+
+PrimaryExpression PrimaryExpression() :
+{
+   PrimaryPrefix n0;
+   NodeListOptional n1 = new NodeListOptional();
+   PrimarySuffix n2;
+
+   {
+   }
+}
+{
+   n0=PrimaryPrefix()
+   (
+      LOOKAHEAD(2)
+      n2=PrimarySuffix()
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new PrimaryExpression(n0,n1); }
+}
+
+PrimaryPrefix PrimaryPrefix() :
+{
+   NodeChoice n0;
+   Literal n1;
+   NodeToken n2;
+   Token n3;
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeSequence n11;
+   NodeToken n12;
+   Token n13;
+   Expression n14;
+   NodeToken n15;
+   Token n16;
+   AllocationExpression n17;
+   NodeSequence n18;
+   ResultType n19;
+   NodeToken n20;
+   Token n21;
+   NodeToken n22;
+   Token n23;
+   Name n24;
+
+   {
+   }
+}
+{
+   (
+      n1=Literal()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n3="this" { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n0 = new NodeChoice(n2, 1); }
+   |
+      { n4 = new NodeSequence(3); }
+      n6="super" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n4.addNode(n5); }
+      n8="." { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n4.addNode(n7); }
+      n10=<IDENTIFIER> { n9 = JTBToolkit.makeNodeToken(n10); }
+      { n4.addNode(n9); }
+      { n0 = new NodeChoice(n4, 2); }
+   |
+      { n11 = new NodeSequence(3); }
+      n13="(" { n12 = JTBToolkit.makeNodeToken(n13); }
+      { n11.addNode(n12); }
+      n14=Expression()
+      { n11.addNode(n14); }
+      n16=")" { n15 = JTBToolkit.makeNodeToken(n16); }
+      { n11.addNode(n15); }
+      { n0 = new NodeChoice(n11, 3); }
+   |
+      n17=AllocationExpression()
+      { n0 = new NodeChoice(n17, 4); }
+   |
+      LOOKAHEAD(ResultType() "." "class")
+      { n18 = new NodeSequence(4); }
+      n19=ResultType()
+      { n18.addNode(n19); }
+      n21="." { n20 = JTBToolkit.makeNodeToken(n21); }
+      { n18.addNode(n20); }
+      n23="class" { n22 = JTBToolkit.makeNodeToken(n23); }
+      { n18.addNode(n22); }
+      { n0 = new NodeChoice(n18, 5); }
+   |
+      n24=Name()
+      { n0 = new NodeChoice(n24, 6); }
+   )
+   
+   { return new PrimaryPrefix(n0); }
+}
+
+PrimarySuffix PrimarySuffix() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   AllocationExpression n9;
+   NodeSequence n10;
+   NodeToken n11;
+   Token n12;
+   Expression n13;
+   NodeToken n14;
+   Token n15;
+   NodeSequence n16;
+   NodeToken n17;
+   Token n18;
+   NodeToken n19;
+   Token n20;
+   Arguments n21;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(2)
+      { n1 = new NodeSequence(3); }
+      n3="." { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n1.addNode(n2); }
+      n5="this" { n4 = JTBToolkit.makeNodeToken(n5); }
+      { n1.addNode(n4); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      LOOKAHEAD(2)
+      { n6 = new NodeSequence(3); }
+      n8="." { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n6.addNode(n7); }
+      n9=AllocationExpression()
+      { n6.addNode(n9); }
+      { n0 = new NodeChoice(n6, 1); }
+   |
+      { n10 = new NodeSequence(3); }
+      n12="[" { n11 = JTBToolkit.makeNodeToken(n12); }
+      { n10.addNode(n11); }
+      n13=Expression()
+      { n10.addNode(n13); }
+      n15="]" { n14 = JTBToolkit.makeNodeToken(n15); }
+      { n10.addNode(n14); }
+      { n0 = new NodeChoice(n10, 2); }
+   |
+      { n16 = new NodeSequence(2); }
+      n18="." { n17 = JTBToolkit.makeNodeToken(n18); }
+      { n16.addNode(n17); }
+      n20=<IDENTIFIER> { n19 = JTBToolkit.makeNodeToken(n20); }
+      { n16.addNode(n19); }
+      { n0 = new NodeChoice(n16, 3); }
+   |
+      n21=Arguments()
+      { n0 = new NodeChoice(n21, 4); }
+   )
+   
+   { return new PrimarySuffix(n0); }
+}
+
+Literal Literal() :
+{
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   BooleanLiteral n9;
+   NullLiteral n10;
+
+   {
+   }
+}
+{
+   (
+      n2=<INTEGER_LITERAL> { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n4=<FLOATING_POINT_LITERAL> { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n0 = new NodeChoice(n3, 1); }
+   |
+      n6=<CHARACTER_LITERAL> { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n0 = new NodeChoice(n5, 2); }
+   |
+      n8=<STRING_LITERAL> { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n0 = new NodeChoice(n7, 3); }
+   |
+      n9=BooleanLiteral()
+      { n0 = new NodeChoice(n9, 4); }
+   |
+      n10=NullLiteral()
+      { n0 = new NodeChoice(n10, 5); }
+   )
+   
+   { return new Literal(n0); }
+}
+
+BooleanLiteral BooleanLiteral() :
+{
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+}
+{
+   (
+      n2="true" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n4="false" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n0 = new NodeChoice(n3, 1); }
+   )
+   
+   { return new BooleanLiteral(n0); }
+}
+
+NullLiteral NullLiteral() :
+{
+   NodeToken n0;
+   Token n1;
+
+   {
+   }
+}
+{
+   n1="null" { n0 = JTBToolkit.makeNodeToken(n1); }
+   
+   { return new NullLiteral(n0); }
+}
+
+Arguments Arguments() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   ArgumentList n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+}
+{
+   n1="(" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      n3=ArgumentList()
+      { n2.addNode(n3); }
+   )?
+   n5=")" { n4 = JTBToolkit.makeNodeToken(n5); }
+   
+   { return new Arguments(n0,n2,n4); }
+}
+
+ArgumentList ArgumentList() :
+{
+   Expression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Expression n5;
+
+   {
+   }
+}
+{
+   n0=Expression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=Expression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new ArgumentList(n0,n1); }
+}
+
+AllocationExpression AllocationExpression() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   PrimitiveType n4;
+   ArrayDimsAndInits n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   Name n9;
+   NodeChoice n10;
+   ArrayDimsAndInits n11;
+   NodeSequence n12;
+   Arguments n13;
+   NodeOptional n14 = new NodeOptional();
+   ClassBody n15;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(2)
+      { n1 = new NodeSequence(4); }
+      n3="new" { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n1.addNode(n2); }
+      n4=PrimitiveType()
+      { n1.addNode(n4); }
+      n5=ArrayDimsAndInits()
+      { n1.addNode(n5); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      { n6 = new NodeSequence(3); }
+      n8="new" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n6.addNode(n7); }
+      n9=Name()
+      { n6.addNode(n9); }
+      (
+         (
+            n11=ArrayDimsAndInits()
+            { n10 = new NodeChoice(n11, 0); }
+         |
+            { n12 = new NodeSequence(2); }
+            n13=Arguments()
+            { n12.addNode(n13); }
+            (
+               n15=ClassBody()
+               { n14.addNode(n15); }
+            )?
+            { n12.addNode(n14); }
+            { n10 = new NodeChoice(n12, 1); }
+         )
+         
+      )
+      { n6.addNode(n10); }
+      { n0 = new NodeChoice(n6, 1); }
+   )
+   
+   { return new AllocationExpression(n0); }
+}
+
+ArrayDimsAndInits ArrayDimsAndInits() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeList n2 = new NodeList();
+   NodeSequence n3;
+   NodeToken n4;
+   Token n5;
+   Expression n6;
+   NodeToken n7;
+   Token n8;
+   NodeListOptional n9 = new NodeListOptional();
+   NodeSequence n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   NodeSequence n15;
+   NodeList n16 = new NodeList();
+   NodeSequence n17;
+   NodeToken n18;
+   Token n19;
+   NodeToken n20;
+   Token n21;
+   ArrayInitializer n22;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(2)
+      { n1 = new NodeSequence(3); }
+      (
+         LOOKAHEAD(2)
+         { n3 = new NodeSequence(3); }
+         n5="[" { n4 = JTBToolkit.makeNodeToken(n5); }
+         { n3.addNode(n4); }
+         n6=Expression()
+         { n3.addNode(n6); }
+         n8="]" { n7 = JTBToolkit.makeNodeToken(n8); }
+         { n3.addNode(n7); }
+         { n2.addNode(n3); }
+      )+
+      { n2.nodes.trimToSize(); }
+      { n1.addNode(n2); }
+      (
+         LOOKAHEAD(2)
+         { n10 = new NodeSequence(2); }
+         n12="[" { n11 = JTBToolkit.makeNodeToken(n12); }
+         { n10.addNode(n11); }
+         n14="]" { n13 = JTBToolkit.makeNodeToken(n14); }
+         { n10.addNode(n13); }
+         { n9.addNode(n10); }
+      )*
+      { n9.nodes.trimToSize(); }
+      { n1.addNode(n9); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      { n15 = new NodeSequence(2); }
+      (
+         { n17 = new NodeSequence(2); }
+         n19="[" { n18 = JTBToolkit.makeNodeToken(n19); }
+         { n17.addNode(n18); }
+         n21="]" { n20 = JTBToolkit.makeNodeToken(n21); }
+         { n17.addNode(n20); }
+         { n16.addNode(n17); }
+      )+
+      { n16.nodes.trimToSize(); }
+      { n15.addNode(n16); }
+      n22=ArrayInitializer()
+      { n15.addNode(n22); }
+      { n0 = new NodeChoice(n15, 1); }
+   )
+   
+   { return new ArrayDimsAndInits(n0); }
+}
+
+Statement Statement() :
+{
+   NodeChoice n0;
+   LabeledStatement n1;
+   Block n2;
+   EmptyStatement n3;
+   NodeSequence n4;
+   StatementExpression n5;
+   NodeToken n6;
+   Token n7;
+   SwitchStatement n8;
+   IfStatement n9;
+   WhileStatement n10;
+   DoStatement n11;
+   ForStatement n12;
+   BreakStatement n13;
+   ContinueStatement n14;
+   ReturnStatement n15;
+   ThrowStatement n16;
+   SynchronizedStatement n17;
+   TryStatement n18;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD(2)
+      n1=LabeledStatement()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n2=Block()
+      { n0 = new NodeChoice(n2, 1); }
+   |
+      n3=EmptyStatement()
+      { n0 = new NodeChoice(n3, 2); }
+   |
+      { n4 = new NodeSequence(2); }
+      n5=StatementExpression()
+      { n4.addNode(n5); }
+      n7=";" { n6 = JTBToolkit.makeNodeToken(n7); }
+      { n4.addNode(n6); }
+      { n0 = new NodeChoice(n4, 3); }
+   |
+      n8=SwitchStatement()
+      { n0 = new NodeChoice(n8, 4); }
+   |
+      n9=IfStatement()
+      { n0 = new NodeChoice(n9, 5); }
+   |
+      n10=WhileStatement()
+      { n0 = new NodeChoice(n10, 6); }
+   |
+      n11=DoStatement()
+      { n0 = new NodeChoice(n11, 7); }
+   |
+      n12=ForStatement()
+      { n0 = new NodeChoice(n12, 8); }
+   |
+      n13=BreakStatement()
+      { n0 = new NodeChoice(n13, 9); }
+   |
+      n14=ContinueStatement()
+      { n0 = new NodeChoice(n14, 10); }
+   |
+      n15=ReturnStatement()
+      { n0 = new NodeChoice(n15, 11); }
+   |
+      n16=ThrowStatement()
+      { n0 = new NodeChoice(n16, 12); }
+   |
+      n17=SynchronizedStatement()
+      { n0 = new NodeChoice(n17, 13); }
+   |
+      n18=TryStatement()
+      { n0 = new NodeChoice(n18, 14); }
+   )
+   
+   { return new Statement(n0); }
+}
+
+LabeledStatement LabeledStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Statement n4;
+
+   {
+   }
+}
+{
+   n1=<IDENTIFIER> { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3=":" { n2 = JTBToolkit.makeNodeToken(n3); }
+   n4=Statement()
+   
+   { return new LabeledStatement(n0,n2,n4); }
+}
+
+Block Block() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   BlockStatement n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+}
+{
+   n1="{" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      n3=BlockStatement()
+      { n2.addNode(n3); }
+   )*
+   { n2.nodes.trimToSize(); }
+   n5="}" { n4 = JTBToolkit.makeNodeToken(n5); }
+   
+   { return new Block(n0,n2,n4); }
+}
+
+BlockStatement BlockStatement() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   LocalVariableDeclaration n2;
+   NodeToken n3;
+   Token n4;
+   Statement n5;
+   UnmodifiedClassDeclaration n6;
+   UnmodifiedInterfaceDeclaration n7;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD([ "final" ] Type() <IDENTIFIER>)
+      { n1 = new NodeSequence(3); }
+      n2=LocalVariableDeclaration()
+      { n1.addNode(n2); }
+      n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n1.addNode(n3); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n5=Statement()
+      { n0 = new NodeChoice(n5, 1); }
+   |
+      n6=UnmodifiedClassDeclaration()
+      { n0 = new NodeChoice(n6, 2); }
+   |
+      n7=UnmodifiedInterfaceDeclaration()
+      { n0 = new NodeChoice(n7, 3); }
+   )
+   
+   { return new BlockStatement(n0); }
+}
+
+LocalVariableDeclaration LocalVariableDeclaration() :
+{
+   NodeOptional n0 = new NodeOptional();
+   NodeToken n1;
+   Token n2;
+   Type n3;
+   VariableDeclarator n4;
+   NodeListOptional n5 = new NodeListOptional();
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   VariableDeclarator n9;
+
+   {
+   }
+}
+{
+   (
+      n2="final" { n1 = JTBToolkit.makeNodeToken(n2); }
+      { n0.addNode(n1); }
+   )?
+   n3=Type()
+   n4=VariableDeclarator()
+   (
+      { n6 = new NodeSequence(2); }
+      n8="," { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n6.addNode(n7); }
+      n9=VariableDeclarator()
+      { n6.addNode(n9); }
+      { n5.addNode(n6); }
+   )*
+   { n5.nodes.trimToSize(); }
+   
+   { return new LocalVariableDeclaration(n0,n3,n4,n5); }
+}
+
+EmptyStatement EmptyStatement() :
+{
+   NodeToken n0;
+   Token n1;
+
+   {
+   }
+}
+{
+   n1=";" { n0 = JTBToolkit.makeNodeToken(n1); }
+   
+   { return new EmptyStatement(n0); }
+}
+
+StatementExpression StatementExpression() :
+{
+   NodeChoice n0;
+   PreIncrementExpression n1;
+   PreDecrementExpression n2;
+   NodeSequence n3;
+   PrimaryExpression n4;
+   NodeOptional n5 = new NodeOptional();
+   NodeChoice n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeSequence n11;
+   AssignmentOperator n12;
+   Expression n13;
+
+   {
+   }
+}
+{
+   (
+      n1=PreIncrementExpression()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n2=PreDecrementExpression()
+      { n0 = new NodeChoice(n2, 1); }
+   |
+      { n3 = new NodeSequence(2); }
+      n4=PrimaryExpression()
+      { n3.addNode(n4); }
+      (
+         (
+            n8="++" { n7 = JTBToolkit.makeNodeToken(n8); }
+            { n6 = new NodeChoice(n7, 0); }
+         |
+            n10="--" { n9 = JTBToolkit.makeNodeToken(n10); }
+            { n6 = new NodeChoice(n9, 1); }
+         |
+            { n11 = new NodeSequence(2); }
+            n12=AssignmentOperator()
+            { n11.addNode(n12); }
+            n13=Expression()
+            { n11.addNode(n13); }
+            { n6 = new NodeChoice(n11, 2); }
+         )
+         { n5.addNode(n6); }
+      )?
+      { n3.addNode(n5); }
+      { n0 = new NodeChoice(n3, 2); }
+   )
+   
+   { return new StatementExpression(n0); }
+}
+
+SwitchStatement SwitchStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeListOptional n9 = new NodeListOptional();
+   NodeSequence n10;
+   SwitchLabel n11;
+   NodeListOptional n12;
+   BlockStatement n13;
+   NodeToken n14;
+   Token n15;
+
+   {
+   }
+}
+{
+   n1="switch" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+   n4=Expression()
+   n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
+   n8="{" { n7 = JTBToolkit.makeNodeToken(n8); }
+   (
+      { n12 = new NodeListOptional(); }
+      { n10 = new NodeSequence(2); }
+      n11=SwitchLabel()
+      { n10.addNode(n11); }
+      (
+         n13=BlockStatement()
+         { n12.addNode(n13); }
+      )*
+      { n12.nodes.trimToSize(); }
+      { n10.addNode(n12); }
+      { n9.addNode(n10); }
+   )*
+   { n9.nodes.trimToSize(); }
+   n15="}" { n14 = JTBToolkit.makeNodeToken(n15); }
+   
+   { return new SwitchStatement(n0,n2,n4,n5,n7,n9,n14); }
+}
+
+SwitchLabel SwitchLabel() :
+{
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   NodeSequence n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+
+   {
+   }
+}
+{
+   (
+      { n1 = new NodeSequence(3); }
+      n3="case" { n2 = JTBToolkit.makeNodeToken(n3); }
+      { n1.addNode(n2); }
+      n4=Expression()
+      { n1.addNode(n4); }
+      n6=":" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n1.addNode(n5); }
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      { n7 = new NodeSequence(2); }
+      n9="default" { n8 = JTBToolkit.makeNodeToken(n9); }
+      { n7.addNode(n8); }
+      n11=":" { n10 = JTBToolkit.makeNodeToken(n11); }
+      { n7.addNode(n10); }
+      { n0 = new NodeChoice(n7, 1); }
+   )
+   
+   { return new SwitchLabel(n0); }
+}
+
+IfStatement IfStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   Statement n7;
+   NodeOptional n8 = new NodeOptional();
+   NodeSequence n9;
+   NodeToken n10;
+   Token n11;
+   Statement n12;
+
+   {
+   }
+}
+{
+   n1="if" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+   n4=Expression()
+   n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
+   n7=Statement()
+   (
+      LOOKAHEAD(1)
+      { n9 = new NodeSequence(2); }
+      n11="else" { n10 = JTBToolkit.makeNodeToken(n11); }
+      { n9.addNode(n10); }
+      n12=Statement()
+      { n9.addNode(n12); }
+      { n8.addNode(n9); }
+   )?
+   
+   { return new IfStatement(n0,n2,n4,n5,n7,n8); }
+}
+
+WhileStatement WhileStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   Statement n7;
+
+   {
+   }
+}
+{
+   n1="while" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+   n4=Expression()
+   n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
+   n7=Statement()
+   
+   { return new WhileStatement(n0,n2,n4,n5,n7); }
+}
+
+DoStatement DoStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   Statement n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   Expression n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+
+   {
+   }
+}
+{
+   n1="do" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=Statement()
+   n4="while" { n3 = JTBToolkit.makeNodeToken(n4); }
+   n6="(" { n5 = JTBToolkit.makeNodeToken(n6); }
+   n7=Expression()
+   n9=")" { n8 = JTBToolkit.makeNodeToken(n9); }
+   n11=";" { n10 = JTBToolkit.makeNodeToken(n11); }
+   
+   { return new DoStatement(n0,n2,n3,n5,n7,n8,n10); }
+}
+
+ForStatement ForStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   NodeOptional n4 = new NodeOptional();
+   ForInit n5;
+   NodeToken n6;
+   Token n7;
+   NodeOptional n8 = new NodeOptional();
+   Expression n9;
+   NodeToken n10;
+   Token n11;
+   NodeOptional n12 = new NodeOptional();
+   ForUpdate n13;
+   NodeToken n14;
+   Token n15;
+   Statement n16;
+
+   {
+   }
+}
+{
+   n1="for" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+   (
+      n5=ForInit()
+      { n4.addNode(n5); }
+   )?
+   n7=";" { n6 = JTBToolkit.makeNodeToken(n7); }
+   (
+      n9=Expression()
+      { n8.addNode(n9); }
+   )?
+   n11=";" { n10 = JTBToolkit.makeNodeToken(n11); }
+   (
+      n13=ForUpdate()
+      { n12.addNode(n13); }
+   )?
+   n15=")" { n14 = JTBToolkit.makeNodeToken(n15); }
+   n16=Statement()
+   
+   { return new ForStatement(n0,n2,n4,n6,n8,n10,n12,n14,n16); }
+}
+
+ForInit ForInit() :
+{
+   NodeChoice n0;
+   LocalVariableDeclaration n1;
+   StatementExpressionList n2;
+
+   {
+   }
+}
+{
+   (
+      LOOKAHEAD([ "final" ] Type() <IDENTIFIER>)
+      n1=LocalVariableDeclaration()
+      { n0 = new NodeChoice(n1, 0); }
+   |
+      n2=StatementExpressionList()
+      { n0 = new NodeChoice(n2, 1); }
+   )
+   
+   { return new ForInit(n0); }
+}
+
+StatementExpressionList StatementExpressionList() :
+{
+   StatementExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   StatementExpression n5;
+
+   {
+   }
+}
+{
+   n0=StatementExpression()
+   (
+      { n2 = new NodeSequence(2); }
+      n4="," { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+      n5=StatementExpression()
+      { n2.addNode(n5); }
+      { n1.addNode(n2); }
+   )*
+   { n1.nodes.trimToSize(); }
+   
+   { return new StatementExpressionList(n0,n1); }
+}
+
+ForUpdate ForUpdate() :
+{
+   StatementExpressionList n0;
+
+   {
+   }
+}
+{
+   n0=StatementExpressionList()
+   
+   { return new ForUpdate(n0); }
+}
+
+BreakStatement BreakStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+
+   {
+   }
+}
+{
+   n1="break" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      n4=<IDENTIFIER> { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+   )?
+   n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
+   
+   { return new BreakStatement(n0,n2,n5); }
+}
+
+ContinueStatement ContinueStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+
+   {
+   }
+}
+{
+   n1="continue" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      n4=<IDENTIFIER> { n3 = JTBToolkit.makeNodeToken(n4); }
+      { n2.addNode(n3); }
+   )?
+   n6=";" { n5 = JTBToolkit.makeNodeToken(n6); }
+   
+   { return new ContinueStatement(n0,n2,n5); }
+}
+
+ReturnStatement ReturnStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   Expression n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+}
+{
+   n1="return" { n0 = JTBToolkit.makeNodeToken(n1); }
+   (
+      n3=Expression()
+      { n2.addNode(n3); }
+   )?
+   n5=";" { n4 = JTBToolkit.makeNodeToken(n5); }
+   
+   { return new ReturnStatement(n0,n2,n4); }
+}
+
+ThrowStatement ThrowStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   Expression n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+}
+{
+   n1="throw" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=Expression()
+   n4=";" { n3 = JTBToolkit.makeNodeToken(n4); }
+   
+   { return new ThrowStatement(n0,n2,n3); }
+}
+
+SynchronizedStatement SynchronizedStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   Block n7;
+
+   {
+   }
+}
+{
+   n1="synchronized" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n3="(" { n2 = JTBToolkit.makeNodeToken(n3); }
+   n4=Expression()
+   n6=")" { n5 = JTBToolkit.makeNodeToken(n6); }
+   n7=Block()
+   
+   { return new SynchronizedStatement(n0,n2,n4,n5,n7); }
+}
+
+TryStatement TryStatement() :
+{
+   NodeToken n0;
+   Token n1;
+   Block n2;
+   NodeListOptional n3 = new NodeListOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   FormalParameter n9;
+   NodeToken n10;
+   Token n11;
+   Block n12;
+   NodeOptional n13 = new NodeOptional();
+   NodeSequence n14;
+   NodeToken n15;
+   Token n16;
+   Block n17;
+
+   {
+   }
+}
+{
+   n1="try" { n0 = JTBToolkit.makeNodeToken(n1); }
+   n2=Block()
+   (
+      { n4 = new NodeSequence(5); }
+      n6="catch" { n5 = JTBToolkit.makeNodeToken(n6); }
+      { n4.addNode(n5); }
+      n8="(" { n7 = JTBToolkit.makeNodeToken(n8); }
+      { n4.addNode(n7); }
+      n9=FormalParameter()
+      { n4.addNode(n9); }
+      n11=")" { n10 = JTBToolkit.makeNodeToken(n11); }
+      { n4.addNode(n10); }
+      n12=Block()
+      { n4.addNode(n12); }
+      { n3.addNode(n4); }
+   )*
+   { n3.nodes.trimToSize(); }
+   (
+      { n14 = new NodeSequence(2); }
+      n16="finally" { n15 = JTBToolkit.makeNodeToken(n16); }
+      { n14.addNode(n15); }
+      n17=Block()
+      { n14.addNode(n17); }
+      { n13.addNode(n14); }
+   )?
+   
+   { return new TryStatement(n0,n2,n3,n13); }
+}

Added: freeway/lib/javacc.jar
===================================================================
(Binary files differ)


Property changes on: freeway/lib/javacc.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: freeway/lib/javacc.jar-license
===================================================================
--- freeway/lib/javacc.jar-license      2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/lib/javacc.jar-license      2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,18 @@
+Copyright (c) 2003 Sun Microsystems, Inc. All  Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without 
modification, 
+are permitted provided that the following conditions are met:
+
+-Redistribution of source code must retain the above copyright notice, this  
list of conditions and the following disclaimer.
+
+-Redistribution in binary form must reproduce the above copyright notice, 
+this list of conditions and the following disclaimer in the documentation 
and/or 
+other materials provided with the distribution.
+
+Neither the name of Sun Microsystems, Inc. or the names of contributors may 
+be used to endorse or promote products derived from this software without 
+specific prior written permission.
+
+This software is provided "AS IS," without a warranty of any kind. ALL EXPRESS 
OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED 
WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR 
NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") AND ITS 
LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT 
OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO 
EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, 
OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE 
DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT 
OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED 
OF THE POSSIBILITY OF SUCH DAMAGES.
+
+You acknowledge that  this software is not designed, licensed or intended for 
use in the design, construction, operation or maintenance of any nuclear 
facility.

Added: freeway/lib/jtb.jar
===================================================================
(Binary files differ)


Property changes on: freeway/lib/jtb.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: freeway/native/org_gnu_freeway_server_CPluginLoader.c
===================================================================
--- freeway/native/org_gnu_freeway_server_CPluginLoader.c       2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/native/org_gnu_freeway_server_CPluginLoader.c       2006-06-08 
04:56:56 UTC (rev 2969)
@@ -315,7 +315,7 @@
        if (! modulePtr) 
                goto ULE;
        mptr = bindDynamicMethod(modulePtr,
-                                 "initialize_",
+                                 "provide_",
                                 strServiceName);
        if (mptr == NULL) 
                goto ULE;

Modified: freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java
===================================================================
--- freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/cwrappers/util/SwitchTableGenerator.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -103,11 +103,18 @@
                        return;
                }
                
-               if(clsPrefix.length() > 0 && 
!clsPrefix.toString().endsWith(File.separator))
+               if(clsPrefix.length() == 0)
+                       clsPrefix.append("build");
+               if(srcPrefix.length() == 0)
+                       srcPrefix.append("src");
+               if(natPrefix.length() == 0)
+                       natPrefix.append("native");
+               
+               if(!clsPrefix.toString().endsWith(File.separator))
                        clsPrefix.append(File.separatorChar);
-               if(srcPrefix.length() > 0 && 
!srcPrefix.toString().endsWith(File.separator))
+               if(!srcPrefix.toString().endsWith(File.separator))
                        srcPrefix.append(File.separatorChar);
-               if(natPrefix.length() > 0 && 
!natPrefix.toString().endsWith(File.separator))
+               if(!natPrefix.toString().endsWith(File.separator))
                        natPrefix.append(File.separatorChar);
                
                String servicesSubpath = "org" + File.separator + "gnu" + 
File.separator + "freeway" + File.separator + "services";
@@ -533,6 +540,8 @@
                writer.write("  private CPluginLoader loader;\n");
                writer.write("  private CPluginLoader.Handle handle;\n");
                writer.write("\n");
+               for(Iterator i = methodList.iterator(); i.hasNext(); )
+                       writer.write((String) i.next() + "\n\n");
                writer.write("  public " + stripPackage(c.getName()) + 
"(CPluginLoader loader) {\n");
                writer.write("          this.loader = loader;\n");
                writer.write("          handle = loader.loadService(\"" + 
classToLibraryName(c.getName()) + "\");\n");
@@ -541,9 +550,6 @@
                writer.write("  protected void finalize() {\n");
                writer.write("          loader.unloadService(handle);\n");
                writer.write("  }\n");
-               writer.write("\n");
-               for(Iterator i = methodList.iterator(); i.hasNext(); )
-                       writer.write((String) i.next() + "\n\n");
                writer.write("}\n");
        }
        

Modified: freeway/src/org/gnu/freeway/server/CoreAPI.java
===================================================================
--- freeway/src/org/gnu/freeway/server/CoreAPI.java     2006-06-08 00:52:10 UTC 
(rev 2968)
+++ freeway/src/org/gnu/freeway/server/CoreAPI.java     2006-06-08 04:56:56 UTC 
(rev 2969)
@@ -99,6 +99,7 @@
        }
        
        public CPluginLoader.Handle requestService(CString iname) {
+               CPluginLoader loader = new CPluginLoader();
                String rpos = iname.getValue();
                String pos = getConfigurationString("MODULES", rpos);
                if(pos == null)
@@ -114,11 +115,12 @@
                                                nxt.incrementServiceCount();
                                        return nxt.getServicePtr();
                                } else {
-                                       CPluginLoader.Handle mptr = 
CPluginLoader.bindDynamicMethod(nxt.getLibrary(), "provide_", name);
+                                       /*CPluginLoader.Handle mptr = 
CPluginLoader.bindDynamicMethod(nxt.getLibrary(), "provide_", name);
                                        if(mptr == null) {
                                                return null;
                                        }
-                                       nxt.setServicePtr(mptr); 
//mptr(&applicationCore)
+                                       nxt.setServicePtr(mptr); 
//mptr(&applicationCore)*/
+                                       
nxt.setServicePtr(loader.loadService(name));
                                        if(nxt.getServicePtr() != null)
                                                nxt.incrementServiceCount();
                                        return nxt.getServicePtr();
@@ -131,14 +133,15 @@
                if(library == null)
                        return null;
                
-               CPluginLoader.Handle mptr = 
CPluginLoader.bindDynamicMethod(library, "provide_", name);
+               /*CPluginLoader.Handle mptr = 
CPluginLoader.bindDynamicMethod(library, "provide_", name);
                if(mptr == null) {
                        CPluginLoader.unloadDynamicLibrary(library);
                        return null;
-               }
+               }*/
                nxt = new ServiceDesc(name, library, NO.getValue(), 1, null);
                shutdownList.add(nxt);
-               CPluginLoader.Handle api = mptr; //mptr(&applicationCore)
+               //CPluginLoader.Handle api = mptr; //mptr(&applicationCore)
+               CPluginLoader.Handle api = loader.loadService(name);
                if(api != null) {
                        nxt.setServicePtr(api);
                } else {

Added: freeway/src/org/gnu/freeway/support/javaparser/AdditiveExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/AdditiveExpression.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/AdditiveExpression.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> MultiplicativeExpression()
+ * f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
+ * </PRE>
+ */
+public class AdditiveExpression implements Node {
+   public MultiplicativeExpression f0;
+   public NodeListOptional f1;
+
+   public AdditiveExpression(MultiplicativeExpression n0, NodeListOptional n1) 
{
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/AllocationExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/AllocationExpression.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/AllocationExpression.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "new" PrimitiveType() ArrayDimsAndInits()
+ *       | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] )
+ * </PRE>
+ */
+public class AllocationExpression implements Node {
+   public NodeChoice f0;
+
+   public AllocationExpression(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/AndExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/AndExpression.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/AndExpression.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> EqualityExpression()
+ * f1 -> ( "&" EqualityExpression() )*
+ * </PRE>
+ */
+public class AndExpression implements Node {
+   public EqualityExpression f0;
+   public NodeListOptional f1;
+
+   public AndExpression(EqualityExpression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ArgumentList.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ArgumentList.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ArgumentList.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> Expression()
+ * f1 -> ( "," Expression() )*
+ * </PRE>
+ */
+public class ArgumentList implements Node {
+   public Expression f0;
+   public NodeListOptional f1;
+
+   public ArgumentList(Expression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Arguments.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Arguments.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Arguments.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "("
+ * f1 -> [ ArgumentList() ]
+ * f2 -> ")"
+ * </PRE>
+ */
+public class Arguments implements Node {
+   public NodeToken f0;
+   public NodeOptional f1;
+   public NodeToken f2;
+
+   public Arguments(NodeToken n0, NodeOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public Arguments(NodeOptional n0) {
+      f0 = new NodeToken("(");
+      f1 = n0;
+      f2 = new NodeToken(")");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ArrayDimsAndInits.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ArrayDimsAndInits.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ArrayDimsAndInits.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "[" Expression() "]" )+ ( "[" "]" )*
+ *       | ( "[" "]" )+ ArrayInitializer()
+ * </PRE>
+ */
+public class ArrayDimsAndInits implements Node {
+   public NodeChoice f0;
+
+   public ArrayDimsAndInits(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ArrayInitializer.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ArrayInitializer.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ArrayInitializer.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,44 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "{"
+ * f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ]
+ * f2 -> [ "," ]
+ * f3 -> "}"
+ * </PRE>
+ */
+public class ArrayInitializer implements Node {
+   public NodeToken f0;
+   public NodeOptional f1;
+   public NodeOptional f2;
+   public NodeToken f3;
+
+   public ArrayInitializer(NodeToken n0, NodeOptional n1, NodeOptional n2, 
NodeToken n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+   }
+
+   public ArrayInitializer(NodeOptional n0, NodeOptional n1) {
+      f0 = new NodeToken("{");
+      f1 = n0;
+      f2 = n1;
+      f3 = new NodeToken("}");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/AssignmentOperator.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/AssignmentOperator.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/AssignmentOperator.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,39 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "="
+ *       | "*="
+ *       | "/="
+ *       | "%="
+ *       | "+="
+ *       | "-="
+ *       | "&lt;&lt;="
+ *       | "&gt;&gt;="
+ *       | "&gt;&gt;&gt;="
+ *       | "&="
+ *       | "^="
+ *       | "|="
+ * </PRE>
+ */
+public class AssignmentOperator implements Node {
+   public NodeChoice f0;
+
+   public AssignmentOperator(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Block.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Block.java   2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Block.java   2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "{"
+ * f1 -> ( BlockStatement() )*
+ * f2 -> "}"
+ * </PRE>
+ */
+public class Block implements Node {
+   public NodeToken f0;
+   public NodeListOptional f1;
+   public NodeToken f2;
+
+   public Block(NodeToken n0, NodeListOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public Block(NodeListOptional n0) {
+      f0 = new NodeToken("{");
+      f1 = n0;
+      f2 = new NodeToken("}");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/BlockStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/BlockStatement.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/BlockStatement.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> LocalVariableDeclaration() ";"
+ *       | Statement()
+ *       | UnmodifiedClassDeclaration()
+ *       | UnmodifiedInterfaceDeclaration()
+ * </PRE>
+ */
+public class BlockStatement implements Node {
+   public NodeChoice f0;
+
+   public BlockStatement(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/BooleanLiteral.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/BooleanLiteral.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/BooleanLiteral.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "true"
+ *       | "false"
+ * </PRE>
+ */
+public class BooleanLiteral implements Node {
+   public NodeChoice f0;
+
+   public BooleanLiteral(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/BreakStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/BreakStatement.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/BreakStatement.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "break"
+ * f1 -> [ &lt;IDENTIFIER&gt; ]
+ * f2 -> ";"
+ * </PRE>
+ */
+public class BreakStatement implements Node {
+   public NodeToken f0;
+   public NodeOptional f1;
+   public NodeToken f2;
+
+   public BreakStatement(NodeToken n0, NodeOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public BreakStatement(NodeOptional n0) {
+      f0 = new NodeToken("break");
+      f1 = n0;
+      f2 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/CastExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/CastExpression.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/CastExpression.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "(" Type() ")" UnaryExpression()
+ *       | "(" Type() ")" UnaryExpressionNotPlusMinus()
+ * </PRE>
+ */
+public class CastExpression implements Node {
+   public NodeChoice f0;
+
+   public CastExpression(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/CastLookahead.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/CastLookahead.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/CastLookahead.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,30 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "(" PrimitiveType()
+ *       | "(" Name() "[" "]"
+ *       | "(" Name() ")" ( "~" | "!" | "(" | &lt;IDENTIFIER&gt; | "this" | 
"super" | "new" | Literal() )
+ * </PRE>
+ */
+public class CastLookahead implements Node {
+   public NodeChoice f0;
+
+   public CastLookahead(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ClassBody.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ClassBody.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ClassBody.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "{"
+ * f1 -> ( ClassBodyDeclaration() )*
+ * f2 -> "}"
+ * </PRE>
+ */
+public class ClassBody implements Node {
+   public NodeToken f0;
+   public NodeListOptional f1;
+   public NodeToken f2;
+
+   public ClassBody(NodeToken n0, NodeListOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public ClassBody(NodeListOptional n0) {
+      f0 = new NodeToken("{");
+      f1 = n0;
+      f2 = new NodeToken("}");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ClassBodyDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ClassBodyDeclaration.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ClassBodyDeclaration.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,33 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> Initializer()
+ *       | NestedClassDeclaration()
+ *       | NestedInterfaceDeclaration()
+ *       | ConstructorDeclaration()
+ *       | MethodDeclaration()
+ *       | FieldDeclaration()
+ * </PRE>
+ */
+public class ClassBodyDeclaration implements Node {
+   public NodeChoice f0;
+
+   public ClassBodyDeclaration(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ClassDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ClassDeclaration.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ClassDeclaration.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "abstract" | "final" | "public" | "strictfp" )*
+ * f1 -> UnmodifiedClassDeclaration()
+ * </PRE>
+ */
+public class ClassDeclaration implements Node {
+   public NodeListOptional f0;
+   public UnmodifiedClassDeclaration f1;
+
+   public ClassDeclaration(NodeListOptional n0, UnmodifiedClassDeclaration n1) 
{
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/CompilationUnit.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/CompilationUnit.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/CompilationUnit.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,44 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> [ PackageDeclaration() ]
+ * f1 -> ( ImportDeclaration() )*
+ * f2 -> ( TypeDeclaration() )*
+ * f3 -> &lt;EOF&gt;
+ * </PRE>
+ */
+public class CompilationUnit implements Node {
+   public NodeOptional f0;
+   public NodeListOptional f1;
+   public NodeListOptional f2;
+   public NodeToken f3;
+
+   public CompilationUnit(NodeOptional n0, NodeListOptional n1, 
NodeListOptional n2, NodeToken n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+   }
+
+   public CompilationUnit(NodeOptional n0, NodeListOptional n1, 
NodeListOptional n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = new NodeToken("");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/ConditionalAndExpression.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/ConditionalAndExpression.java    
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/ConditionalAndExpression.java    
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> InclusiveOrExpression()
+ * f1 -> ( "&&" InclusiveOrExpression() )*
+ * </PRE>
+ */
+public class ConditionalAndExpression implements Node {
+   public InclusiveOrExpression f0;
+   public NodeListOptional f1;
+
+   public ConditionalAndExpression(InclusiveOrExpression n0, NodeListOptional 
n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ConditionalExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ConditionalExpression.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ConditionalExpression.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ConditionalOrExpression()
+ * f1 -> [ "?" Expression() ":" ConditionalExpression() ]
+ * </PRE>
+ */
+public class ConditionalExpression implements Node {
+   public ConditionalOrExpression f0;
+   public NodeOptional f1;
+
+   public ConditionalExpression(ConditionalOrExpression n0, NodeOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/ConditionalOrExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ConditionalOrExpression.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ConditionalOrExpression.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ConditionalAndExpression()
+ * f1 -> ( "||" ConditionalAndExpression() )*
+ * </PRE>
+ */
+public class ConditionalOrExpression implements Node {
+   public ConditionalAndExpression f0;
+   public NodeListOptional f1;
+
+   public ConditionalOrExpression(ConditionalAndExpression n0, 
NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/ConstructorDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ConstructorDeclaration.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ConstructorDeclaration.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,60 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> [ "public" | "protected" | "private" ]
+ * f1 -> &lt;IDENTIFIER&gt;
+ * f2 -> FormalParameters()
+ * f3 -> [ "throws" NameList() ]
+ * f4 -> "{"
+ * f5 -> [ ExplicitConstructorInvocation() ]
+ * f6 -> ( BlockStatement() )*
+ * f7 -> "}"
+ * </PRE>
+ */
+public class ConstructorDeclaration implements Node {
+   public NodeOptional f0;
+   public NodeToken f1;
+   public FormalParameters f2;
+   public NodeOptional f3;
+   public NodeToken f4;
+   public NodeOptional f5;
+   public NodeListOptional f6;
+   public NodeToken f7;
+
+   public ConstructorDeclaration(NodeOptional n0, NodeToken n1, 
FormalParameters n2, NodeOptional n3, NodeToken n4, NodeOptional n5, 
NodeListOptional n6, NodeToken n7) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+      f6 = n6;
+      f7 = n7;
+   }
+
+   public ConstructorDeclaration(NodeOptional n0, NodeToken n1, 
FormalParameters n2, NodeOptional n3, NodeOptional n4, NodeListOptional n5) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = new NodeToken("{");
+      f5 = n4;
+      f6 = n5;
+      f7 = new NodeToken("}");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ContinueStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ContinueStatement.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ContinueStatement.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "continue"
+ * f1 -> [ &lt;IDENTIFIER&gt; ]
+ * f2 -> ";"
+ * </PRE>
+ */
+public class ContinueStatement implements Node {
+   public NodeToken f0;
+   public NodeOptional f1;
+   public NodeToken f2;
+
+   public ContinueStatement(NodeToken n0, NodeOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public ContinueStatement(NodeOptional n0) {
+      f0 = new NodeToken("continue");
+      f1 = n0;
+      f2 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/DoStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/DoStatement.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/DoStatement.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,56 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "do"
+ * f1 -> Statement()
+ * f2 -> "while"
+ * f3 -> "("
+ * f4 -> Expression()
+ * f5 -> ")"
+ * f6 -> ";"
+ * </PRE>
+ */
+public class DoStatement implements Node {
+   public NodeToken f0;
+   public Statement f1;
+   public NodeToken f2;
+   public NodeToken f3;
+   public Expression f4;
+   public NodeToken f5;
+   public NodeToken f6;
+
+   public DoStatement(NodeToken n0, Statement n1, NodeToken n2, NodeToken n3, 
Expression n4, NodeToken n5, NodeToken n6) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+      f6 = n6;
+   }
+
+   public DoStatement(Statement n0, Expression n1) {
+      f0 = new NodeToken("do");
+      f1 = n0;
+      f2 = new NodeToken("while");
+      f3 = new NodeToken("(");
+      f4 = n1;
+      f5 = new NodeToken(")");
+      f6 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/EmptyStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/EmptyStatement.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/EmptyStatement.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,32 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ";"
+ * </PRE>
+ */
+public class EmptyStatement implements Node {
+   public NodeToken f0;
+
+   public EmptyStatement(NodeToken n0) {
+      f0 = n0;
+   }
+
+   public EmptyStatement() {
+      f0 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/EqualityExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/EqualityExpression.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/EqualityExpression.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> InstanceOfExpression()
+ * f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
+ * </PRE>
+ */
+public class EqualityExpression implements Node {
+   public InstanceOfExpression f0;
+   public NodeListOptional f1;
+
+   public EqualityExpression(InstanceOfExpression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ExclusiveOrExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ExclusiveOrExpression.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ExclusiveOrExpression.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> AndExpression()
+ * f1 -> ( "^" AndExpression() )*
+ * </PRE>
+ */
+public class ExclusiveOrExpression implements Node {
+   public AndExpression f0;
+   public NodeListOptional f1;
+
+   public ExclusiveOrExpression(AndExpression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/ExplicitConstructorInvocation.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/ExplicitConstructorInvocation.java
   2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/ExplicitConstructorInvocation.java
   2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "this" Arguments() ";"
+ *       | [ PrimaryExpression() "." ] "super" Arguments() ";"
+ * </PRE>
+ */
+public class ExplicitConstructorInvocation implements Node {
+   public NodeChoice f0;
+
+   public ExplicitConstructorInvocation(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Expression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Expression.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Expression.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ConditionalExpression()
+ * f1 -> [ AssignmentOperator() Expression() ]
+ * </PRE>
+ */
+public class Expression implements Node {
+   public ConditionalExpression f0;
+   public NodeOptional f1;
+
+   public Expression(ConditionalExpression n0, NodeOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/FieldDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/FieldDeclaration.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/FieldDeclaration.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,48 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "public" | "protected" | "private" | "static" | "final" | 
"transient" | "volatile" )*
+ * f1 -> Type()
+ * f2 -> VariableDeclarator()
+ * f3 -> ( "," VariableDeclarator() )*
+ * f4 -> ";"
+ * </PRE>
+ */
+public class FieldDeclaration implements Node {
+   public NodeListOptional f0;
+   public Type f1;
+   public VariableDeclarator f2;
+   public NodeListOptional f3;
+   public NodeToken f4;
+
+   public FieldDeclaration(NodeListOptional n0, Type n1, VariableDeclarator 
n2, NodeListOptional n3, NodeToken n4) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+   }
+
+   public FieldDeclaration(NodeListOptional n0, Type n1, VariableDeclarator 
n2, NodeListOptional n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ForInit.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ForInit.java 2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ForInit.java 2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> LocalVariableDeclaration()
+ *       | StatementExpressionList()
+ * </PRE>
+ */
+public class ForInit implements Node {
+   public NodeChoice f0;
+
+   public ForInit(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ForStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ForStatement.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ForStatement.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,64 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "for"
+ * f1 -> "("
+ * f2 -> [ ForInit() ]
+ * f3 -> ";"
+ * f4 -> [ Expression() ]
+ * f5 -> ";"
+ * f6 -> [ ForUpdate() ]
+ * f7 -> ")"
+ * f8 -> Statement()
+ * </PRE>
+ */
+public class ForStatement implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public NodeOptional f2;
+   public NodeToken f3;
+   public NodeOptional f4;
+   public NodeToken f5;
+   public NodeOptional f6;
+   public NodeToken f7;
+   public Statement f8;
+
+   public ForStatement(NodeToken n0, NodeToken n1, NodeOptional n2, NodeToken 
n3, NodeOptional n4, NodeToken n5, NodeOptional n6, NodeToken n7, Statement n8) 
{
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+      f6 = n6;
+      f7 = n7;
+      f8 = n8;
+   }
+
+   public ForStatement(NodeOptional n0, NodeOptional n1, NodeOptional n2, 
Statement n3) {
+      f0 = new NodeToken("for");
+      f1 = new NodeToken("(");
+      f2 = n0;
+      f3 = new NodeToken(";");
+      f4 = n1;
+      f5 = new NodeToken(";");
+      f6 = n2;
+      f7 = new NodeToken(")");
+      f8 = n3;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ForUpdate.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ForUpdate.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ForUpdate.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,28 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> StatementExpressionList()
+ * </PRE>
+ */
+public class ForUpdate implements Node {
+   public StatementExpressionList f0;
+
+   public ForUpdate(StatementExpressionList n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/FormalParameter.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/FormalParameter.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/FormalParameter.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,34 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> [ "final" ]
+ * f1 -> Type()
+ * f2 -> VariableDeclaratorId()
+ * </PRE>
+ */
+public class FormalParameter implements Node {
+   public NodeOptional f0;
+   public Type f1;
+   public VariableDeclaratorId f2;
+
+   public FormalParameter(NodeOptional n0, Type n1, VariableDeclaratorId n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/FormalParameters.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/FormalParameters.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/FormalParameters.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "("
+ * f1 -> [ FormalParameter() ( "," FormalParameter() )* ]
+ * f2 -> ")"
+ * </PRE>
+ */
+public class FormalParameters implements Node {
+   public NodeToken f0;
+   public NodeOptional f1;
+   public NodeToken f2;
+
+   public FormalParameters(NodeToken n0, NodeOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public FormalParameters(NodeOptional n0) {
+      f0 = new NodeToken("(");
+      f1 = n0;
+      f2 = new NodeToken(")");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/IfStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/IfStatement.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/IfStatement.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,52 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "if"
+ * f1 -> "("
+ * f2 -> Expression()
+ * f3 -> ")"
+ * f4 -> Statement()
+ * f5 -> [ "else" Statement() ]
+ * </PRE>
+ */
+public class IfStatement implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public Expression f2;
+   public NodeToken f3;
+   public Statement f4;
+   public NodeOptional f5;
+
+   public IfStatement(NodeToken n0, NodeToken n1, Expression n2, NodeToken n3, 
Statement n4, NodeOptional n5) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+   }
+
+   public IfStatement(Expression n0, Statement n1, NodeOptional n2) {
+      f0 = new NodeToken("if");
+      f1 = new NodeToken("(");
+      f2 = n0;
+      f3 = new NodeToken(")");
+      f4 = n1;
+      f5 = n2;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ImportDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ImportDeclaration.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ImportDeclaration.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,44 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "import"
+ * f1 -> Name()
+ * f2 -> [ "." "*" ]
+ * f3 -> ";"
+ * </PRE>
+ */
+public class ImportDeclaration implements Node {
+   public NodeToken f0;
+   public Name f1;
+   public NodeOptional f2;
+   public NodeToken f3;
+
+   public ImportDeclaration(NodeToken n0, Name n1, NodeOptional n2, NodeToken 
n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+   }
+
+   public ImportDeclaration(Name n0, NodeOptional n1) {
+      f0 = new NodeToken("import");
+      f1 = n0;
+      f2 = n1;
+      f3 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/InclusiveOrExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/InclusiveOrExpression.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/InclusiveOrExpression.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ExclusiveOrExpression()
+ * f1 -> ( "|" ExclusiveOrExpression() )*
+ * </PRE>
+ */
+public class InclusiveOrExpression implements Node {
+   public ExclusiveOrExpression f0;
+   public NodeListOptional f1;
+
+   public InclusiveOrExpression(ExclusiveOrExpression n0, NodeListOptional n1) 
{
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Initializer.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Initializer.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Initializer.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> [ "static" ]
+ * f1 -> Block()
+ * </PRE>
+ */
+public class Initializer implements Node {
+   public NodeOptional f0;
+   public Block f1;
+
+   public Initializer(NodeOptional n0, Block n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/InstanceOfExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/InstanceOfExpression.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/InstanceOfExpression.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> RelationalExpression()
+ * f1 -> [ "instanceof" Type() ]
+ * </PRE>
+ */
+public class InstanceOfExpression implements Node {
+   public RelationalExpression f0;
+   public NodeOptional f1;
+
+   public InstanceOfExpression(RelationalExpression n0, NodeOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/InterfaceDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/InterfaceDeclaration.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/InterfaceDeclaration.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "abstract" | "public" | "strictfp" )*
+ * f1 -> UnmodifiedInterfaceDeclaration()
+ * </PRE>
+ */
+public class InterfaceDeclaration implements Node {
+   public NodeListOptional f0;
+   public UnmodifiedInterfaceDeclaration f1;
+
+   public InterfaceDeclaration(NodeListOptional n0, 
UnmodifiedInterfaceDeclaration n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/InterfaceMemberDeclaration.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/InterfaceMemberDeclaration.java  
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/InterfaceMemberDeclaration.java  
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> NestedClassDeclaration()
+ *       | NestedInterfaceDeclaration()
+ *       | MethodDeclaration()
+ *       | FieldDeclaration()
+ * </PRE>
+ */
+public class InterfaceMemberDeclaration implements Node {
+   public NodeChoice f0;
+
+   public InterfaceMemberDeclaration(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/JavaCharStream.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/JavaCharStream.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/JavaCharStream.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,583 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. JavaCharStream.java Version 4.0 
*/
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (with java-like unicode escape processing).
+ */
+
+public class JavaCharStream
+{
+  public static final boolean staticFlag = false;
+  static final int hexval(char c) throws java.io.IOException {
+    switch(c)
+    {
+       case '0' :
+          return 0;
+       case '1' :
+          return 1;
+       case '2' :
+          return 2;
+       case '3' :
+          return 3;
+       case '4' :
+          return 4;
+       case '5' :
+          return 5;
+       case '6' :
+          return 6;
+       case '7' :
+          return 7;
+       case '8' :
+          return 8;
+       case '9' :
+          return 9;
+
+       case 'a' :
+       case 'A' :
+          return 10;
+       case 'b' :
+       case 'B' :
+          return 11;
+       case 'c' :
+       case 'C' :
+          return 12;
+       case 'd' :
+       case 'D' :
+          return 13;
+       case 'e' :
+       case 'E' :
+          return 14;
+       case 'f' :
+       case 'F' :
+          return 15;
+    }
+
+    throw new java.io.IOException(); // Should never come here
+  }
+
+  public int bufpos = -1;
+  int bufsize;
+  int available;
+  int tokenBegin;
+  protected int bufline[];
+  protected int bufcolumn[];
+
+  protected int column = 0;
+  protected int line = 1;
+
+  protected boolean prevCharIsCR = false;
+  protected boolean prevCharIsLF = false;
+
+  protected java.io.Reader inputStream;
+
+  protected char[] nextCharBuf;
+  protected char[] buffer;
+  protected int maxNextCharInd = 0;
+  protected int nextCharInd = -1;
+  protected int inBuf = 0;
+  protected int tabSize = 8;
+
+  protected void setTabSize(int i) { tabSize = i; }
+  protected int getTabSize(int i) { return tabSize; }
+
+  protected void ExpandBuff(boolean wrapAround)
+  {
+     char[] newbuffer = new char[bufsize + 2048];
+     int newbufline[] = new int[bufsize + 2048];
+     int newbufcolumn[] = new int[bufsize + 2048];
+
+     try
+     {
+        if (wrapAround)
+        {
+           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - 
tokenBegin);
+           System.arraycopy(buffer, 0, newbuffer,
+                                             bufsize - tokenBegin, bufpos);
+           buffer = newbuffer;
+
+           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - 
tokenBegin);
+           System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, 
bufpos);
+           bufline = newbufline;
+
+           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - 
tokenBegin);
+           System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, 
bufpos);
+           bufcolumn = newbufcolumn;
+
+           bufpos += (bufsize - tokenBegin);
+        }
+        else
+        {
+           System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - 
tokenBegin);
+           buffer = newbuffer;
+
+           System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - 
tokenBegin);
+           bufline = newbufline;
+
+           System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - 
tokenBegin);
+           bufcolumn = newbufcolumn;
+
+           bufpos -= tokenBegin;
+        }
+     }
+     catch (Throwable t)
+     {
+        throw new Error(t.getMessage());
+     }
+
+     available = (bufsize += 2048);
+     tokenBegin = 0;
+  }
+
+  protected void FillBuff() throws java.io.IOException
+  {
+     int i;
+     if (maxNextCharInd == 4096)
+        maxNextCharInd = nextCharInd = 0;
+
+     try {
+        if ((i = inputStream.read(nextCharBuf, maxNextCharInd,
+                                            4096 - maxNextCharInd)) == -1)
+        {
+           inputStream.close();
+           throw new java.io.IOException();
+        }
+        else
+           maxNextCharInd += i;
+        return;
+     }
+     catch(java.io.IOException e) {
+        if (bufpos != 0)
+        {
+           --bufpos;
+           backup(0);
+        }
+        else
+        {
+           bufline[bufpos] = line;
+           bufcolumn[bufpos] = column;
+        }
+        throw e;
+     }
+  }
+
+  protected char ReadByte() throws java.io.IOException
+  {
+     if (++nextCharInd >= maxNextCharInd)
+        FillBuff();
+
+     return nextCharBuf[nextCharInd];
+  }
+
+  public char BeginToken() throws java.io.IOException
+  {     
+     if (inBuf > 0)
+     {
+        --inBuf;
+
+        if (++bufpos == bufsize)
+           bufpos = 0;
+
+        tokenBegin = bufpos;
+        return buffer[bufpos];
+     }
+
+     tokenBegin = 0;
+     bufpos = -1;
+
+     return readChar();
+  }     
+
+  protected void AdjustBuffSize()
+  {
+     if (available == bufsize)
+     {
+        if (tokenBegin > 2048)
+        {
+           bufpos = 0;
+           available = tokenBegin;
+        }
+        else
+           ExpandBuff(false);
+     }
+     else if (available > tokenBegin)
+        available = bufsize;
+     else if ((tokenBegin - available) < 2048)
+        ExpandBuff(true);
+     else
+        available = tokenBegin;
+  }
+
+  protected void UpdateLineColumn(char c)
+  {
+     column++;
+
+     if (prevCharIsLF)
+     {
+        prevCharIsLF = false;
+        line += (column = 1);
+     }
+     else if (prevCharIsCR)
+     {
+        prevCharIsCR = false;
+        if (c == '\n')
+        {
+           prevCharIsLF = true;
+        }
+        else
+           line += (column = 1);
+     }
+
+     switch (c)
+     {
+        case '\r' :
+           prevCharIsCR = true;
+           break;
+        case '\n' :
+           prevCharIsLF = true;
+           break;
+        case '\t' :
+           column--;
+           column += (tabSize - (column % tabSize));
+           break;
+        default :
+           break;
+     }
+
+     bufline[bufpos] = line;
+     bufcolumn[bufpos] = column;
+  }
+
+  public char readChar() throws java.io.IOException
+  {
+     if (inBuf > 0)
+     {
+        --inBuf;
+
+        if (++bufpos == bufsize)
+           bufpos = 0;
+
+        return buffer[bufpos];
+     }
+
+     char c;
+
+     if (++bufpos == available)
+        AdjustBuffSize();
+
+     if ((buffer[bufpos] = c = ReadByte()) == '\\')
+     {
+        UpdateLineColumn(c);
+
+        int backSlashCnt = 1;
+
+        for (;;) // Read all the backslashes
+        {
+           if (++bufpos == available)
+              AdjustBuffSize();
+
+           try
+           {
+              if ((buffer[bufpos] = c = ReadByte()) != '\\')
+              {
+                 UpdateLineColumn(c);
+                 // found a non-backslash char.
+                 if ((c == 'u') && ((backSlashCnt & 1) == 1))
+                 {
+                    if (--bufpos < 0)
+                       bufpos = bufsize - 1;
+
+                    break;
+                 }
+
+                 backup(backSlashCnt);
+                 return '\\';
+              }
+           }
+           catch(java.io.IOException e)
+           {
+              if (backSlashCnt > 1)
+                 backup(backSlashCnt);
+
+              return '\\';
+           }
+
+           UpdateLineColumn(c);
+           backSlashCnt++;
+        }
+
+        // Here, we have seen an odd number of backslash's followed by a 'u'
+        try
+        {
+           while ((c = ReadByte()) == 'u')
+              ++column;
+
+           buffer[bufpos] = c = (char)(hexval(c) << 12 |
+                                       hexval(ReadByte()) << 8 |
+                                       hexval(ReadByte()) << 4 |
+                                       hexval(ReadByte()));
+
+           column += 4;
+        }
+        catch(java.io.IOException e)
+        {
+           throw new Error("Invalid escape character at line " + line +
+                                         " column " + column + ".");
+        }
+
+        if (backSlashCnt == 1)
+           return c;
+        else
+        {
+           backup(backSlashCnt - 1);
+           return '\\';
+        }
+     }
+     else
+     {
+        UpdateLineColumn(c);
+        return (c);
+     }
+  }
+
+  /**
+   * @deprecated 
+   * @see #getEndColumn
+   */
+
+  public int getColumn() {
+     return bufcolumn[bufpos];
+  }
+
+  /**
+   * @deprecated 
+   * @see #getEndLine
+   */
+
+  public int getLine() {
+     return bufline[bufpos];
+  }
+
+  public int getEndColumn() {
+     return bufcolumn[bufpos];
+  }
+
+  public int getEndLine() {
+     return bufline[bufpos];
+  }
+
+  public int getBeginColumn() {
+     return bufcolumn[tokenBegin];
+  }
+
+  public int getBeginLine() {
+     return bufline[tokenBegin];
+  }
+
+  public void backup(int amount) {
+
+    inBuf += amount;
+    if ((bufpos -= amount) < 0)
+       bufpos += bufsize;
+  }
+
+  public JavaCharStream(java.io.Reader dstream,
+                 int startline, int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    available = bufsize = buffersize;
+    buffer = new char[buffersize];
+    bufline = new int[buffersize];
+    bufcolumn = new int[buffersize];
+    nextCharBuf = new char[4096];
+  }
+
+  public JavaCharStream(java.io.Reader dstream,
+                                        int startline, int startcolumn)
+  {
+     this(dstream, startline, startcolumn, 4096);
+  }
+
+  public JavaCharStream(java.io.Reader dstream)
+  {
+     this(dstream, 1, 1, 4096);
+  }
+  public void ReInit(java.io.Reader dstream,
+                 int startline, int startcolumn, int buffersize)
+  {
+    inputStream = dstream;
+    line = startline;
+    column = startcolumn - 1;
+
+    if (buffer == null || buffersize != buffer.length)
+    {
+      available = bufsize = buffersize;
+      buffer = new char[buffersize];
+      bufline = new int[buffersize];
+      bufcolumn = new int[buffersize];
+      nextCharBuf = new char[4096];
+    }
+    prevCharIsLF = prevCharIsCR = false;
+    tokenBegin = inBuf = maxNextCharInd = 0;
+    nextCharInd = bufpos = -1;
+  }
+
+  public void ReInit(java.io.Reader dstream,
+                                        int startline, int startcolumn)
+  {
+     ReInit(dstream, startline, startcolumn, 4096);
+  }
+
+  public void ReInit(java.io.Reader dstream)
+  {
+     ReInit(dstream, 1, 1, 4096);
+  }
+  public JavaCharStream(java.io.InputStream dstream, String encoding, int 
startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+     this(encoding == null ? new java.io.InputStreamReader(dstream) : new 
java.io.InputStreamReader(dstream, encoding), startline, startcolumn, 
buffersize);
+  }
+
+  public JavaCharStream(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+     this(new java.io.InputStreamReader(dstream), startline, startcolumn, 
4096);
+  }
+
+  public JavaCharStream(java.io.InputStream dstream, String encoding, int 
startline,
+                        int startcolumn) throws 
java.io.UnsupportedEncodingException
+  {
+     this(dstream, encoding, startline, startcolumn, 4096);
+  }
+
+  public JavaCharStream(java.io.InputStream dstream, int startline,
+                        int startcolumn)
+  {
+     this(dstream, startline, startcolumn, 4096);
+  }
+
+  public JavaCharStream(java.io.InputStream dstream, String encoding) throws 
java.io.UnsupportedEncodingException
+  {
+     this(dstream, encoding, 1, 1, 4096);
+  }
+
+  public JavaCharStream(java.io.InputStream dstream)
+  {
+     this(dstream, 1, 1, 4096);
+  }
+
+  public void ReInit(java.io.InputStream dstream, String encoding, int 
startline,
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
+  {
+     ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new 
java.io.InputStreamReader(dstream, encoding), startline, startcolumn, 
buffersize);
+  }
+
+  public void ReInit(java.io.InputStream dstream, int startline,
+  int startcolumn, int buffersize)
+  {
+     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 
buffersize);
+  }
+  public void ReInit(java.io.InputStream dstream, String encoding, int 
startline,
+                     int startcolumn) throws 
java.io.UnsupportedEncodingException
+  {
+     ReInit(dstream, encoding, startline, startcolumn, 4096);
+  }
+  public void ReInit(java.io.InputStream dstream, int startline,
+                     int startcolumn)
+  {
+     ReInit(dstream, startline, startcolumn, 4096);
+  }
+  public void ReInit(java.io.InputStream dstream, String encoding) throws 
java.io.UnsupportedEncodingException
+  {
+     ReInit(dstream, encoding, 1, 1, 4096);
+  }
+
+  public void ReInit(java.io.InputStream dstream)
+  {
+     ReInit(dstream, 1, 1, 4096);
+  }
+
+  public String GetImage()
+  {
+     if (bufpos >= tokenBegin)
+        return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+     else
+        return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+                              new String(buffer, 0, bufpos + 1);
+  }
+
+  public char[] GetSuffix(int len)
+  {
+     char[] ret = new char[len];
+
+     if ((bufpos + 1) >= len)
+        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+     else
+     {
+        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+                                                          len - bufpos - 1);
+        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+     }
+
+     return ret;
+  }
+
+  public void Done()
+  {
+     nextCharBuf = null;
+     buffer = null;
+     bufline = null;
+     bufcolumn = null;
+  }
+
+  /**
+   * Method to adjust line and column numbers for the start of a token.
+   */
+  public void adjustBeginLineColumn(int newLine, int newCol)
+  {
+     int start = tokenBegin;
+     int len;
+
+     if (bufpos >= tokenBegin)
+     {
+        len = bufpos - tokenBegin + inBuf + 1;
+     }
+     else
+     {
+        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+     }
+
+     int i = 0, j = 0, k = 0;
+     int nextColDiff = 0, columnDiff = 0;
+
+     while (i < len &&
+            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+     {
+        bufline[j] = newLine;
+        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+        bufcolumn[j] = newCol + columnDiff;
+        columnDiff = nextColDiff;
+        i++;
+     } 
+
+     if (i < len)
+     {
+        bufline[j] = newLine++;
+        bufcolumn[j] = newCol + columnDiff;
+
+        while (i++ < len)
+        {
+           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+              bufline[j] = newLine++;
+           else
+              bufline[j] = newLine;
+        }
+     }
+
+     line = bufline[j];
+     column = bufcolumn[j];
+  }
+
+}

Added: freeway/src/org/gnu/freeway/support/javaparser/JavaParser.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/JavaParser.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/JavaParser.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,8165 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. JavaParser.java */
+import org.gnu.freeway.support.javaparser.*;
+import java.util.Vector;
+
+
+public class JavaParser implements JavaParserConstants {
+   public static void main(String[] args)
+   {
+      JavaParser parser;
+      String filename = null;
+      long initTime = 0;
+      long parseTime = 0;
+      long startTime = 0;
+      long stopTime = 0;
+      if ( args.length == 0 )
+      {
+         System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Reading from standard input . . .");
+         parser = new JavaParser(System.in);
+      }
+      else
+         if ( args.length == 1 )
+         {
+            filename = args[0];
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Reading from file " + filename+ " . . .");
+            try
+            {
+               startTime = System.currentTimeMillis();
+               parser = new JavaParser(new java.io.FileInputStream(filename));
+               stopTime = System.currentTimeMillis();
+               initTime = stopTime - startTime;
+            }
+            catch (java.io.FileNotFoundException e)
+            {
+               System.out.println("Java Parser Version 1.1 (for Java1.2 code): 
 File " + filename+ " not found.");
+               return;
+            }
+         }
+         else
+         {
+            System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Usage is one of:");
+            System.out.println("         java JavaParser < inputfile");
+            System.out.println("OR");
+            System.out.println("         java JavaParser inputfile");
+            return;
+         }
+      try
+      {
+         startTime = System.currentTimeMillis();
+         parser.CompilationUnit();
+         stopTime = System.currentTimeMillis();
+         parseTime = stopTime - startTime;
+         System.out.println("Java Parser Version 1.1 (for Java1.2 code): ");
+         System.out.println("   Java program parsed " + filename+ " 
successfully in "+ (initTime + parseTime)+ " ms.");
+         System.out.println("      parser initialization time was " + 
initTime+ " ms.");
+         System.out.println("      parser parse time was " + parseTime+ " 
ms.");
+      }
+      catch (ParseException e)
+      {
+         System.out.println(e.getMessage());
+         System.out.println("Java Parser Version 1.1 (for Java1.2 code):  
Encountered errors during parse.");
+      }
+   }
+
+  final public CompilationUnit CompilationUnit() throws ParseException {
+   NodeOptional n0 = new NodeOptional();
+   PackageDeclaration n1;
+   NodeListOptional n2 = new NodeListOptional();
+   ImportDeclaration n3;
+   NodeListOptional n4 = new NodeListOptional();
+   TypeDeclaration n5;
+   NodeToken n6;
+   Token n7;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PACKAGE:
+      n1 = PackageDeclaration();
+        n0.addNode(n1);
+      break;
+    default:
+      jj_la1[0] = jj_gen;
+      ;
+    }
+    label_1:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case IMPORT:
+        ;
+        break;
+      default:
+        jj_la1[1] = jj_gen;
+        break label_1;
+      }
+      n3 = ImportDeclaration();
+        n2.addNode(n3);
+    }
+     n2.nodes.trimToSize();
+    label_2:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case CLASS:
+      case FINAL:
+      case INTERFACE:
+      case PUBLIC:
+      case STRICTFP:
+      case SEMICOLON:
+        ;
+        break;
+      default:
+        jj_la1[2] = jj_gen;
+        break label_2;
+      }
+      n5 = TypeDeclaration();
+        n4.addNode(n5);
+    }
+     n4.nodes.trimToSize();
+    n7 = jj_consume_token(0);
+      n7.beginColumn++; n7.endColumn++;
+      n6 = JTBToolkit.makeNodeToken(n7);
+     {if (true) return new CompilationUnit(n0,n2,n4,n6);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PackageDeclaration PackageDeclaration() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   Name n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+    n1 = jj_consume_token(PACKAGE);
+                  n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = Name();
+    n4 = jj_consume_token(SEMICOLON);
+            n3 = JTBToolkit.makeNodeToken(n4);
+     {if (true) return new PackageDeclaration(n0,n2,n3);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ImportDeclaration ImportDeclaration() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   Name n2;
+   NodeOptional n3 = new NodeOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+
+   {
+   }
+    n1 = jj_consume_token(IMPORT);
+                 n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = Name();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case DOT:
+        n4 = new NodeSequence(2);
+      n6 = jj_consume_token(DOT);
+               n5 = JTBToolkit.makeNodeToken(n6);
+        n4.addNode(n5);
+      n8 = jj_consume_token(STAR);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n4.addNode(n7);
+        n3.addNode(n4);
+      break;
+    default:
+      jj_la1[3] = jj_gen;
+      ;
+    }
+    n10 = jj_consume_token(SEMICOLON);
+             n9 = JTBToolkit.makeNodeToken(n10);
+     {if (true) return new ImportDeclaration(n0,n2,n3,n9);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public TypeDeclaration TypeDeclaration() throws ParseException {
+   NodeChoice n0;
+   ClassDeclaration n1;
+   InterfaceDeclaration n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+    if (jj_2_1(2147483647)) {
+      n1 = ClassDeclaration();
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case INTERFACE:
+      case PUBLIC:
+      case STRICTFP:
+        n2 = InterfaceDeclaration();
+        n0 = new NodeChoice(n2, 1);
+        break;
+      case SEMICOLON:
+        n4 = jj_consume_token(SEMICOLON);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n0 = new NodeChoice(n3, 2);
+        break;
+      default:
+        jj_la1[4] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new TypeDeclaration(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ClassDeclaration ClassDeclaration() throws ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   UnmodifiedClassDeclaration n10;
+
+   {
+   }
+    label_3:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case FINAL:
+      case PUBLIC:
+      case STRICTFP:
+        ;
+        break;
+      default:
+        jj_la1[5] = jj_gen;
+        break label_3;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+        n3 = jj_consume_token(ABSTRACT);
+                         n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case FINAL:
+        n5 = jj_consume_token(FINAL);
+                      n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case PUBLIC:
+        n7 = jj_consume_token(PUBLIC);
+                       n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      case STRICTFP:
+        n9 = jj_consume_token(STRICTFP);
+                         n8 = JTBToolkit.makeNodeToken(n9);
+           n1 = new NodeChoice(n8, 3);
+        break;
+      default:
+        jj_la1[6] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n10 = UnmodifiedClassDeclaration();
+     {if (true) return new ClassDeclaration(n0,n10);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public UnmodifiedClassDeclaration UnmodifiedClassDeclaration() throws 
ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   NodeOptional n4 = new NodeOptional();
+   NodeSequence n5;
+   NodeToken n6;
+   Token n7;
+   Name n8;
+   NodeOptional n9 = new NodeOptional();
+   NodeSequence n10;
+   NodeToken n11;
+   Token n12;
+   NameList n13;
+   ClassBody n14;
+
+   {
+   }
+    n1 = jj_consume_token(CLASS);
+                n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(IDENTIFIER);
+                     n2 = JTBToolkit.makeNodeToken(n3);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case EXTENDS:
+        n5 = new NodeSequence(2);
+      n7 = jj_consume_token(EXTENDS);
+                     n6 = JTBToolkit.makeNodeToken(n7);
+        n5.addNode(n6);
+      n8 = Name();
+        n5.addNode(n8);
+        n4.addNode(n5);
+      break;
+    default:
+      jj_la1[7] = jj_gen;
+      ;
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IMPLEMENTS:
+        n10 = new NodeSequence(2);
+      n12 = jj_consume_token(IMPLEMENTS);
+                         n11 = JTBToolkit.makeNodeToken(n12);
+        n10.addNode(n11);
+      n13 = NameList();
+        n10.addNode(n13);
+        n9.addNode(n10);
+      break;
+    default:
+      jj_la1[8] = jj_gen;
+      ;
+    }
+    n14 = ClassBody();
+     {if (true) return new UnmodifiedClassDeclaration(n0,n2,n4,n9,n14);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ClassBody ClassBody() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   ClassBodyDeclaration n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+    n1 = jj_consume_token(LBRACE);
+            n0 = JTBToolkit.makeNodeToken(n1);
+    label_4:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case CLASS:
+      case DOUBLE:
+      case FINAL:
+      case FLOAT:
+      case INT:
+      case INTERFACE:
+      case LONG:
+      case NATIVE:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case SHORT:
+      case STATIC:
+      case SYNCHRONIZED:
+      case TRANSIENT:
+      case VOID:
+      case VOLATILE:
+      case STRICTFP:
+      case IDENTIFIER:
+      case LBRACE:
+        ;
+        break;
+      default:
+        jj_la1[9] = jj_gen;
+        break label_4;
+      }
+      n3 = ClassBodyDeclaration();
+        n2.addNode(n3);
+    }
+     n2.nodes.trimToSize();
+    n5 = jj_consume_token(RBRACE);
+            n4 = JTBToolkit.makeNodeToken(n5);
+     {if (true) return new ClassBody(n0,n2,n4);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public NestedClassDeclaration NestedClassDeclaration() throws 
ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   UnmodifiedClassDeclaration n16;
+   NodeOptional n17 = new NodeOptional();
+   NodeToken n18;
+   Token n19;
+
+   {
+   }
+    label_5:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case FINAL:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case STATIC:
+      case STRICTFP:
+        ;
+        break;
+      default:
+        jj_la1[10] = jj_gen;
+        break label_5;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STATIC:
+        n3 = jj_consume_token(STATIC);
+                       n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case ABSTRACT:
+        n5 = jj_consume_token(ABSTRACT);
+                         n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case FINAL:
+        n7 = jj_consume_token(FINAL);
+                      n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      case PUBLIC:
+        n9 = jj_consume_token(PUBLIC);
+                       n8 = JTBToolkit.makeNodeToken(n9);
+           n1 = new NodeChoice(n8, 3);
+        break;
+      case PROTECTED:
+        n11 = jj_consume_token(PROTECTED);
+                           n10 = JTBToolkit.makeNodeToken(n11);
+           n1 = new NodeChoice(n10, 4);
+        break;
+      case PRIVATE:
+        n13 = jj_consume_token(PRIVATE);
+                         n12 = JTBToolkit.makeNodeToken(n13);
+           n1 = new NodeChoice(n12, 5);
+        break;
+      case STRICTFP:
+        n15 = jj_consume_token(STRICTFP);
+                          n14 = JTBToolkit.makeNodeToken(n15);
+           n1 = new NodeChoice(n14, 6);
+        break;
+      default:
+        jj_la1[11] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n16 = UnmodifiedClassDeclaration();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case SEMICOLON:
+      n19 = jj_consume_token(SEMICOLON);
+                n18 = JTBToolkit.makeNodeToken(n19);
+        n17.addNode(n18);
+      break;
+    default:
+      jj_la1[12] = jj_gen;
+      ;
+    }
+     {if (true) return new NestedClassDeclaration(n0,n16,n17);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ClassBodyDeclaration ClassBodyDeclaration() throws 
ParseException {
+   NodeChoice n0;
+   Initializer n1;
+   NestedClassDeclaration n2;
+   NestedInterfaceDeclaration n3;
+   ConstructorDeclaration n4;
+   MethodDeclaration n5;
+   FieldDeclaration n6;
+
+   {
+   }
+    if (jj_2_2(2)) {
+      n1 = Initializer();
+        n0 = new NodeChoice(n1, 0);
+    } else if (jj_2_3(2147483647)) {
+      n2 = NestedClassDeclaration();
+        n0 = new NodeChoice(n2, 1);
+    } else if (jj_2_4(2147483647)) {
+      n3 = NestedInterfaceDeclaration();
+        n0 = new NodeChoice(n3, 2);
+    } else if (jj_2_5(2147483647)) {
+      n4 = ConstructorDeclaration();
+        n0 = new NodeChoice(n4, 3);
+    } else if (jj_2_6(2147483647)) {
+      n5 = MethodDeclaration();
+        n0 = new NodeChoice(n5, 4);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case DOUBLE:
+      case FINAL:
+      case FLOAT:
+      case INT:
+      case LONG:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case SHORT:
+      case STATIC:
+      case TRANSIENT:
+      case VOLATILE:
+      case IDENTIFIER:
+        n6 = FieldDeclaration();
+        n0 = new NodeChoice(n6, 5);
+        break;
+      default:
+        jj_la1[13] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new ClassBodyDeclaration(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public MethodDeclarationLookahead MethodDeclarationLookahead() throws 
ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   NodeToken n16;
+   Token n17;
+   NodeToken n18;
+   Token n19;
+   ResultType n20;
+   NodeToken n21;
+   Token n22;
+   NodeToken n23;
+   Token n24;
+
+   {
+   }
+    label_6:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case FINAL:
+      case NATIVE:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case STATIC:
+      case SYNCHRONIZED:
+      case STRICTFP:
+        ;
+        break;
+      default:
+        jj_la1[14] = jj_gen;
+        break label_6;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PUBLIC:
+        n3 = jj_consume_token(PUBLIC);
+                       n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case PROTECTED:
+        n5 = jj_consume_token(PROTECTED);
+                          n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case PRIVATE:
+        n7 = jj_consume_token(PRIVATE);
+                        n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      case STATIC:
+        n9 = jj_consume_token(STATIC);
+                       n8 = JTBToolkit.makeNodeToken(n9);
+           n1 = new NodeChoice(n8, 3);
+        break;
+      case ABSTRACT:
+        n11 = jj_consume_token(ABSTRACT);
+                          n10 = JTBToolkit.makeNodeToken(n11);
+           n1 = new NodeChoice(n10, 4);
+        break;
+      case FINAL:
+        n13 = jj_consume_token(FINAL);
+                       n12 = JTBToolkit.makeNodeToken(n13);
+           n1 = new NodeChoice(n12, 5);
+        break;
+      case NATIVE:
+        n15 = jj_consume_token(NATIVE);
+                        n14 = JTBToolkit.makeNodeToken(n15);
+           n1 = new NodeChoice(n14, 6);
+        break;
+      case SYNCHRONIZED:
+        n17 = jj_consume_token(SYNCHRONIZED);
+                              n16 = JTBToolkit.makeNodeToken(n17);
+           n1 = new NodeChoice(n16, 7);
+        break;
+      case STRICTFP:
+        n19 = jj_consume_token(STRICTFP);
+                          n18 = JTBToolkit.makeNodeToken(n19);
+           n1 = new NodeChoice(n18, 8);
+        break;
+      default:
+        jj_la1[15] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n20 = ResultType();
+    n22 = jj_consume_token(IDENTIFIER);
+                      n21 = JTBToolkit.makeNodeToken(n22);
+    n24 = jj_consume_token(LPAREN);
+             n23 = JTBToolkit.makeNodeToken(n24);
+     {if (true) return new MethodDeclarationLookahead(n0,n20,n21,n23);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public InterfaceDeclaration InterfaceDeclaration() throws 
ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   UnmodifiedInterfaceDeclaration n8;
+
+   {
+   }
+    label_7:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case PUBLIC:
+      case STRICTFP:
+        ;
+        break;
+      default:
+        jj_la1[16] = jj_gen;
+        break label_7;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+        n3 = jj_consume_token(ABSTRACT);
+                         n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case PUBLIC:
+        n5 = jj_consume_token(PUBLIC);
+                       n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case STRICTFP:
+        n7 = jj_consume_token(STRICTFP);
+                         n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      default:
+        jj_la1[17] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n8 = UnmodifiedInterfaceDeclaration();
+     {if (true) return new InterfaceDeclaration(n0,n8);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public NestedInterfaceDeclaration NestedInterfaceDeclaration() throws 
ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   UnmodifiedInterfaceDeclaration n16;
+
+   {
+   }
+    label_8:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case FINAL:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case STATIC:
+      case STRICTFP:
+        ;
+        break;
+      default:
+        jj_la1[18] = jj_gen;
+        break label_8;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STATIC:
+        n3 = jj_consume_token(STATIC);
+                       n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case ABSTRACT:
+        n5 = jj_consume_token(ABSTRACT);
+                         n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case FINAL:
+        n7 = jj_consume_token(FINAL);
+                      n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      case PUBLIC:
+        n9 = jj_consume_token(PUBLIC);
+                       n8 = JTBToolkit.makeNodeToken(n9);
+           n1 = new NodeChoice(n8, 3);
+        break;
+      case PROTECTED:
+        n11 = jj_consume_token(PROTECTED);
+                           n10 = JTBToolkit.makeNodeToken(n11);
+           n1 = new NodeChoice(n10, 4);
+        break;
+      case PRIVATE:
+        n13 = jj_consume_token(PRIVATE);
+                         n12 = JTBToolkit.makeNodeToken(n13);
+           n1 = new NodeChoice(n12, 5);
+        break;
+      case STRICTFP:
+        n15 = jj_consume_token(STRICTFP);
+                          n14 = JTBToolkit.makeNodeToken(n15);
+           n1 = new NodeChoice(n14, 6);
+        break;
+      default:
+        jj_la1[19] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n16 = UnmodifiedInterfaceDeclaration();
+     {if (true) return new NestedInterfaceDeclaration(n0,n16);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public UnmodifiedInterfaceDeclaration UnmodifiedInterfaceDeclaration() 
throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   NodeOptional n4 = new NodeOptional();
+   NodeSequence n5;
+   NodeToken n6;
+   Token n7;
+   NameList n8;
+   NodeToken n9;
+   Token n10;
+   NodeListOptional n11 = new NodeListOptional();
+   InterfaceMemberDeclaration n12;
+   NodeToken n13;
+   Token n14;
+
+   {
+   }
+    n1 = jj_consume_token(INTERFACE);
+                    n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(IDENTIFIER);
+                     n2 = JTBToolkit.makeNodeToken(n3);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case EXTENDS:
+        n5 = new NodeSequence(2);
+      n7 = jj_consume_token(EXTENDS);
+                     n6 = JTBToolkit.makeNodeToken(n7);
+        n5.addNode(n6);
+      n8 = NameList();
+        n5.addNode(n8);
+        n4.addNode(n5);
+      break;
+    default:
+      jj_la1[20] = jj_gen;
+      ;
+    }
+    n10 = jj_consume_token(LBRACE);
+             n9 = JTBToolkit.makeNodeToken(n10);
+    label_9:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case CLASS:
+      case DOUBLE:
+      case FINAL:
+      case FLOAT:
+      case INT:
+      case INTERFACE:
+      case LONG:
+      case NATIVE:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case SHORT:
+      case STATIC:
+      case SYNCHRONIZED:
+      case TRANSIENT:
+      case VOID:
+      case VOLATILE:
+      case STRICTFP:
+      case IDENTIFIER:
+        ;
+        break;
+      default:
+        jj_la1[21] = jj_gen;
+        break label_9;
+      }
+      n12 = InterfaceMemberDeclaration();
+        n11.addNode(n12);
+    }
+     n11.nodes.trimToSize();
+    n14 = jj_consume_token(RBRACE);
+             n13 = JTBToolkit.makeNodeToken(n14);
+     {if (true) return new 
UnmodifiedInterfaceDeclaration(n0,n2,n4,n9,n11,n13);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public InterfaceMemberDeclaration InterfaceMemberDeclaration() throws 
ParseException {
+   NodeChoice n0;
+   NestedClassDeclaration n1;
+   NestedInterfaceDeclaration n2;
+   MethodDeclaration n3;
+   FieldDeclaration n4;
+
+   {
+   }
+    if (jj_2_7(2147483647)) {
+      n1 = NestedClassDeclaration();
+        n0 = new NodeChoice(n1, 0);
+    } else if (jj_2_8(2147483647)) {
+      n2 = NestedInterfaceDeclaration();
+        n0 = new NodeChoice(n2, 1);
+    } else if (jj_2_9(2147483647)) {
+      n3 = MethodDeclaration();
+        n0 = new NodeChoice(n3, 2);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case DOUBLE:
+      case FINAL:
+      case FLOAT:
+      case INT:
+      case LONG:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case SHORT:
+      case STATIC:
+      case TRANSIENT:
+      case VOLATILE:
+      case IDENTIFIER:
+        n4 = FieldDeclaration();
+        n0 = new NodeChoice(n4, 3);
+        break;
+      default:
+        jj_la1[22] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new InterfaceMemberDeclaration(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public FieldDeclaration FieldDeclaration() throws ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   Type n16;
+   VariableDeclarator n17;
+   NodeListOptional n18 = new NodeListOptional();
+   NodeSequence n19;
+   NodeToken n20;
+   Token n21;
+   VariableDeclarator n22;
+   NodeToken n23;
+   Token n24;
+
+   {
+   }
+    label_10:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case FINAL:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case STATIC:
+      case TRANSIENT:
+      case VOLATILE:
+        ;
+        break;
+      default:
+        jj_la1[23] = jj_gen;
+        break label_10;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PUBLIC:
+        n3 = jj_consume_token(PUBLIC);
+                       n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case PROTECTED:
+        n5 = jj_consume_token(PROTECTED);
+                          n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case PRIVATE:
+        n7 = jj_consume_token(PRIVATE);
+                        n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      case STATIC:
+        n9 = jj_consume_token(STATIC);
+                       n8 = JTBToolkit.makeNodeToken(n9);
+           n1 = new NodeChoice(n8, 3);
+        break;
+      case FINAL:
+        n11 = jj_consume_token(FINAL);
+                       n10 = JTBToolkit.makeNodeToken(n11);
+           n1 = new NodeChoice(n10, 4);
+        break;
+      case TRANSIENT:
+        n13 = jj_consume_token(TRANSIENT);
+                           n12 = JTBToolkit.makeNodeToken(n13);
+           n1 = new NodeChoice(n12, 5);
+        break;
+      case VOLATILE:
+        n15 = jj_consume_token(VOLATILE);
+                          n14 = JTBToolkit.makeNodeToken(n15);
+           n1 = new NodeChoice(n14, 6);
+        break;
+      default:
+        jj_la1[24] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n16 = Type();
+    n17 = VariableDeclarator();
+    label_11:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[25] = jj_gen;
+        break label_11;
+      }
+        n19 = new NodeSequence(2);
+      n21 = jj_consume_token(COMMA);
+                n20 = JTBToolkit.makeNodeToken(n21);
+        n19.addNode(n20);
+      n22 = VariableDeclarator();
+        n19.addNode(n22);
+        n18.addNode(n19);
+    }
+     n18.nodes.trimToSize();
+    n24 = jj_consume_token(SEMICOLON);
+             n23 = JTBToolkit.makeNodeToken(n24);
+     {if (true) return new FieldDeclaration(n0,n16,n17,n18,n23);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public VariableDeclarator VariableDeclarator() throws ParseException {
+   VariableDeclaratorId n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   VariableInitializer n5;
+
+   {
+   }
+    n0 = VariableDeclaratorId();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ASSIGN:
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(ASSIGN);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = VariableInitializer();
+        n2.addNode(n5);
+        n1.addNode(n2);
+      break;
+    default:
+      jj_la1[26] = jj_gen;
+      ;
+    }
+     {if (true) return new VariableDeclarator(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public VariableDeclaratorId VariableDeclaratorId() throws 
ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   NodeSequence n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+
+   {
+   }
+    n1 = jj_consume_token(IDENTIFIER);
+                     n0 = JTBToolkit.makeNodeToken(n1);
+    label_12:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACKET:
+        ;
+        break;
+      default:
+        jj_la1[27] = jj_gen;
+        break label_12;
+      }
+        n3 = new NodeSequence(2);
+      n5 = jj_consume_token(LBRACKET);
+               n4 = JTBToolkit.makeNodeToken(n5);
+        n3.addNode(n4);
+      n7 = jj_consume_token(RBRACKET);
+               n6 = JTBToolkit.makeNodeToken(n7);
+        n3.addNode(n6);
+        n2.addNode(n3);
+    }
+     n2.nodes.trimToSize();
+     {if (true) return new VariableDeclaratorId(n0,n2);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public VariableInitializer VariableInitializer() throws ParseException 
{
+   NodeChoice n0;
+   ArrayInitializer n1;
+   Expression n2;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case LBRACE:
+      n1 = ArrayInitializer();
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case BANG:
+    case TILDE:
+    case INCR:
+    case DECR:
+    case PLUS:
+    case MINUS:
+      n2 = Expression();
+        n0 = new NodeChoice(n2, 1);
+      break;
+    default:
+      jj_la1[28] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new VariableInitializer(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ArrayInitializer ArrayInitializer() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeSequence n3;
+   VariableInitializer n4;
+   NodeListOptional n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   VariableInitializer n9;
+   NodeOptional n10 = new NodeOptional();
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+
+   {
+   }
+    n1 = jj_consume_token(LBRACE);
+            n0 = JTBToolkit.makeNodeToken(n1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case LBRACE:
+    case BANG:
+    case TILDE:
+    case INCR:
+    case DECR:
+    case PLUS:
+    case MINUS:
+        n5 = new NodeListOptional();
+        n3 = new NodeSequence(2);
+      n4 = VariableInitializer();
+        n3.addNode(n4);
+      label_13:
+      while (true) {
+        if (jj_2_10(2)) {
+          ;
+        } else {
+          break label_13;
+        }
+           n6 = new NodeSequence(2);
+        n8 = jj_consume_token(COMMA);
+                  n7 = JTBToolkit.makeNodeToken(n8);
+           n6.addNode(n7);
+        n9 = VariableInitializer();
+           n6.addNode(n9);
+           n5.addNode(n6);
+      }
+        n5.nodes.trimToSize();
+        n3.addNode(n5);
+        n2.addNode(n3);
+      break;
+    default:
+      jj_la1[29] = jj_gen;
+      ;
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case COMMA:
+      n12 = jj_consume_token(COMMA);
+                n11 = JTBToolkit.makeNodeToken(n12);
+        n10.addNode(n11);
+      break;
+    default:
+      jj_la1[30] = jj_gen;
+      ;
+    }
+    n14 = jj_consume_token(RBRACE);
+             n13 = JTBToolkit.makeNodeToken(n14);
+     {if (true) return new ArrayInitializer(n0,n2,n10,n13);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public MethodDeclaration MethodDeclaration() throws ParseException {
+   NodeListOptional n0 = new NodeListOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   NodeToken n12;
+   Token n13;
+   NodeToken n14;
+   Token n15;
+   NodeToken n16;
+   Token n17;
+   NodeToken n18;
+   Token n19;
+   ResultType n20;
+   MethodDeclarator n21;
+   NodeOptional n22 = new NodeOptional();
+   NodeSequence n23;
+   NodeToken n24;
+   Token n25;
+   NameList n26;
+   NodeChoice n27;
+   Block n28;
+   NodeToken n29;
+   Token n30;
+   NodeOptional n31 = new NodeOptional();
+   NodeToken n32;
+   Token n33;
+
+   {
+   }
+    label_14:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ABSTRACT:
+      case FINAL:
+      case NATIVE:
+      case PRIVATE:
+      case PROTECTED:
+      case PUBLIC:
+      case STATIC:
+      case SYNCHRONIZED:
+      case STRICTFP:
+        ;
+        break;
+      default:
+        jj_la1[31] = jj_gen;
+        break label_14;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PUBLIC:
+        n3 = jj_consume_token(PUBLIC);
+                       n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case PROTECTED:
+        n5 = jj_consume_token(PROTECTED);
+                          n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case PRIVATE:
+        n7 = jj_consume_token(PRIVATE);
+                        n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      case STATIC:
+        n9 = jj_consume_token(STATIC);
+                       n8 = JTBToolkit.makeNodeToken(n9);
+           n1 = new NodeChoice(n8, 3);
+        break;
+      case ABSTRACT:
+        n11 = jj_consume_token(ABSTRACT);
+                          n10 = JTBToolkit.makeNodeToken(n11);
+           n1 = new NodeChoice(n10, 4);
+        break;
+      case FINAL:
+        n13 = jj_consume_token(FINAL);
+                       n12 = JTBToolkit.makeNodeToken(n13);
+           n1 = new NodeChoice(n12, 5);
+        break;
+      case NATIVE:
+        n15 = jj_consume_token(NATIVE);
+                        n14 = JTBToolkit.makeNodeToken(n15);
+           n1 = new NodeChoice(n14, 6);
+        break;
+      case SYNCHRONIZED:
+        n17 = jj_consume_token(SYNCHRONIZED);
+                              n16 = JTBToolkit.makeNodeToken(n17);
+           n1 = new NodeChoice(n16, 7);
+        break;
+      case STRICTFP:
+        n19 = jj_consume_token(STRICTFP);
+                          n18 = JTBToolkit.makeNodeToken(n19);
+           n1 = new NodeChoice(n18, 8);
+        break;
+      default:
+        jj_la1[32] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+    }
+     n0.nodes.trimToSize();
+    n20 = ResultType();
+    n21 = MethodDeclarator();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case THROWS:
+        n23 = new NodeSequence(2);
+      n25 = jj_consume_token(THROWS);
+                     n24 = JTBToolkit.makeNodeToken(n25);
+        n23.addNode(n24);
+      n26 = NameList();
+        n23.addNode(n26);
+        n22.addNode(n23);
+      break;
+    default:
+      jj_la1[33] = jj_gen;
+      ;
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case LBRACE:
+      n28 = Block();
+           n27 = new NodeChoice(n28, 0);
+      break;
+    case SEMICOLON:
+      n30 = jj_consume_token(SEMICOLON);
+                   n29 = JTBToolkit.makeNodeToken(n30);
+           n27 = new NodeChoice(n29, 1);
+      break;
+    default:
+      jj_la1[34] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case SEMICOLON:
+      n33 = jj_consume_token(SEMICOLON);
+                n32 = JTBToolkit.makeNodeToken(n33);
+        n31.addNode(n32);
+      break;
+    default:
+      jj_la1[35] = jj_gen;
+      ;
+    }
+     {if (true) return new MethodDeclaration(n0,n20,n21,n22,n27,n31);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public MethodDeclarator MethodDeclarator() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   FormalParameters n2;
+   NodeListOptional n3 = new NodeListOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+
+   {
+   }
+    n1 = jj_consume_token(IDENTIFIER);
+                     n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = FormalParameters();
+    label_15:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACKET:
+        ;
+        break;
+      default:
+        jj_la1[36] = jj_gen;
+        break label_15;
+      }
+        n4 = new NodeSequence(2);
+      n6 = jj_consume_token(LBRACKET);
+               n5 = JTBToolkit.makeNodeToken(n6);
+        n4.addNode(n5);
+      n8 = jj_consume_token(RBRACKET);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n4.addNode(n7);
+        n3.addNode(n4);
+    }
+     n3.nodes.trimToSize();
+     {if (true) return new MethodDeclarator(n0,n2,n3);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public FormalParameters FormalParameters() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeSequence n3;
+   FormalParameter n4;
+   NodeListOptional n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   FormalParameter n9;
+   NodeToken n10;
+   Token n11;
+
+   {
+   }
+    n1 = jj_consume_token(LPAREN);
+            n0 = JTBToolkit.makeNodeToken(n1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FINAL:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case SHORT:
+    case IDENTIFIER:
+        n5 = new NodeListOptional();
+        n3 = new NodeSequence(2);
+      n4 = FormalParameter();
+        n3.addNode(n4);
+      label_16:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case COMMA:
+          ;
+          break;
+        default:
+          jj_la1[37] = jj_gen;
+          break label_16;
+        }
+           n6 = new NodeSequence(2);
+        n8 = jj_consume_token(COMMA);
+                  n7 = JTBToolkit.makeNodeToken(n8);
+           n6.addNode(n7);
+        n9 = FormalParameter();
+           n6.addNode(n9);
+           n5.addNode(n6);
+      }
+        n5.nodes.trimToSize();
+        n3.addNode(n5);
+        n2.addNode(n3);
+      break;
+    default:
+      jj_la1[38] = jj_gen;
+      ;
+    }
+    n11 = jj_consume_token(RPAREN);
+             n10 = JTBToolkit.makeNodeToken(n11);
+     {if (true) return new FormalParameters(n0,n2,n10);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public FormalParameter FormalParameter() throws ParseException {
+   NodeOptional n0 = new NodeOptional();
+   NodeToken n1;
+   Token n2;
+   Type n3;
+   VariableDeclaratorId n4;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case FINAL:
+      n2 = jj_consume_token(FINAL);
+                   n1 = JTBToolkit.makeNodeToken(n2);
+        n0.addNode(n1);
+      break;
+    default:
+      jj_la1[39] = jj_gen;
+      ;
+    }
+    n3 = Type();
+    n4 = VariableDeclaratorId();
+     {if (true) return new FormalParameter(n0,n3,n4);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ConstructorDeclaration ConstructorDeclaration() throws 
ParseException {
+   NodeOptional n0 = new NodeOptional();
+   NodeChoice n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   FormalParameters n10;
+   NodeOptional n11 = new NodeOptional();
+   NodeSequence n12;
+   NodeToken n13;
+   Token n14;
+   NameList n15;
+   NodeToken n16;
+   Token n17;
+   NodeOptional n18 = new NodeOptional();
+   ExplicitConstructorInvocation n19;
+   NodeListOptional n20 = new NodeListOptional();
+   BlockStatement n21;
+   NodeToken n22;
+   Token n23;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PRIVATE:
+    case PROTECTED:
+    case PUBLIC:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PUBLIC:
+        n3 = jj_consume_token(PUBLIC);
+                       n2 = JTBToolkit.makeNodeToken(n3);
+           n1 = new NodeChoice(n2, 0);
+        break;
+      case PROTECTED:
+        n5 = jj_consume_token(PROTECTED);
+                          n4 = JTBToolkit.makeNodeToken(n5);
+           n1 = new NodeChoice(n4, 1);
+        break;
+      case PRIVATE:
+        n7 = jj_consume_token(PRIVATE);
+                        n6 = JTBToolkit.makeNodeToken(n7);
+           n1 = new NodeChoice(n6, 2);
+        break;
+      default:
+        jj_la1[40] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n0.addNode(n1);
+      break;
+    default:
+      jj_la1[41] = jj_gen;
+      ;
+    }
+    n9 = jj_consume_token(IDENTIFIER);
+                     n8 = JTBToolkit.makeNodeToken(n9);
+    n10 = FormalParameters();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case THROWS:
+        n12 = new NodeSequence(2);
+      n14 = jj_consume_token(THROWS);
+                     n13 = JTBToolkit.makeNodeToken(n14);
+        n12.addNode(n13);
+      n15 = NameList();
+        n12.addNode(n15);
+        n11.addNode(n12);
+      break;
+    default:
+      jj_la1[42] = jj_gen;
+      ;
+    }
+    n17 = jj_consume_token(LBRACE);
+             n16 = JTBToolkit.makeNodeToken(n17);
+    if (jj_2_11(2147483647)) {
+      n19 = ExplicitConstructorInvocation();
+        n18.addNode(n19);
+    } else {
+      ;
+    }
+    label_17:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BREAK:
+      case BYTE:
+      case CHAR:
+      case CLASS:
+      case CONTINUE:
+      case DO:
+      case DOUBLE:
+      case FALSE:
+      case FINAL:
+      case FLOAT:
+      case FOR:
+      case IF:
+      case INT:
+      case INTERFACE:
+      case LONG:
+      case NEW:
+      case NULL:
+      case RETURN:
+      case SHORT:
+      case SUPER:
+      case SWITCH:
+      case SYNCHRONIZED:
+      case THIS:
+      case THROW:
+      case TRUE:
+      case TRY:
+      case VOID:
+      case WHILE:
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case CHARACTER_LITERAL:
+      case STRING_LITERAL:
+      case IDENTIFIER:
+      case LPAREN:
+      case LBRACE:
+      case SEMICOLON:
+      case INCR:
+      case DECR:
+        ;
+        break;
+      default:
+        jj_la1[43] = jj_gen;
+        break label_17;
+      }
+      n21 = BlockStatement();
+        n20.addNode(n21);
+    }
+     n20.nodes.trimToSize();
+    n23 = jj_consume_token(RBRACE);
+             n22 = JTBToolkit.makeNodeToken(n23);
+     {if (true) return new 
ConstructorDeclaration(n0,n8,n10,n11,n16,n18,n20,n22);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ExplicitConstructorInvocation ExplicitConstructorInvocation() 
throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   Arguments n4;
+   NodeToken n5;
+   Token n6;
+   NodeSequence n7;
+   NodeOptional n8 = new NodeOptional();
+   NodeSequence n9;
+   PrimaryExpression n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   Arguments n15;
+   NodeToken n16;
+   Token n17;
+
+   {
+   }
+    if (jj_2_13(2147483647)) {
+        n1 = new NodeSequence(4);
+      n3 = jj_consume_token(THIS);
+                  n2 = JTBToolkit.makeNodeToken(n3);
+        n1.addNode(n2);
+      n4 = Arguments();
+        n1.addNode(n4);
+      n6 = jj_consume_token(SEMICOLON);
+               n5 = JTBToolkit.makeNodeToken(n6);
+        n1.addNode(n5);
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case DOUBLE:
+      case FALSE:
+      case FLOAT:
+      case INT:
+      case LONG:
+      case NEW:
+      case NULL:
+      case SHORT:
+      case SUPER:
+      case THIS:
+      case TRUE:
+      case VOID:
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case CHARACTER_LITERAL:
+      case STRING_LITERAL:
+      case IDENTIFIER:
+      case LPAREN:
+        n7 = new NodeSequence(4);
+        if (jj_2_12(2)) {
+           n9 = new NodeSequence(2);
+          n10 = PrimaryExpression();
+           n9.addNode(n10);
+          n12 = jj_consume_token(DOT);
+                   n11 = JTBToolkit.makeNodeToken(n12);
+           n9.addNode(n11);
+           n8.addNode(n9);
+        } else {
+          ;
+        }
+        n7.addNode(n8);
+        n14 = jj_consume_token(SUPER);
+                    n13 = JTBToolkit.makeNodeToken(n14);
+        n7.addNode(n13);
+        n15 = Arguments();
+        n7.addNode(n15);
+        n17 = jj_consume_token(SEMICOLON);
+                n16 = JTBToolkit.makeNodeToken(n17);
+        n7.addNode(n16);
+        n0 = new NodeChoice(n7, 1);
+        break;
+      default:
+        jj_la1[44] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new ExplicitConstructorInvocation(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Initializer Initializer() throws ParseException {
+   NodeOptional n0 = new NodeOptional();
+   NodeToken n1;
+   Token n2;
+   Block n3;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case STATIC:
+      n2 = jj_consume_token(STATIC);
+                    n1 = JTBToolkit.makeNodeToken(n2);
+        n0.addNode(n1);
+      break;
+    default:
+      jj_la1[45] = jj_gen;
+      ;
+    }
+    n3 = Block();
+     {if (true) return new Initializer(n0,n3);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Type Type() throws ParseException {
+   NodeChoice n0;
+   PrimitiveType n1;
+   Name n2;
+   NodeListOptional n3 = new NodeListOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case SHORT:
+      n1 = PrimitiveType();
+           n0 = new NodeChoice(n1, 0);
+      break;
+    case IDENTIFIER:
+      n2 = Name();
+           n0 = new NodeChoice(n2, 1);
+      break;
+    default:
+      jj_la1[46] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    label_18:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACKET:
+        ;
+        break;
+      default:
+        jj_la1[47] = jj_gen;
+        break label_18;
+      }
+        n4 = new NodeSequence(2);
+      n6 = jj_consume_token(LBRACKET);
+               n5 = JTBToolkit.makeNodeToken(n6);
+        n4.addNode(n5);
+      n8 = jj_consume_token(RBRACKET);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n4.addNode(n7);
+        n3.addNode(n4);
+    }
+     n3.nodes.trimToSize();
+     {if (true) return new Type(n0,n3);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PrimitiveType PrimitiveType() throws ParseException {
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   NodeToken n15;
+   Token n16;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+      n2 = jj_consume_token(BOOLEAN);
+                     n1 = JTBToolkit.makeNodeToken(n2);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case CHAR:
+      n4 = jj_consume_token(CHAR);
+                  n3 = JTBToolkit.makeNodeToken(n4);
+        n0 = new NodeChoice(n3, 1);
+      break;
+    case BYTE:
+      n6 = jj_consume_token(BYTE);
+                  n5 = JTBToolkit.makeNodeToken(n6);
+        n0 = new NodeChoice(n5, 2);
+      break;
+    case SHORT:
+      n8 = jj_consume_token(SHORT);
+                   n7 = JTBToolkit.makeNodeToken(n8);
+        n0 = new NodeChoice(n7, 3);
+      break;
+    case INT:
+      n10 = jj_consume_token(INT);
+                  n9 = JTBToolkit.makeNodeToken(n10);
+        n0 = new NodeChoice(n9, 4);
+      break;
+    case LONG:
+      n12 = jj_consume_token(LONG);
+                   n11 = JTBToolkit.makeNodeToken(n12);
+        n0 = new NodeChoice(n11, 5);
+      break;
+    case FLOAT:
+      n14 = jj_consume_token(FLOAT);
+                    n13 = JTBToolkit.makeNodeToken(n14);
+        n0 = new NodeChoice(n13, 6);
+      break;
+    case DOUBLE:
+      n16 = jj_consume_token(DOUBLE);
+                     n15 = JTBToolkit.makeNodeToken(n16);
+        n0 = new NodeChoice(n15, 7);
+      break;
+    default:
+      jj_la1[48] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new PrimitiveType(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ResultType ResultType() throws ParseException {
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   Type n3;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case VOID:
+      n2 = jj_consume_token(VOID);
+                  n1 = JTBToolkit.makeNodeToken(n2);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case SHORT:
+    case IDENTIFIER:
+      n3 = Type();
+        n0 = new NodeChoice(n3, 1);
+      break;
+    default:
+      jj_la1[49] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new ResultType(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Name Name() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   NodeSequence n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+
+   {
+   }
+    n1 = jj_consume_token(IDENTIFIER);
+                     n0 = JTBToolkit.makeNodeToken(n1);
+    label_19:
+    while (true) {
+      if (jj_2_14(2)) {
+        ;
+      } else {
+        break label_19;
+      }
+        n3 = new NodeSequence(2);
+      n5 = jj_consume_token(DOT);
+               n4 = JTBToolkit.makeNodeToken(n5);
+        n3.addNode(n4);
+      n7 = jj_consume_token(IDENTIFIER);
+                        n6 = JTBToolkit.makeNodeToken(n7);
+        n3.addNode(n6);
+        n2.addNode(n3);
+    }
+     n2.nodes.trimToSize();
+     {if (true) return new Name(n0,n2);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public NameList NameList() throws ParseException {
+   Name n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Name n5;
+
+   {
+   }
+    n0 = Name();
+    label_20:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[50] = jj_gen;
+        break label_20;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(COMMA);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = Name();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new NameList(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Expression Expression() throws ParseException {
+   ConditionalExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   AssignmentOperator n3;
+   Expression n4;
+
+   {
+   }
+    n0 = ConditionalExpression();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ASSIGN:
+    case PLUSASSIGN:
+    case MINUSASSIGN:
+    case STARASSIGN:
+    case SLASHASSIGN:
+    case ANDASSIGN:
+    case ORASSIGN:
+    case XORASSIGN:
+    case REMASSIGN:
+    case LSHIFTASSIGN:
+    case RSIGNEDSHIFTASSIGN:
+    case RUNSIGNEDSHIFTASSIGN:
+        n2 = new NodeSequence(2);
+      n3 = AssignmentOperator();
+        n2.addNode(n3);
+      n4 = Expression();
+        n2.addNode(n4);
+        n1.addNode(n2);
+      break;
+    default:
+      jj_la1[51] = jj_gen;
+      ;
+    }
+     {if (true) return new Expression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public AssignmentOperator AssignmentOperator() throws ParseException {
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   NodeToken n15;
+   Token n16;
+   NodeToken n17;
+   Token n18;
+   NodeToken n19;
+   Token n20;
+   NodeToken n21;
+   Token n22;
+   NodeToken n23;
+   Token n24;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ASSIGN:
+      n2 = jj_consume_token(ASSIGN);
+               n1 = JTBToolkit.makeNodeToken(n2);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case STARASSIGN:
+      n4 = jj_consume_token(STARASSIGN);
+                n3 = JTBToolkit.makeNodeToken(n4);
+        n0 = new NodeChoice(n3, 1);
+      break;
+    case SLASHASSIGN:
+      n6 = jj_consume_token(SLASHASSIGN);
+                n5 = JTBToolkit.makeNodeToken(n6);
+        n0 = new NodeChoice(n5, 2);
+      break;
+    case REMASSIGN:
+      n8 = jj_consume_token(REMASSIGN);
+                n7 = JTBToolkit.makeNodeToken(n8);
+        n0 = new NodeChoice(n7, 3);
+      break;
+    case PLUSASSIGN:
+      n10 = jj_consume_token(PLUSASSIGN);
+                 n9 = JTBToolkit.makeNodeToken(n10);
+        n0 = new NodeChoice(n9, 4);
+      break;
+    case MINUSASSIGN:
+      n12 = jj_consume_token(MINUSASSIGN);
+                 n11 = JTBToolkit.makeNodeToken(n12);
+        n0 = new NodeChoice(n11, 5);
+      break;
+    case LSHIFTASSIGN:
+      n14 = jj_consume_token(LSHIFTASSIGN);
+                  n13 = JTBToolkit.makeNodeToken(n14);
+        n0 = new NodeChoice(n13, 6);
+      break;
+    case RSIGNEDSHIFTASSIGN:
+      n16 = jj_consume_token(RSIGNEDSHIFTASSIGN);
+                  n15 = JTBToolkit.makeNodeToken(n16);
+        n0 = new NodeChoice(n15, 7);
+      break;
+    case RUNSIGNEDSHIFTASSIGN:
+      n18 = jj_consume_token(RUNSIGNEDSHIFTASSIGN);
+                   n17 = JTBToolkit.makeNodeToken(n18);
+        n0 = new NodeChoice(n17, 8);
+      break;
+    case ANDASSIGN:
+      n20 = jj_consume_token(ANDASSIGN);
+                 n19 = JTBToolkit.makeNodeToken(n20);
+        n0 = new NodeChoice(n19, 9);
+      break;
+    case XORASSIGN:
+      n22 = jj_consume_token(XORASSIGN);
+                 n21 = JTBToolkit.makeNodeToken(n22);
+        n0 = new NodeChoice(n21, 10);
+      break;
+    case ORASSIGN:
+      n24 = jj_consume_token(ORASSIGN);
+                 n23 = JTBToolkit.makeNodeToken(n24);
+        n0 = new NodeChoice(n23, 11);
+      break;
+    default:
+      jj_la1[52] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new AssignmentOperator(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ConditionalExpression ConditionalExpression() throws 
ParseException {
+   ConditionalOrExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Expression n5;
+   NodeToken n6;
+   Token n7;
+   ConditionalExpression n8;
+
+   {
+   }
+    n0 = ConditionalOrExpression();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case HOOK:
+        n2 = new NodeSequence(4);
+      n4 = jj_consume_token(HOOK);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = Expression();
+        n2.addNode(n5);
+      n7 = jj_consume_token(COLON);
+               n6 = JTBToolkit.makeNodeToken(n7);
+        n2.addNode(n6);
+      n8 = ConditionalExpression();
+        n2.addNode(n8);
+        n1.addNode(n2);
+      break;
+    default:
+      jj_la1[53] = jj_gen;
+      ;
+    }
+     {if (true) return new ConditionalExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ConditionalOrExpression ConditionalOrExpression() throws 
ParseException {
+   ConditionalAndExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   ConditionalAndExpression n5;
+
+   {
+   }
+    n0 = ConditionalAndExpression();
+    label_21:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SC_OR:
+        ;
+        break;
+      default:
+        jj_la1[54] = jj_gen;
+        break label_21;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(SC_OR);
+                n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = ConditionalAndExpression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new ConditionalOrExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ConditionalAndExpression ConditionalAndExpression() throws 
ParseException {
+   InclusiveOrExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   InclusiveOrExpression n5;
+
+   {
+   }
+    n0 = InclusiveOrExpression();
+    label_22:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case SC_AND:
+        ;
+        break;
+      default:
+        jj_la1[55] = jj_gen;
+        break label_22;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(SC_AND);
+                n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = InclusiveOrExpression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new ConditionalAndExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public InclusiveOrExpression InclusiveOrExpression() throws 
ParseException {
+   ExclusiveOrExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   ExclusiveOrExpression n5;
+
+   {
+   }
+    n0 = ExclusiveOrExpression();
+    label_23:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BIT_OR:
+        ;
+        break;
+      default:
+        jj_la1[56] = jj_gen;
+        break label_23;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(BIT_OR);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = ExclusiveOrExpression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new InclusiveOrExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ExclusiveOrExpression ExclusiveOrExpression() throws 
ParseException {
+   AndExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   AndExpression n5;
+
+   {
+   }
+    n0 = AndExpression();
+    label_24:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case XOR:
+        ;
+        break;
+      default:
+        jj_la1[57] = jj_gen;
+        break label_24;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(XOR);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = AndExpression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new ExclusiveOrExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public AndExpression AndExpression() throws ParseException {
+   EqualityExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   EqualityExpression n5;
+
+   {
+   }
+    n0 = EqualityExpression();
+    label_25:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BIT_AND:
+        ;
+        break;
+      default:
+        jj_la1[58] = jj_gen;
+        break label_25;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(BIT_AND);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = EqualityExpression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new AndExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public EqualityExpression EqualityExpression() throws ParseException {
+   InstanceOfExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   InstanceOfExpression n8;
+
+   {
+   }
+    n0 = InstanceOfExpression();
+    label_26:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case EQ:
+      case NE:
+        ;
+        break;
+      default:
+        jj_la1[59] = jj_gen;
+        break label_26;
+      }
+        n2 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case EQ:
+        n5 = jj_consume_token(EQ);
+                      n4 = JTBToolkit.makeNodeToken(n5);
+              n3 = new NodeChoice(n4, 0);
+        break;
+      case NE:
+        n7 = jj_consume_token(NE);
+                      n6 = JTBToolkit.makeNodeToken(n7);
+              n3 = new NodeChoice(n6, 1);
+        break;
+      default:
+        jj_la1[60] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n2.addNode(n3);
+      n8 = InstanceOfExpression();
+        n2.addNode(n8);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new EqualityExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public InstanceOfExpression InstanceOfExpression() throws 
ParseException {
+   RelationalExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Type n5;
+
+   {
+   }
+    n0 = RelationalExpression();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INSTANCEOF:
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(INSTANCEOF);
+                        n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = Type();
+        n2.addNode(n5);
+        n1.addNode(n2);
+      break;
+    default:
+      jj_la1[61] = jj_gen;
+      ;
+    }
+     {if (true) return new InstanceOfExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public RelationalExpression RelationalExpression() throws 
ParseException {
+   ShiftExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+   ShiftExpression n12;
+
+   {
+   }
+    n0 = ShiftExpression();
+    label_27:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case GT:
+      case LT:
+      case LE:
+      case GE:
+        ;
+        break;
+      default:
+        jj_la1[62] = jj_gen;
+        break label_27;
+      }
+        n2 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LT:
+        n5 = jj_consume_token(LT);
+                     n4 = JTBToolkit.makeNodeToken(n5);
+              n3 = new NodeChoice(n4, 0);
+        break;
+      case GT:
+        n7 = jj_consume_token(GT);
+                     n6 = JTBToolkit.makeNodeToken(n7);
+              n3 = new NodeChoice(n6, 1);
+        break;
+      case LE:
+        n9 = jj_consume_token(LE);
+                      n8 = JTBToolkit.makeNodeToken(n9);
+              n3 = new NodeChoice(n8, 2);
+        break;
+      case GE:
+        n11 = jj_consume_token(GE);
+                       n10 = JTBToolkit.makeNodeToken(n11);
+              n3 = new NodeChoice(n10, 3);
+        break;
+      default:
+        jj_la1[63] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n2.addNode(n3);
+      n12 = ShiftExpression();
+        n2.addNode(n12);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new RelationalExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ShiftExpression ShiftExpression() throws ParseException {
+   AdditiveExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   AdditiveExpression n10;
+
+   {
+   }
+    n0 = AdditiveExpression();
+    label_28:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LSHIFT:
+      case RSIGNEDSHIFT:
+      case RUNSIGNEDSHIFT:
+        ;
+        break;
+      default:
+        jj_la1[64] = jj_gen;
+        break label_28;
+      }
+        n2 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LSHIFT:
+        n5 = jj_consume_token(LSHIFT);
+                      n4 = JTBToolkit.makeNodeToken(n5);
+              n3 = new NodeChoice(n4, 0);
+        break;
+      case RSIGNEDSHIFT:
+        n7 = jj_consume_token(RSIGNEDSHIFT);
+                      n6 = JTBToolkit.makeNodeToken(n7);
+              n3 = new NodeChoice(n6, 1);
+        break;
+      case RUNSIGNEDSHIFT:
+        n9 = jj_consume_token(RUNSIGNEDSHIFT);
+                       n8 = JTBToolkit.makeNodeToken(n9);
+              n3 = new NodeChoice(n8, 2);
+        break;
+      default:
+        jj_la1[65] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n2.addNode(n3);
+      n10 = AdditiveExpression();
+        n2.addNode(n10);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new ShiftExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public AdditiveExpression AdditiveExpression() throws ParseException {
+   MultiplicativeExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   MultiplicativeExpression n8;
+
+   {
+   }
+    n0 = MultiplicativeExpression();
+    label_29:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+      case MINUS:
+        ;
+        break;
+      default:
+        jj_la1[66] = jj_gen;
+        break label_29;
+      }
+        n2 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+        n5 = jj_consume_token(PLUS);
+                     n4 = JTBToolkit.makeNodeToken(n5);
+              n3 = new NodeChoice(n4, 0);
+        break;
+      case MINUS:
+        n7 = jj_consume_token(MINUS);
+                     n6 = JTBToolkit.makeNodeToken(n7);
+              n3 = new NodeChoice(n6, 1);
+        break;
+      default:
+        jj_la1[67] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n2.addNode(n3);
+      n8 = MultiplicativeExpression();
+        n2.addNode(n8);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new AdditiveExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public MultiplicativeExpression MultiplicativeExpression() throws 
ParseException {
+   UnaryExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeChoice n3;
+   NodeToken n4;
+   Token n5;
+   NodeToken n6;
+   Token n7;
+   NodeToken n8;
+   Token n9;
+   UnaryExpression n10;
+
+   {
+   }
+    n0 = UnaryExpression();
+    label_30:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STAR:
+      case SLASH:
+      case REM:
+        ;
+        break;
+      default:
+        jj_la1[68] = jj_gen;
+        break label_30;
+      }
+        n2 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case STAR:
+        n5 = jj_consume_token(STAR);
+                     n4 = JTBToolkit.makeNodeToken(n5);
+              n3 = new NodeChoice(n4, 0);
+        break;
+      case SLASH:
+        n7 = jj_consume_token(SLASH);
+                     n6 = JTBToolkit.makeNodeToken(n7);
+              n3 = new NodeChoice(n6, 1);
+        break;
+      case REM:
+        n9 = jj_consume_token(REM);
+                     n8 = JTBToolkit.makeNodeToken(n9);
+              n3 = new NodeChoice(n8, 2);
+        break;
+      default:
+        jj_la1[69] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n2.addNode(n3);
+      n10 = UnaryExpression();
+        n2.addNode(n10);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new MultiplicativeExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public UnaryExpression UnaryExpression() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeChoice n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   UnaryExpression n7;
+   PreIncrementExpression n8;
+   PreDecrementExpression n9;
+   UnaryExpressionNotPlusMinus n10;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case PLUS:
+    case MINUS:
+        n1 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case PLUS:
+        n4 = jj_consume_token(PLUS);
+                     n3 = JTBToolkit.makeNodeToken(n4);
+              n2 = new NodeChoice(n3, 0);
+        break;
+      case MINUS:
+        n6 = jj_consume_token(MINUS);
+                     n5 = JTBToolkit.makeNodeToken(n6);
+              n2 = new NodeChoice(n5, 1);
+        break;
+      default:
+        jj_la1[70] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n1.addNode(n2);
+      n7 = UnaryExpression();
+        n1.addNode(n7);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case INCR:
+      n8 = PreIncrementExpression();
+        n0 = new NodeChoice(n8, 1);
+      break;
+    case DECR:
+      n9 = PreDecrementExpression();
+        n0 = new NodeChoice(n9, 2);
+      break;
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case BANG:
+    case TILDE:
+      n10 = UnaryExpressionNotPlusMinus();
+        n0 = new NodeChoice(n10, 3);
+      break;
+    default:
+      jj_la1[71] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new UnaryExpression(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PreIncrementExpression PreIncrementExpression() throws 
ParseException {
+   NodeToken n0;
+   Token n1;
+   PrimaryExpression n2;
+
+   {
+   }
+    n1 = jj_consume_token(INCR);
+             n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = PrimaryExpression();
+     {if (true) return new PreIncrementExpression(n0,n2);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PreDecrementExpression PreDecrementExpression() throws 
ParseException {
+   NodeToken n0;
+   Token n1;
+   PrimaryExpression n2;
+
+   {
+   }
+    n1 = jj_consume_token(DECR);
+             n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = PrimaryExpression();
+     {if (true) return new PreDecrementExpression(n0,n2);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public UnaryExpressionNotPlusMinus UnaryExpressionNotPlusMinus() 
throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeChoice n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   UnaryExpression n7;
+   CastExpression n8;
+   PostfixExpression n9;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BANG:
+    case TILDE:
+        n1 = new NodeSequence(2);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case TILDE:
+        n4 = jj_consume_token(TILDE);
+                     n3 = JTBToolkit.makeNodeToken(n4);
+              n2 = new NodeChoice(n3, 0);
+        break;
+      case BANG:
+        n6 = jj_consume_token(BANG);
+                     n5 = JTBToolkit.makeNodeToken(n6);
+              n2 = new NodeChoice(n5, 1);
+        break;
+      default:
+        jj_la1[72] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n1.addNode(n2);
+      n7 = UnaryExpression();
+        n1.addNode(n7);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    default:
+      jj_la1[73] = jj_gen;
+      if (jj_2_15(2147483647)) {
+        n8 = CastExpression();
+        n0 = new NodeChoice(n8, 1);
+      } else {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case BOOLEAN:
+        case BYTE:
+        case CHAR:
+        case DOUBLE:
+        case FALSE:
+        case FLOAT:
+        case INT:
+        case LONG:
+        case NEW:
+        case NULL:
+        case SHORT:
+        case SUPER:
+        case THIS:
+        case TRUE:
+        case VOID:
+        case INTEGER_LITERAL:
+        case FLOATING_POINT_LITERAL:
+        case CHARACTER_LITERAL:
+        case STRING_LITERAL:
+        case IDENTIFIER:
+        case LPAREN:
+          n9 = PostfixExpression();
+        n0 = new NodeChoice(n9, 2);
+          break;
+        default:
+          jj_la1[74] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+    }
+     {if (true) return new UnaryExpressionNotPlusMinus(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public CastLookahead CastLookahead() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   PrimitiveType n4;
+   NodeSequence n5;
+   NodeToken n6;
+   Token n7;
+   Name n8;
+   NodeToken n9;
+   Token n10;
+   NodeToken n11;
+   Token n12;
+   NodeSequence n13;
+   NodeToken n14;
+   Token n15;
+   Name n16;
+   NodeToken n17;
+   Token n18;
+   NodeChoice n19;
+   NodeToken n20;
+   Token n21;
+   NodeToken n22;
+   Token n23;
+   NodeToken n24;
+   Token n25;
+   NodeToken n26;
+   Token n27;
+   NodeToken n28;
+   Token n29;
+   NodeToken n30;
+   Token n31;
+   NodeToken n32;
+   Token n33;
+   Literal n34;
+
+   {
+   }
+    if (jj_2_16(2)) {
+        n1 = new NodeSequence(3);
+      n3 = jj_consume_token(LPAREN);
+               n2 = JTBToolkit.makeNodeToken(n3);
+        n1.addNode(n2);
+      n4 = PrimitiveType();
+        n1.addNode(n4);
+        n0 = new NodeChoice(n1, 0);
+    } else if (jj_2_17(2147483647)) {
+        n5 = new NodeSequence(5);
+      n7 = jj_consume_token(LPAREN);
+               n6 = JTBToolkit.makeNodeToken(n7);
+        n5.addNode(n6);
+      n8 = Name();
+        n5.addNode(n8);
+      n10 = jj_consume_token(LBRACKET);
+                n9 = JTBToolkit.makeNodeToken(n10);
+        n5.addNode(n9);
+      n12 = jj_consume_token(RBRACKET);
+                n11 = JTBToolkit.makeNodeToken(n12);
+        n5.addNode(n11);
+        n0 = new NodeChoice(n5, 1);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LPAREN:
+        n13 = new NodeSequence(4);
+        n15 = jj_consume_token(LPAREN);
+                n14 = JTBToolkit.makeNodeToken(n15);
+        n13.addNode(n14);
+        n16 = Name();
+        n13.addNode(n16);
+        n18 = jj_consume_token(RPAREN);
+                n17 = JTBToolkit.makeNodeToken(n18);
+        n13.addNode(n17);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case TILDE:
+          n21 = jj_consume_token(TILDE);
+                      n20 = JTBToolkit.makeNodeToken(n21);
+              n19 = new NodeChoice(n20, 0);
+          break;
+        case BANG:
+          n23 = jj_consume_token(BANG);
+                      n22 = JTBToolkit.makeNodeToken(n23);
+              n19 = new NodeChoice(n22, 1);
+          break;
+        case LPAREN:
+          n25 = jj_consume_token(LPAREN);
+                      n24 = JTBToolkit.makeNodeToken(n25);
+              n19 = new NodeChoice(n24, 2);
+          break;
+        case IDENTIFIER:
+          n27 = jj_consume_token(IDENTIFIER);
+                               n26 = JTBToolkit.makeNodeToken(n27);
+              n19 = new NodeChoice(n26, 3);
+          break;
+        case THIS:
+          n29 = jj_consume_token(THIS);
+                         n28 = JTBToolkit.makeNodeToken(n29);
+              n19 = new NodeChoice(n28, 4);
+          break;
+        case SUPER:
+          n31 = jj_consume_token(SUPER);
+                          n30 = JTBToolkit.makeNodeToken(n31);
+              n19 = new NodeChoice(n30, 5);
+          break;
+        case NEW:
+          n33 = jj_consume_token(NEW);
+                        n32 = JTBToolkit.makeNodeToken(n33);
+              n19 = new NodeChoice(n32, 6);
+          break;
+        case FALSE:
+        case NULL:
+        case TRUE:
+        case INTEGER_LITERAL:
+        case FLOATING_POINT_LITERAL:
+        case CHARACTER_LITERAL:
+        case STRING_LITERAL:
+          n34 = Literal();
+              n19 = new NodeChoice(n34, 7);
+          break;
+        default:
+          jj_la1[75] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        n13.addNode(n19);
+        n0 = new NodeChoice(n13, 2);
+        break;
+      default:
+        jj_la1[76] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new CastLookahead(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PostfixExpression PostfixExpression() throws ParseException {
+   PrimaryExpression n0;
+   NodeOptional n1 = new NodeOptional();
+   NodeChoice n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+
+   {
+   }
+    n0 = PrimaryExpression();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INCR:
+    case DECR:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case INCR:
+        n4 = jj_consume_token(INCR);
+                   n3 = JTBToolkit.makeNodeToken(n4);
+           n2 = new NodeChoice(n3, 0);
+        break;
+      case DECR:
+        n6 = jj_consume_token(DECR);
+                   n5 = JTBToolkit.makeNodeToken(n6);
+           n2 = new NodeChoice(n5, 1);
+        break;
+      default:
+        jj_la1[77] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        n1.addNode(n2);
+      break;
+    default:
+      jj_la1[78] = jj_gen;
+      ;
+    }
+     {if (true) return new PostfixExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public CastExpression CastExpression() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   Type n4;
+   NodeToken n5;
+   Token n6;
+   UnaryExpression n7;
+   NodeSequence n8;
+   NodeToken n9;
+   Token n10;
+   Type n11;
+   NodeToken n12;
+   Token n13;
+   UnaryExpressionNotPlusMinus n14;
+
+   {
+   }
+    if (jj_2_18(2147483647)) {
+        n1 = new NodeSequence(5);
+      n3 = jj_consume_token(LPAREN);
+               n2 = JTBToolkit.makeNodeToken(n3);
+        n1.addNode(n2);
+      n4 = Type();
+        n1.addNode(n4);
+      n6 = jj_consume_token(RPAREN);
+               n5 = JTBToolkit.makeNodeToken(n6);
+        n1.addNode(n5);
+      n7 = UnaryExpression();
+        n1.addNode(n7);
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LPAREN:
+        n8 = new NodeSequence(4);
+        n10 = jj_consume_token(LPAREN);
+                n9 = JTBToolkit.makeNodeToken(n10);
+        n8.addNode(n9);
+        n11 = Type();
+        n8.addNode(n11);
+        n13 = jj_consume_token(RPAREN);
+                n12 = JTBToolkit.makeNodeToken(n13);
+        n8.addNode(n12);
+        n14 = UnaryExpressionNotPlusMinus();
+        n8.addNode(n14);
+        n0 = new NodeChoice(n8, 1);
+        break;
+      default:
+        jj_la1[79] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new CastExpression(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PrimaryExpression PrimaryExpression() throws ParseException {
+   PrimaryPrefix n0;
+   NodeListOptional n1 = new NodeListOptional();
+   PrimarySuffix n2;
+
+   {
+   }
+    n0 = PrimaryPrefix();
+    label_31:
+    while (true) {
+      if (jj_2_19(2)) {
+        ;
+      } else {
+        break label_31;
+      }
+      n2 = PrimarySuffix();
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new PrimaryExpression(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PrimaryPrefix PrimaryPrefix() throws ParseException {
+   NodeChoice n0;
+   Literal n1;
+   NodeToken n2;
+   Token n3;
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeSequence n11;
+   NodeToken n12;
+   Token n13;
+   Expression n14;
+   NodeToken n15;
+   Token n16;
+   AllocationExpression n17;
+   NodeSequence n18;
+   ResultType n19;
+   NodeToken n20;
+   Token n21;
+   NodeToken n22;
+   Token n23;
+   Name n24;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case FALSE:
+    case NULL:
+    case TRUE:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+      n1 = Literal();
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case THIS:
+      n3 = jj_consume_token(THIS);
+                  n2 = JTBToolkit.makeNodeToken(n3);
+        n0 = new NodeChoice(n2, 1);
+      break;
+    case SUPER:
+        n4 = new NodeSequence(3);
+      n6 = jj_consume_token(SUPER);
+                   n5 = JTBToolkit.makeNodeToken(n6);
+        n4.addNode(n5);
+      n8 = jj_consume_token(DOT);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n4.addNode(n7);
+      n10 = jj_consume_token(IDENTIFIER);
+                         n9 = JTBToolkit.makeNodeToken(n10);
+        n4.addNode(n9);
+        n0 = new NodeChoice(n4, 2);
+      break;
+    case LPAREN:
+        n11 = new NodeSequence(3);
+      n13 = jj_consume_token(LPAREN);
+                n12 = JTBToolkit.makeNodeToken(n13);
+        n11.addNode(n12);
+      n14 = Expression();
+        n11.addNode(n14);
+      n16 = jj_consume_token(RPAREN);
+                n15 = JTBToolkit.makeNodeToken(n16);
+        n11.addNode(n15);
+        n0 = new NodeChoice(n11, 3);
+      break;
+    case NEW:
+      n17 = AllocationExpression();
+        n0 = new NodeChoice(n17, 4);
+      break;
+    default:
+      jj_la1[80] = jj_gen;
+      if (jj_2_20(2147483647)) {
+        n18 = new NodeSequence(4);
+        n19 = ResultType();
+        n18.addNode(n19);
+        n21 = jj_consume_token(DOT);
+                n20 = JTBToolkit.makeNodeToken(n21);
+        n18.addNode(n20);
+        n23 = jj_consume_token(CLASS);
+                    n22 = JTBToolkit.makeNodeToken(n23);
+        n18.addNode(n22);
+        n0 = new NodeChoice(n18, 5);
+      } else {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case IDENTIFIER:
+          n24 = Name();
+        n0 = new NodeChoice(n24, 6);
+          break;
+        default:
+          jj_la1[81] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      }
+    }
+     {if (true) return new PrimaryPrefix(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public PrimarySuffix PrimarySuffix() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   NodeToken n4;
+   Token n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   AllocationExpression n9;
+   NodeSequence n10;
+   NodeToken n11;
+   Token n12;
+   Expression n13;
+   NodeToken n14;
+   Token n15;
+   NodeSequence n16;
+   NodeToken n17;
+   Token n18;
+   NodeToken n19;
+   Token n20;
+   Arguments n21;
+
+   {
+   }
+    if (jj_2_21(2)) {
+        n1 = new NodeSequence(3);
+      n3 = jj_consume_token(DOT);
+               n2 = JTBToolkit.makeNodeToken(n3);
+        n1.addNode(n2);
+      n5 = jj_consume_token(THIS);
+                  n4 = JTBToolkit.makeNodeToken(n5);
+        n1.addNode(n4);
+        n0 = new NodeChoice(n1, 0);
+    } else if (jj_2_22(2)) {
+        n6 = new NodeSequence(3);
+      n8 = jj_consume_token(DOT);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n6.addNode(n7);
+      n9 = AllocationExpression();
+        n6.addNode(n9);
+        n0 = new NodeChoice(n6, 1);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACKET:
+        n10 = new NodeSequence(3);
+        n12 = jj_consume_token(LBRACKET);
+                n11 = JTBToolkit.makeNodeToken(n12);
+        n10.addNode(n11);
+        n13 = Expression();
+        n10.addNode(n13);
+        n15 = jj_consume_token(RBRACKET);
+                n14 = JTBToolkit.makeNodeToken(n15);
+        n10.addNode(n14);
+        n0 = new NodeChoice(n10, 2);
+        break;
+      case DOT:
+        n16 = new NodeSequence(2);
+        n18 = jj_consume_token(DOT);
+                n17 = JTBToolkit.makeNodeToken(n18);
+        n16.addNode(n17);
+        n20 = jj_consume_token(IDENTIFIER);
+                         n19 = JTBToolkit.makeNodeToken(n20);
+        n16.addNode(n19);
+        n0 = new NodeChoice(n16, 3);
+        break;
+      case LPAREN:
+        n21 = Arguments();
+        n0 = new NodeChoice(n21, 4);
+        break;
+      default:
+        jj_la1[82] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new PrimarySuffix(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Literal Literal() throws ParseException {
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   BooleanLiteral n9;
+   NullLiteral n10;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INTEGER_LITERAL:
+      n2 = jj_consume_token(INTEGER_LITERAL);
+                             n1 = JTBToolkit.makeNodeToken(n2);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case FLOATING_POINT_LITERAL:
+      n4 = jj_consume_token(FLOATING_POINT_LITERAL);
+                                    n3 = JTBToolkit.makeNodeToken(n4);
+        n0 = new NodeChoice(n3, 1);
+      break;
+    case CHARACTER_LITERAL:
+      n6 = jj_consume_token(CHARACTER_LITERAL);
+                               n5 = JTBToolkit.makeNodeToken(n6);
+        n0 = new NodeChoice(n5, 2);
+      break;
+    case STRING_LITERAL:
+      n8 = jj_consume_token(STRING_LITERAL);
+                            n7 = JTBToolkit.makeNodeToken(n8);
+        n0 = new NodeChoice(n7, 3);
+      break;
+    case FALSE:
+    case TRUE:
+      n9 = BooleanLiteral();
+        n0 = new NodeChoice(n9, 4);
+      break;
+    case NULL:
+      n10 = NullLiteral();
+        n0 = new NodeChoice(n10, 5);
+      break;
+    default:
+      jj_la1[83] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new Literal(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public BooleanLiteral BooleanLiteral() throws ParseException {
+   NodeChoice n0;
+   NodeToken n1;
+   Token n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case TRUE:
+      n2 = jj_consume_token(TRUE);
+                  n1 = JTBToolkit.makeNodeToken(n2);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case FALSE:
+      n4 = jj_consume_token(FALSE);
+                   n3 = JTBToolkit.makeNodeToken(n4);
+        n0 = new NodeChoice(n3, 1);
+      break;
+    default:
+      jj_la1[84] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new BooleanLiteral(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public NullLiteral NullLiteral() throws ParseException {
+   NodeToken n0;
+   Token n1;
+
+   {
+   }
+    n1 = jj_consume_token(NULL);
+               n0 = JTBToolkit.makeNodeToken(n1);
+     {if (true) return new NullLiteral(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Arguments Arguments() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   ArgumentList n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+    n1 = jj_consume_token(LPAREN);
+            n0 = JTBToolkit.makeNodeToken(n1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case BANG:
+    case TILDE:
+    case INCR:
+    case DECR:
+    case PLUS:
+    case MINUS:
+      n3 = ArgumentList();
+        n2.addNode(n3);
+      break;
+    default:
+      jj_la1[85] = jj_gen;
+      ;
+    }
+    n5 = jj_consume_token(RPAREN);
+            n4 = JTBToolkit.makeNodeToken(n5);
+     {if (true) return new Arguments(n0,n2,n4);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ArgumentList ArgumentList() throws ParseException {
+   Expression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   Expression n5;
+
+   {
+   }
+    n0 = Expression();
+    label_32:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[86] = jj_gen;
+        break label_32;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(COMMA);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = Expression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new ArgumentList(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public AllocationExpression AllocationExpression() throws 
ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   PrimitiveType n4;
+   ArrayDimsAndInits n5;
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   Name n9;
+   NodeChoice n10;
+   ArrayDimsAndInits n11;
+   NodeSequence n12;
+   Arguments n13;
+   NodeOptional n14 = new NodeOptional();
+   ClassBody n15;
+
+   {
+   }
+    if (jj_2_23(2)) {
+        n1 = new NodeSequence(4);
+      n3 = jj_consume_token(NEW);
+                 n2 = JTBToolkit.makeNodeToken(n3);
+        n1.addNode(n2);
+      n4 = PrimitiveType();
+        n1.addNode(n4);
+      n5 = ArrayDimsAndInits();
+        n1.addNode(n5);
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case NEW:
+        n6 = new NodeSequence(3);
+        n8 = jj_consume_token(NEW);
+                 n7 = JTBToolkit.makeNodeToken(n8);
+        n6.addNode(n7);
+        n9 = Name();
+        n6.addNode(n9);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case LBRACKET:
+          n11 = ArrayDimsAndInits();
+              n10 = new NodeChoice(n11, 0);
+          break;
+        case LPAREN:
+              n12 = new NodeSequence(2);
+          n13 = Arguments();
+              n12.addNode(n13);
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case LBRACE:
+            n15 = ClassBody();
+                 n14.addNode(n15);
+            break;
+          default:
+            jj_la1[87] = jj_gen;
+            ;
+          }
+              n12.addNode(n14);
+              n10 = new NodeChoice(n12, 1);
+          break;
+        default:
+          jj_la1[88] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+        n6.addNode(n10);
+        n0 = new NodeChoice(n6, 1);
+        break;
+      default:
+        jj_la1[89] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new AllocationExpression(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ArrayDimsAndInits ArrayDimsAndInits() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeList n2 = new NodeList();
+   NodeSequence n3;
+   NodeToken n4;
+   Token n5;
+   Expression n6;
+   NodeToken n7;
+   Token n8;
+   NodeListOptional n9 = new NodeListOptional();
+   NodeSequence n10;
+   NodeToken n11;
+   Token n12;
+   NodeToken n13;
+   Token n14;
+   NodeSequence n15;
+   NodeList n16 = new NodeList();
+   NodeSequence n17;
+   NodeToken n18;
+   Token n19;
+   NodeToken n20;
+   Token n21;
+   ArrayInitializer n22;
+
+   {
+   }
+    if (jj_2_26(2)) {
+        n1 = new NodeSequence(3);
+      label_33:
+      while (true) {
+           n3 = new NodeSequence(3);
+        n5 = jj_consume_token(LBRACKET);
+                  n4 = JTBToolkit.makeNodeToken(n5);
+           n3.addNode(n4);
+        n6 = Expression();
+           n3.addNode(n6);
+        n8 = jj_consume_token(RBRACKET);
+                  n7 = JTBToolkit.makeNodeToken(n8);
+           n3.addNode(n7);
+           n2.addNode(n3);
+        if (jj_2_24(2)) {
+          ;
+        } else {
+          break label_33;
+        }
+      }
+        n2.nodes.trimToSize();
+        n1.addNode(n2);
+      label_34:
+      while (true) {
+        if (jj_2_25(2)) {
+          ;
+        } else {
+          break label_34;
+        }
+           n10 = new NodeSequence(2);
+        n12 = jj_consume_token(LBRACKET);
+                   n11 = JTBToolkit.makeNodeToken(n12);
+           n10.addNode(n11);
+        n14 = jj_consume_token(RBRACKET);
+                   n13 = JTBToolkit.makeNodeToken(n14);
+           n10.addNode(n13);
+           n9.addNode(n10);
+      }
+        n9.nodes.trimToSize();
+        n1.addNode(n9);
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACKET:
+        n15 = new NodeSequence(2);
+        label_35:
+        while (true) {
+           n17 = new NodeSequence(2);
+          n19 = jj_consume_token(LBRACKET);
+                   n18 = JTBToolkit.makeNodeToken(n19);
+           n17.addNode(n18);
+          n21 = jj_consume_token(RBRACKET);
+                   n20 = JTBToolkit.makeNodeToken(n21);
+           n17.addNode(n20);
+           n16.addNode(n17);
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case LBRACKET:
+            ;
+            break;
+          default:
+            jj_la1[90] = jj_gen;
+            break label_35;
+          }
+        }
+        n16.nodes.trimToSize();
+        n15.addNode(n16);
+        n22 = ArrayInitializer();
+        n15.addNode(n22);
+        n0 = new NodeChoice(n15, 1);
+        break;
+      default:
+        jj_la1[91] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new ArrayDimsAndInits(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Statement Statement() throws ParseException {
+   NodeChoice n0;
+   LabeledStatement n1;
+   Block n2;
+   EmptyStatement n3;
+   NodeSequence n4;
+   StatementExpression n5;
+   NodeToken n6;
+   Token n7;
+   SwitchStatement n8;
+   IfStatement n9;
+   WhileStatement n10;
+   DoStatement n11;
+   ForStatement n12;
+   BreakStatement n13;
+   ContinueStatement n14;
+   ReturnStatement n15;
+   ThrowStatement n16;
+   SynchronizedStatement n17;
+   TryStatement n18;
+
+   {
+   }
+    if (jj_2_27(2)) {
+      n1 = LabeledStatement();
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case LBRACE:
+        n2 = Block();
+        n0 = new NodeChoice(n2, 1);
+        break;
+      case SEMICOLON:
+        n3 = EmptyStatement();
+        n0 = new NodeChoice(n3, 2);
+        break;
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case DOUBLE:
+      case FALSE:
+      case FLOAT:
+      case INT:
+      case LONG:
+      case NEW:
+      case NULL:
+      case SHORT:
+      case SUPER:
+      case THIS:
+      case TRUE:
+      case VOID:
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case CHARACTER_LITERAL:
+      case STRING_LITERAL:
+      case IDENTIFIER:
+      case LPAREN:
+      case INCR:
+      case DECR:
+        n4 = new NodeSequence(2);
+        n5 = StatementExpression();
+        n4.addNode(n5);
+        n7 = jj_consume_token(SEMICOLON);
+               n6 = JTBToolkit.makeNodeToken(n7);
+        n4.addNode(n6);
+        n0 = new NodeChoice(n4, 3);
+        break;
+      case SWITCH:
+        n8 = SwitchStatement();
+        n0 = new NodeChoice(n8, 4);
+        break;
+      case IF:
+        n9 = IfStatement();
+        n0 = new NodeChoice(n9, 5);
+        break;
+      case WHILE:
+        n10 = WhileStatement();
+        n0 = new NodeChoice(n10, 6);
+        break;
+      case DO:
+        n11 = DoStatement();
+        n0 = new NodeChoice(n11, 7);
+        break;
+      case FOR:
+        n12 = ForStatement();
+        n0 = new NodeChoice(n12, 8);
+        break;
+      case BREAK:
+        n13 = BreakStatement();
+        n0 = new NodeChoice(n13, 9);
+        break;
+      case CONTINUE:
+        n14 = ContinueStatement();
+        n0 = new NodeChoice(n14, 10);
+        break;
+      case RETURN:
+        n15 = ReturnStatement();
+        n0 = new NodeChoice(n15, 11);
+        break;
+      case THROW:
+        n16 = ThrowStatement();
+        n0 = new NodeChoice(n16, 12);
+        break;
+      case SYNCHRONIZED:
+        n17 = SynchronizedStatement();
+        n0 = new NodeChoice(n17, 13);
+        break;
+      case TRY:
+        n18 = TryStatement();
+        n0 = new NodeChoice(n18, 14);
+        break;
+      default:
+        jj_la1[92] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new Statement(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public LabeledStatement LabeledStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Statement n4;
+
+   {
+   }
+    n1 = jj_consume_token(IDENTIFIER);
+                     n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(COLON);
+            n2 = JTBToolkit.makeNodeToken(n3);
+    n4 = Statement();
+     {if (true) return new LabeledStatement(n0,n2,n4);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Block Block() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeListOptional n2 = new NodeListOptional();
+   BlockStatement n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+    n1 = jj_consume_token(LBRACE);
+            n0 = JTBToolkit.makeNodeToken(n1);
+    label_36:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BREAK:
+      case BYTE:
+      case CHAR:
+      case CLASS:
+      case CONTINUE:
+      case DO:
+      case DOUBLE:
+      case FALSE:
+      case FINAL:
+      case FLOAT:
+      case FOR:
+      case IF:
+      case INT:
+      case INTERFACE:
+      case LONG:
+      case NEW:
+      case NULL:
+      case RETURN:
+      case SHORT:
+      case SUPER:
+      case SWITCH:
+      case SYNCHRONIZED:
+      case THIS:
+      case THROW:
+      case TRUE:
+      case TRY:
+      case VOID:
+      case WHILE:
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case CHARACTER_LITERAL:
+      case STRING_LITERAL:
+      case IDENTIFIER:
+      case LPAREN:
+      case LBRACE:
+      case SEMICOLON:
+      case INCR:
+      case DECR:
+        ;
+        break;
+      default:
+        jj_la1[93] = jj_gen;
+        break label_36;
+      }
+      n3 = BlockStatement();
+        n2.addNode(n3);
+    }
+     n2.nodes.trimToSize();
+    n5 = jj_consume_token(RBRACE);
+            n4 = JTBToolkit.makeNodeToken(n5);
+     {if (true) return new Block(n0,n2,n4);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public BlockStatement BlockStatement() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   LocalVariableDeclaration n2;
+   NodeToken n3;
+   Token n4;
+   Statement n5;
+   UnmodifiedClassDeclaration n6;
+   UnmodifiedInterfaceDeclaration n7;
+
+   {
+   }
+    if (jj_2_28(2147483647)) {
+        n1 = new NodeSequence(3);
+      n2 = LocalVariableDeclaration();
+        n1.addNode(n2);
+      n4 = jj_consume_token(SEMICOLON);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n1.addNode(n3);
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BREAK:
+      case BYTE:
+      case CHAR:
+      case CONTINUE:
+      case DO:
+      case DOUBLE:
+      case FALSE:
+      case FLOAT:
+      case FOR:
+      case IF:
+      case INT:
+      case LONG:
+      case NEW:
+      case NULL:
+      case RETURN:
+      case SHORT:
+      case SUPER:
+      case SWITCH:
+      case SYNCHRONIZED:
+      case THIS:
+      case THROW:
+      case TRUE:
+      case TRY:
+      case VOID:
+      case WHILE:
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case CHARACTER_LITERAL:
+      case STRING_LITERAL:
+      case IDENTIFIER:
+      case LPAREN:
+      case LBRACE:
+      case SEMICOLON:
+      case INCR:
+      case DECR:
+        n5 = Statement();
+        n0 = new NodeChoice(n5, 1);
+        break;
+      case CLASS:
+        n6 = UnmodifiedClassDeclaration();
+        n0 = new NodeChoice(n6, 2);
+        break;
+      case INTERFACE:
+        n7 = UnmodifiedInterfaceDeclaration();
+        n0 = new NodeChoice(n7, 3);
+        break;
+      default:
+        jj_la1[94] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new BlockStatement(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public LocalVariableDeclaration LocalVariableDeclaration() throws 
ParseException {
+   NodeOptional n0 = new NodeOptional();
+   NodeToken n1;
+   Token n2;
+   Type n3;
+   VariableDeclarator n4;
+   NodeListOptional n5 = new NodeListOptional();
+   NodeSequence n6;
+   NodeToken n7;
+   Token n8;
+   VariableDeclarator n9;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case FINAL:
+      n2 = jj_consume_token(FINAL);
+                   n1 = JTBToolkit.makeNodeToken(n2);
+        n0.addNode(n1);
+      break;
+    default:
+      jj_la1[95] = jj_gen;
+      ;
+    }
+    n3 = Type();
+    n4 = VariableDeclarator();
+    label_37:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[96] = jj_gen;
+        break label_37;
+      }
+        n6 = new NodeSequence(2);
+      n8 = jj_consume_token(COMMA);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n6.addNode(n7);
+      n9 = VariableDeclarator();
+        n6.addNode(n9);
+        n5.addNode(n6);
+    }
+     n5.nodes.trimToSize();
+     {if (true) return new LocalVariableDeclaration(n0,n3,n4,n5);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public EmptyStatement EmptyStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+
+   {
+   }
+    n1 = jj_consume_token(SEMICOLON);
+            n0 = JTBToolkit.makeNodeToken(n1);
+     {if (true) return new EmptyStatement(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public StatementExpression StatementExpression() throws ParseException 
{
+   NodeChoice n0;
+   PreIncrementExpression n1;
+   PreDecrementExpression n2;
+   NodeSequence n3;
+   PrimaryExpression n4;
+   NodeOptional n5 = new NodeOptional();
+   NodeChoice n6;
+   NodeToken n7;
+   Token n8;
+   NodeToken n9;
+   Token n10;
+   NodeSequence n11;
+   AssignmentOperator n12;
+   Expression n13;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case INCR:
+      n1 = PreIncrementExpression();
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case DECR:
+      n2 = PreDecrementExpression();
+        n0 = new NodeChoice(n2, 1);
+      break;
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+        n3 = new NodeSequence(2);
+      n4 = PrimaryExpression();
+        n3.addNode(n4);
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ASSIGN:
+      case INCR:
+      case DECR:
+      case PLUSASSIGN:
+      case MINUSASSIGN:
+      case STARASSIGN:
+      case SLASHASSIGN:
+      case ANDASSIGN:
+      case ORASSIGN:
+      case XORASSIGN:
+      case REMASSIGN:
+      case LSHIFTASSIGN:
+      case RSIGNEDSHIFTASSIGN:
+      case RUNSIGNEDSHIFTASSIGN:
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case INCR:
+          n8 = jj_consume_token(INCR);
+                      n7 = JTBToolkit.makeNodeToken(n8);
+              n6 = new NodeChoice(n7, 0);
+          break;
+        case DECR:
+          n10 = jj_consume_token(DECR);
+                       n9 = JTBToolkit.makeNodeToken(n10);
+              n6 = new NodeChoice(n9, 1);
+          break;
+        case ASSIGN:
+        case PLUSASSIGN:
+        case MINUSASSIGN:
+        case STARASSIGN:
+        case SLASHASSIGN:
+        case ANDASSIGN:
+        case ORASSIGN:
+        case XORASSIGN:
+        case REMASSIGN:
+        case LSHIFTASSIGN:
+        case RSIGNEDSHIFTASSIGN:
+        case RUNSIGNEDSHIFTASSIGN:
+              n11 = new NodeSequence(2);
+          n12 = AssignmentOperator();
+              n11.addNode(n12);
+          n13 = Expression();
+              n11.addNode(n13);
+              n6 = new NodeChoice(n11, 2);
+          break;
+        default:
+          jj_la1[97] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+           n5.addNode(n6);
+        break;
+      default:
+        jj_la1[98] = jj_gen;
+        ;
+      }
+        n3.addNode(n5);
+        n0 = new NodeChoice(n3, 2);
+      break;
+    default:
+      jj_la1[99] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new StatementExpression(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public SwitchStatement SwitchStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   NodeListOptional n9 = new NodeListOptional();
+   NodeSequence n10;
+   SwitchLabel n11;
+   NodeListOptional n12;
+   BlockStatement n13;
+   NodeToken n14;
+   Token n15;
+
+   {
+   }
+    n1 = jj_consume_token(SWITCH);
+                 n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(LPAREN);
+            n2 = JTBToolkit.makeNodeToken(n3);
+    n4 = Expression();
+    n6 = jj_consume_token(RPAREN);
+            n5 = JTBToolkit.makeNodeToken(n6);
+    n8 = jj_consume_token(LBRACE);
+            n7 = JTBToolkit.makeNodeToken(n8);
+    label_38:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case CASE:
+      case _DEFAULT:
+        ;
+        break;
+      default:
+        jj_la1[100] = jj_gen;
+        break label_38;
+      }
+        n12 = new NodeListOptional();
+        n10 = new NodeSequence(2);
+      n11 = SwitchLabel();
+        n10.addNode(n11);
+      label_39:
+      while (true) {
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case BOOLEAN:
+        case BREAK:
+        case BYTE:
+        case CHAR:
+        case CLASS:
+        case CONTINUE:
+        case DO:
+        case DOUBLE:
+        case FALSE:
+        case FINAL:
+        case FLOAT:
+        case FOR:
+        case IF:
+        case INT:
+        case INTERFACE:
+        case LONG:
+        case NEW:
+        case NULL:
+        case RETURN:
+        case SHORT:
+        case SUPER:
+        case SWITCH:
+        case SYNCHRONIZED:
+        case THIS:
+        case THROW:
+        case TRUE:
+        case TRY:
+        case VOID:
+        case WHILE:
+        case INTEGER_LITERAL:
+        case FLOATING_POINT_LITERAL:
+        case CHARACTER_LITERAL:
+        case STRING_LITERAL:
+        case IDENTIFIER:
+        case LPAREN:
+        case LBRACE:
+        case SEMICOLON:
+        case INCR:
+        case DECR:
+          ;
+          break;
+        default:
+          jj_la1[101] = jj_gen;
+          break label_39;
+        }
+        n13 = BlockStatement();
+           n12.addNode(n13);
+      }
+        n12.nodes.trimToSize();
+        n10.addNode(n12);
+        n9.addNode(n10);
+    }
+     n9.nodes.trimToSize();
+    n15 = jj_consume_token(RBRACE);
+             n14 = JTBToolkit.makeNodeToken(n15);
+     {if (true) return new SwitchStatement(n0,n2,n4,n5,n7,n9,n14);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public SwitchLabel SwitchLabel() throws ParseException {
+   NodeChoice n0;
+   NodeSequence n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   NodeSequence n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+
+   {
+   }
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case CASE:
+        n1 = new NodeSequence(3);
+      n3 = jj_consume_token(CASE);
+                  n2 = JTBToolkit.makeNodeToken(n3);
+        n1.addNode(n2);
+      n4 = Expression();
+        n1.addNode(n4);
+      n6 = jj_consume_token(COLON);
+               n5 = JTBToolkit.makeNodeToken(n6);
+        n1.addNode(n5);
+        n0 = new NodeChoice(n1, 0);
+      break;
+    case _DEFAULT:
+        n7 = new NodeSequence(2);
+      n9 = jj_consume_token(_DEFAULT);
+                     n8 = JTBToolkit.makeNodeToken(n9);
+        n7.addNode(n8);
+      n11 = jj_consume_token(COLON);
+                n10 = JTBToolkit.makeNodeToken(n11);
+        n7.addNode(n10);
+        n0 = new NodeChoice(n7, 1);
+      break;
+    default:
+      jj_la1[102] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+     {if (true) return new SwitchLabel(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public IfStatement IfStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   Statement n7;
+   NodeOptional n8 = new NodeOptional();
+   NodeSequence n9;
+   NodeToken n10;
+   Token n11;
+   Statement n12;
+
+   {
+   }
+    n1 = jj_consume_token(IF);
+             n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(LPAREN);
+            n2 = JTBToolkit.makeNodeToken(n3);
+    n4 = Expression();
+    n6 = jj_consume_token(RPAREN);
+            n5 = JTBToolkit.makeNodeToken(n6);
+    n7 = Statement();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ELSE:
+        n9 = new NodeSequence(2);
+      n11 = jj_consume_token(ELSE);
+                   n10 = JTBToolkit.makeNodeToken(n11);
+        n9.addNode(n10);
+      n12 = Statement();
+        n9.addNode(n12);
+        n8.addNode(n9);
+      break;
+    default:
+      jj_la1[103] = jj_gen;
+      ;
+    }
+     {if (true) return new IfStatement(n0,n2,n4,n5,n7,n8);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public WhileStatement WhileStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   Statement n7;
+
+   {
+   }
+    n1 = jj_consume_token(WHILE);
+                n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(LPAREN);
+            n2 = JTBToolkit.makeNodeToken(n3);
+    n4 = Expression();
+    n6 = jj_consume_token(RPAREN);
+            n5 = JTBToolkit.makeNodeToken(n6);
+    n7 = Statement();
+     {if (true) return new WhileStatement(n0,n2,n4,n5,n7);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public DoStatement DoStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   Statement n2;
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+   Expression n7;
+   NodeToken n8;
+   Token n9;
+   NodeToken n10;
+   Token n11;
+
+   {
+   }
+    n1 = jj_consume_token(DO);
+             n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = Statement();
+    n4 = jj_consume_token(WHILE);
+                n3 = JTBToolkit.makeNodeToken(n4);
+    n6 = jj_consume_token(LPAREN);
+            n5 = JTBToolkit.makeNodeToken(n6);
+    n7 = Expression();
+    n9 = jj_consume_token(RPAREN);
+            n8 = JTBToolkit.makeNodeToken(n9);
+    n11 = jj_consume_token(SEMICOLON);
+             n10 = JTBToolkit.makeNodeToken(n11);
+     {if (true) return new DoStatement(n0,n2,n3,n5,n7,n8,n10);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ForStatement ForStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   NodeOptional n4 = new NodeOptional();
+   ForInit n5;
+   NodeToken n6;
+   Token n7;
+   NodeOptional n8 = new NodeOptional();
+   Expression n9;
+   NodeToken n10;
+   Token n11;
+   NodeOptional n12 = new NodeOptional();
+   ForUpdate n13;
+   NodeToken n14;
+   Token n15;
+   Statement n16;
+
+   {
+   }
+    n1 = jj_consume_token(FOR);
+              n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(LPAREN);
+            n2 = JTBToolkit.makeNodeToken(n3);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FINAL:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case INCR:
+    case DECR:
+      n5 = ForInit();
+        n4.addNode(n5);
+      break;
+    default:
+      jj_la1[104] = jj_gen;
+      ;
+    }
+    n7 = jj_consume_token(SEMICOLON);
+            n6 = JTBToolkit.makeNodeToken(n7);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case BANG:
+    case TILDE:
+    case INCR:
+    case DECR:
+    case PLUS:
+    case MINUS:
+      n9 = Expression();
+        n8.addNode(n9);
+      break;
+    default:
+      jj_la1[105] = jj_gen;
+      ;
+    }
+    n11 = jj_consume_token(SEMICOLON);
+             n10 = JTBToolkit.makeNodeToken(n11);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case INCR:
+    case DECR:
+      n13 = ForUpdate();
+        n12.addNode(n13);
+      break;
+    default:
+      jj_la1[106] = jj_gen;
+      ;
+    }
+    n15 = jj_consume_token(RPAREN);
+             n14 = JTBToolkit.makeNodeToken(n15);
+    n16 = Statement();
+     {if (true) return new ForStatement(n0,n2,n4,n6,n8,n10,n12,n14,n16);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ForInit ForInit() throws ParseException {
+   NodeChoice n0;
+   LocalVariableDeclaration n1;
+   StatementExpressionList n2;
+
+   {
+   }
+    if (jj_2_29(2147483647)) {
+      n1 = LocalVariableDeclaration();
+        n0 = new NodeChoice(n1, 0);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case BOOLEAN:
+      case BYTE:
+      case CHAR:
+      case DOUBLE:
+      case FALSE:
+      case FLOAT:
+      case INT:
+      case LONG:
+      case NEW:
+      case NULL:
+      case SHORT:
+      case SUPER:
+      case THIS:
+      case TRUE:
+      case VOID:
+      case INTEGER_LITERAL:
+      case FLOATING_POINT_LITERAL:
+      case CHARACTER_LITERAL:
+      case STRING_LITERAL:
+      case IDENTIFIER:
+      case LPAREN:
+      case INCR:
+      case DECR:
+        n2 = StatementExpressionList();
+        n0 = new NodeChoice(n2, 1);
+        break;
+      default:
+        jj_la1[107] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+    }
+     {if (true) return new ForInit(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public StatementExpressionList StatementExpressionList() throws 
ParseException {
+   StatementExpression n0;
+   NodeListOptional n1 = new NodeListOptional();
+   NodeSequence n2;
+   NodeToken n3;
+   Token n4;
+   StatementExpression n5;
+
+   {
+   }
+    n0 = StatementExpression();
+    label_40:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[108] = jj_gen;
+        break label_40;
+      }
+        n2 = new NodeSequence(2);
+      n4 = jj_consume_token(COMMA);
+               n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      n5 = StatementExpression();
+        n2.addNode(n5);
+        n1.addNode(n2);
+    }
+     n1.nodes.trimToSize();
+     {if (true) return new StatementExpressionList(n0,n1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ForUpdate ForUpdate() throws ParseException {
+   StatementExpressionList n0;
+
+   {
+   }
+    n0 = StatementExpressionList();
+     {if (true) return new ForUpdate(n0);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public BreakStatement BreakStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+
+   {
+   }
+    n1 = jj_consume_token(BREAK);
+                n0 = JTBToolkit.makeNodeToken(n1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENTIFIER:
+      n4 = jj_consume_token(IDENTIFIER);
+                        n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      break;
+    default:
+      jj_la1[109] = jj_gen;
+      ;
+    }
+    n6 = jj_consume_token(SEMICOLON);
+            n5 = JTBToolkit.makeNodeToken(n6);
+     {if (true) return new BreakStatement(n0,n2,n5);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ContinueStatement ContinueStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   NodeToken n3;
+   Token n4;
+   NodeToken n5;
+   Token n6;
+
+   {
+   }
+    n1 = jj_consume_token(CONTINUE);
+                   n0 = JTBToolkit.makeNodeToken(n1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case IDENTIFIER:
+      n4 = jj_consume_token(IDENTIFIER);
+                        n3 = JTBToolkit.makeNodeToken(n4);
+        n2.addNode(n3);
+      break;
+    default:
+      jj_la1[110] = jj_gen;
+      ;
+    }
+    n6 = jj_consume_token(SEMICOLON);
+            n5 = JTBToolkit.makeNodeToken(n6);
+     {if (true) return new ContinueStatement(n0,n2,n5);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ReturnStatement ReturnStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeOptional n2 = new NodeOptional();
+   Expression n3;
+   NodeToken n4;
+   Token n5;
+
+   {
+   }
+    n1 = jj_consume_token(RETURN);
+                 n0 = JTBToolkit.makeNodeToken(n1);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case BOOLEAN:
+    case BYTE:
+    case CHAR:
+    case DOUBLE:
+    case FALSE:
+    case FLOAT:
+    case INT:
+    case LONG:
+    case NEW:
+    case NULL:
+    case SHORT:
+    case SUPER:
+    case THIS:
+    case TRUE:
+    case VOID:
+    case INTEGER_LITERAL:
+    case FLOATING_POINT_LITERAL:
+    case CHARACTER_LITERAL:
+    case STRING_LITERAL:
+    case IDENTIFIER:
+    case LPAREN:
+    case BANG:
+    case TILDE:
+    case INCR:
+    case DECR:
+    case PLUS:
+    case MINUS:
+      n3 = Expression();
+        n2.addNode(n3);
+      break;
+    default:
+      jj_la1[111] = jj_gen;
+      ;
+    }
+    n5 = jj_consume_token(SEMICOLON);
+            n4 = JTBToolkit.makeNodeToken(n5);
+     {if (true) return new ReturnStatement(n0,n2,n4);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ThrowStatement ThrowStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   Expression n2;
+   NodeToken n3;
+   Token n4;
+
+   {
+   }
+    n1 = jj_consume_token(THROW);
+                n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = Expression();
+    n4 = jj_consume_token(SEMICOLON);
+            n3 = JTBToolkit.makeNodeToken(n4);
+     {if (true) return new ThrowStatement(n0,n2,n3);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public SynchronizedStatement SynchronizedStatement() throws 
ParseException {
+   NodeToken n0;
+   Token n1;
+   NodeToken n2;
+   Token n3;
+   Expression n4;
+   NodeToken n5;
+   Token n6;
+   Block n7;
+
+   {
+   }
+    n1 = jj_consume_token(SYNCHRONIZED);
+                       n0 = JTBToolkit.makeNodeToken(n1);
+    n3 = jj_consume_token(LPAREN);
+            n2 = JTBToolkit.makeNodeToken(n3);
+    n4 = Expression();
+    n6 = jj_consume_token(RPAREN);
+            n5 = JTBToolkit.makeNodeToken(n6);
+    n7 = Block();
+     {if (true) return new SynchronizedStatement(n0,n2,n4,n5,n7);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public TryStatement TryStatement() throws ParseException {
+   NodeToken n0;
+   Token n1;
+   Block n2;
+   NodeListOptional n3 = new NodeListOptional();
+   NodeSequence n4;
+   NodeToken n5;
+   Token n6;
+   NodeToken n7;
+   Token n8;
+   FormalParameter n9;
+   NodeToken n10;
+   Token n11;
+   Block n12;
+   NodeOptional n13 = new NodeOptional();
+   NodeSequence n14;
+   NodeToken n15;
+   Token n16;
+   Block n17;
+
+   {
+   }
+    n1 = jj_consume_token(TRY);
+              n0 = JTBToolkit.makeNodeToken(n1);
+    n2 = Block();
+    label_41:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case CATCH:
+        ;
+        break;
+      default:
+        jj_la1[112] = jj_gen;
+        break label_41;
+      }
+        n4 = new NodeSequence(5);
+      n6 = jj_consume_token(CATCH);
+                   n5 = JTBToolkit.makeNodeToken(n6);
+        n4.addNode(n5);
+      n8 = jj_consume_token(LPAREN);
+               n7 = JTBToolkit.makeNodeToken(n8);
+        n4.addNode(n7);
+      n9 = FormalParameter();
+        n4.addNode(n9);
+      n11 = jj_consume_token(RPAREN);
+                n10 = JTBToolkit.makeNodeToken(n11);
+        n4.addNode(n10);
+      n12 = Block();
+        n4.addNode(n12);
+        n3.addNode(n4);
+    }
+     n3.nodes.trimToSize();
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case FINALLY:
+        n14 = new NodeSequence(2);
+      n16 = jj_consume_token(FINALLY);
+                      n15 = JTBToolkit.makeNodeToken(n16);
+        n14.addNode(n15);
+      n17 = Block();
+        n14.addNode(n17);
+        n13.addNode(n14);
+      break;
+    default:
+      jj_la1[113] = jj_gen;
+      ;
+    }
+     {if (true) return new TryStatement(n0,n2,n3,n13);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final private boolean jj_2_1(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_1(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(0, xla); }
+  }
+
+  final private boolean jj_2_2(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_2(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(1, xla); }
+  }
+
+  final private boolean jj_2_3(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_3(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(2, xla); }
+  }
+
+  final private boolean jj_2_4(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_4(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(3, xla); }
+  }
+
+  final private boolean jj_2_5(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_5(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(4, xla); }
+  }
+
+  final private boolean jj_2_6(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_6(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(5, xla); }
+  }
+
+  final private boolean jj_2_7(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_7(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(6, xla); }
+  }
+
+  final private boolean jj_2_8(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_8(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(7, xla); }
+  }
+
+  final private boolean jj_2_9(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_9(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(8, xla); }
+  }
+
+  final private boolean jj_2_10(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_10(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(9, xla); }
+  }
+
+  final private boolean jj_2_11(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_11(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(10, xla); }
+  }
+
+  final private boolean jj_2_12(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_12(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(11, xla); }
+  }
+
+  final private boolean jj_2_13(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_13(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(12, xla); }
+  }
+
+  final private boolean jj_2_14(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_14(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(13, xla); }
+  }
+
+  final private boolean jj_2_15(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_15(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(14, xla); }
+  }
+
+  final private boolean jj_2_16(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_16(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(15, xla); }
+  }
+
+  final private boolean jj_2_17(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_17(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(16, xla); }
+  }
+
+  final private boolean jj_2_18(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_18(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(17, xla); }
+  }
+
+  final private boolean jj_2_19(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_19(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(18, xla); }
+  }
+
+  final private boolean jj_2_20(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_20(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(19, xla); }
+  }
+
+  final private boolean jj_2_21(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_21(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(20, xla); }
+  }
+
+  final private boolean jj_2_22(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_22(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(21, xla); }
+  }
+
+  final private boolean jj_2_23(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_23(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(22, xla); }
+  }
+
+  final private boolean jj_2_24(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_24(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(23, xla); }
+  }
+
+  final private boolean jj_2_25(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_25(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(24, xla); }
+  }
+
+  final private boolean jj_2_26(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_26(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(25, xla); }
+  }
+
+  final private boolean jj_2_27(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_27(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(26, xla); }
+  }
+
+  final private boolean jj_2_28(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_28(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(27, xla); }
+  }
+
+  final private boolean jj_2_29(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_29(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(28, xla); }
+  }
+
+  final private boolean jj_3R_139() {
+    if (jj_scan_token(INTERFACE)) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_280()) jj_scanpos = xsp;
+    if (jj_scan_token(LBRACE)) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_281()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RBRACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_349() {
+    if (jj_scan_token(DECR)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_348() {
+    if (jj_scan_token(INCR)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_315() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_47()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_342() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_348()) {
+    jj_scanpos = xsp;
+    if (jj_3R_349()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_286() {
+    if (jj_3R_47()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_315()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_323() {
+    if (jj_3R_53()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_342()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_352() {
+    if (jj_3R_143()) return true;
+    if (jj_3R_60()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_351() {
+    if (jj_scan_token(DECR)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_350() {
+    if (jj_scan_token(INCR)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_279() {
+    if (jj_scan_token(STRICTFP)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_278() {
+    if (jj_scan_token(PRIVATE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_343() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_350()) {
+    jj_scanpos = xsp;
+    if (jj_3R_351()) {
+    jj_scanpos = xsp;
+    if (jj_3R_352()) return true;
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_118() {
+    if (jj_3R_121()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_277() {
+    if (jj_scan_token(PROTECTED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_117() {
+    if (jj_scan_token(NEW)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_14() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_276() {
+    if (jj_scan_token(PUBLIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_116() {
+    if (jj_scan_token(SUPER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_193() {
+    if (jj_3R_53()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_343()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_275() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_47() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_14()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_115() {
+    if (jj_scan_token(THIS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_192() {
+    if (jj_3R_200()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_274() {
+    if (jj_scan_token(ABSTRACT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_114() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_191() {
+    if (jj_3R_199()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_273() {
+    if (jj_scan_token(STATIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_113() {
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_177() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_191()) {
+    jj_scanpos = xsp;
+    if (jj_3R_192()) {
+    jj_scanpos = xsp;
+    if (jj_3R_193()) return true;
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_242() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_273()) {
+    jj_scanpos = xsp;
+    if (jj_3R_274()) {
+    jj_scanpos = xsp;
+    if (jj_3R_275()) {
+    jj_scanpos = xsp;
+    if (jj_3R_276()) {
+    jj_scanpos = xsp;
+    if (jj_3R_277()) {
+    jj_scanpos = xsp;
+    if (jj_3R_278()) {
+    jj_scanpos = xsp;
+    if (jj_3R_279()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_112() {
+    if (jj_scan_token(BANG)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_111() {
+    if (jj_scan_token(TILDE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_227() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_242()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_139()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_86() {
+    if (jj_3R_62()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_85() {
+    if (jj_scan_token(VOID)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_58() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_85()) {
+    jj_scanpos = xsp;
+    if (jj_3R_86()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_73() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_47()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_111()) {
+    jj_scanpos = xsp;
+    if (jj_3R_112()) {
+    jj_scanpos = xsp;
+    if (jj_3R_113()) {
+    jj_scanpos = xsp;
+    if (jj_3R_114()) {
+    jj_scanpos = xsp;
+    if (jj_3R_115()) {
+    jj_scanpos = xsp;
+    if (jj_3R_116()) {
+    jj_scanpos = xsp;
+    if (jj_3R_117()) {
+    jj_scanpos = xsp;
+    if (jj_3R_118()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3_17() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_47()) return true;
+    if (jj_scan_token(LBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_176() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_72() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_47()) return true;
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_81() {
+    if (jj_scan_token(DOUBLE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_80() {
+    if (jj_scan_token(FLOAT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_79() {
+    if (jj_scan_token(LONG)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_16() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_56()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_78() {
+    if (jj_scan_token(INT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_55() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_16()) {
+    jj_scanpos = xsp;
+    if (jj_3R_72()) {
+    jj_scanpos = xsp;
+    if (jj_3R_73()) return true;
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_331() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_255()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_77() {
+    if (jj_scan_token(SHORT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_76() {
+    if (jj_scan_token(BYTE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_145() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_75() {
+    if (jj_scan_token(CHAR)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_74() {
+    if (jj_scan_token(BOOLEAN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_136() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_145()) jj_scanpos = xsp;
+    if (jj_3R_62()) return true;
+    if (jj_3R_255()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_331()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_56() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_74()) {
+    jj_scanpos = xsp;
+    if (jj_3R_75()) {
+    jj_scanpos = xsp;
+    if (jj_3R_76()) {
+    jj_scanpos = xsp;
+    if (jj_3R_77()) {
+    jj_scanpos = xsp;
+    if (jj_3R_78()) {
+    jj_scanpos = xsp;
+    if (jj_3R_79()) {
+    jj_scanpos = xsp;
+    if (jj_3R_80()) {
+    jj_scanpos = xsp;
+    if (jj_3R_81()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_101() {
+    if (jj_scan_token(STRICTFP)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_100() {
+    if (jj_scan_token(SYNCHRONIZED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_127() {
+    if (jj_3R_139()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_99() {
+    if (jj_scan_token(NATIVE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_126() {
+    if (jj_3R_138()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_28() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(29)) jj_scanpos = xsp;
+    if (jj_3R_62()) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_98() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_125() {
+    if (jj_3R_137()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_97() {
+    if (jj_scan_token(ABSTRACT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_15() {
+    if (jj_3R_55()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_96() {
+    if (jj_scan_token(STATIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_311() {
+    if (jj_3R_323()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_95() {
+    if (jj_scan_token(PRIVATE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_124() {
+    if (jj_3R_136()) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_91() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_94() {
+    if (jj_scan_token(PROTECTED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_310() {
+    if (jj_3R_322()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_120() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_124()) {
+    jj_scanpos = xsp;
+    if (jj_3R_125()) {
+    jj_scanpos = xsp;
+    if (jj_3R_126()) {
+    jj_scanpos = xsp;
+    if (jj_3R_127()) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_90() {
+    if (jj_3R_47()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_93() {
+    if (jj_scan_token(PUBLIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_321() {
+    if (jj_scan_token(BANG)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_89() {
+    if (jj_3R_56()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_65() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_93()) {
+    jj_scanpos = xsp;
+    if (jj_3R_94()) {
+    jj_scanpos = xsp;
+    if (jj_3R_95()) {
+    jj_scanpos = xsp;
+    if (jj_3R_96()) {
+    jj_scanpos = xsp;
+    if (jj_3R_97()) {
+    jj_scanpos = xsp;
+    if (jj_3R_98()) {
+    jj_scanpos = xsp;
+    if (jj_3R_99()) {
+    jj_scanpos = xsp;
+    if (jj_3R_100()) {
+    jj_scanpos = xsp;
+    if (jj_3R_101()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_320() {
+    if (jj_scan_token(TILDE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_48() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_65()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_62() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_89()) {
+    jj_scanpos = xsp;
+    if (jj_3R_90()) return true;
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_91()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_309() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_320()) {
+    jj_scanpos = xsp;
+    if (jj_3R_321()) return true;
+    }
+    if (jj_3R_225()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_263() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_309()) {
+    jj_scanpos = xsp;
+    if (jj_3R_310()) {
+    jj_scanpos = xsp;
+    if (jj_3R_311()) return true;
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_92() {
+    if (jj_3R_120()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_64() {
+    if (jj_scan_token(LBRACE)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_92()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RBRACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_63() {
+    if (jj_scan_token(STATIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_43() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_63()) jj_scanpos = xsp;
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_6() {
+    if (jj_3R_48()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_46() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(47)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(46)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(45)) return true;
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_200() {
+    if (jj_scan_token(DECR)) return true;
+    if (jj_3R_53()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_5() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_46()) jj_scanpos = xsp;
+    if (jj_3R_47()) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_45() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(50)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(13)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(29)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(46)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(45)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(63)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_223() {
+    if (jj_3R_230()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_61() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    if (jj_scan_token(COLON)) return true;
+    if (jj_3R_137()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_4() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_45()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(INTERFACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_44() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(50)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(13)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(29)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(46)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(45)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(63)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_222() {
+    if (jj_3R_229()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_3() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_44()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(CLASS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_221() {
+    if (jj_3R_228()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_220() {
+    if (jj_3R_227()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_199() {
+    if (jj_scan_token(INCR)) return true;
+    if (jj_3R_53()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_219() {
+    if (jj_3R_226()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_159() {
+    if (jj_3R_188()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_12() {
+    if (jj_3R_53()) return true;
+    if (jj_scan_token(DOT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_158() {
+    if (jj_3R_187()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_2() {
+    if (jj_3R_43()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_13() {
+    if (jj_scan_token(THIS)) return true;
+    if (jj_3R_54()) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_69() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_12()) jj_scanpos = xsp;
+    if (jj_scan_token(SUPER)) return true;
+    if (jj_3R_54()) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_157() {
+    if (jj_3R_186()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_214() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_2()) {
+    jj_scanpos = xsp;
+    if (jj_3R_219()) {
+    jj_scanpos = xsp;
+    if (jj_3R_220()) {
+    jj_scanpos = xsp;
+    if (jj_3R_221()) {
+    jj_scanpos = xsp;
+    if (jj_3R_222()) {
+    jj_scanpos = xsp;
+    if (jj_3R_223()) return true;
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_156() {
+    if (jj_3R_185()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_239() {
+    if (jj_3R_263()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_155() {
+    if (jj_3R_184()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_238() {
+    if (jj_3R_200()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_154() {
+    if (jj_3R_183()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_68() {
+    if (jj_scan_token(THIS)) return true;
+    if (jj_3R_54()) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_237() {
+    if (jj_3R_199()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_153() {
+    if (jj_3R_182()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_52() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_68()) {
+    jj_scanpos = xsp;
+    if (jj_3R_69()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_262() {
+    if (jj_scan_token(MINUS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_152() {
+    if (jj_3R_181()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_261() {
+    if (jj_scan_token(PLUS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_151() {
+    if (jj_3R_180()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_241() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_150() {
+    if (jj_3R_179()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_149() {
+    if (jj_3R_178()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_270() {
+    if (jj_scan_token(STRICTFP)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_236() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_261()) {
+    jj_scanpos = xsp;
+    if (jj_3R_262()) return true;
+    }
+    if (jj_3R_225()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_269() {
+    if (jj_scan_token(PRIVATE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_268() {
+    if (jj_scan_token(PROTECTED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_225() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_236()) {
+    jj_scanpos = xsp;
+    if (jj_3R_237()) {
+    jj_scanpos = xsp;
+    if (jj_3R_238()) {
+    jj_scanpos = xsp;
+    if (jj_3R_239()) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_148() {
+    if (jj_3R_177()) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_267() {
+    if (jj_scan_token(PUBLIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_147() {
+    if (jj_3R_176()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_266() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_146() {
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_265() {
+    if (jj_scan_token(ABSTRACT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_11() {
+    if (jj_3R_52()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_27() {
+    if (jj_3R_61()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_264() {
+    if (jj_scan_token(STATIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_247() {
+    if (jj_3R_120()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_137() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_27()) {
+    jj_scanpos = xsp;
+    if (jj_3R_146()) {
+    jj_scanpos = xsp;
+    if (jj_3R_147()) {
+    jj_scanpos = xsp;
+    if (jj_3R_148()) {
+    jj_scanpos = xsp;
+    if (jj_3R_149()) {
+    jj_scanpos = xsp;
+    if (jj_3R_150()) {
+    jj_scanpos = xsp;
+    if (jj_3R_151()) {
+    jj_scanpos = xsp;
+    if (jj_3R_152()) {
+    jj_scanpos = xsp;
+    if (jj_3R_153()) {
+    jj_scanpos = xsp;
+    if (jj_3R_154()) {
+    jj_scanpos = xsp;
+    if (jj_3R_155()) {
+    jj_scanpos = xsp;
+    if (jj_3R_156()) {
+    jj_scanpos = xsp;
+    if (jj_3R_157()) {
+    jj_scanpos = xsp;
+    if (jj_3R_158()) {
+    jj_scanpos = xsp;
+    if (jj_3R_159()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_240() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_264()) {
+    jj_scanpos = xsp;
+    if (jj_3R_265()) {
+    jj_scanpos = xsp;
+    if (jj_3R_266()) {
+    jj_scanpos = xsp;
+    if (jj_3R_267()) {
+    jj_scanpos = xsp;
+    if (jj_3R_268()) {
+    jj_scanpos = xsp;
+    if (jj_3R_269()) {
+    jj_scanpos = xsp;
+    if (jj_3R_270()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_246() {
+    if (jj_3R_52()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_226() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_240()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_138()) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_241()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_319() {
+    if (jj_scan_token(REM)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_318() {
+    if (jj_scan_token(SLASH)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_245() {
+    if (jj_scan_token(THROWS)) return true;
+    if (jj_3R_286()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_317() {
+    if (jj_scan_token(STAR)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_284() {
+    if (jj_scan_token(PRIVATE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_283() {
+    if (jj_scan_token(PROTECTED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_306() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_317()) {
+    jj_scanpos = xsp;
+    if (jj_3R_318()) {
+    jj_scanpos = xsp;
+    if (jj_3R_319()) return true;
+    }
+    }
+    if (jj_3R_225()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_282() {
+    if (jj_scan_token(PUBLIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_243() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_282()) {
+    jj_scanpos = xsp;
+    if (jj_3R_283()) {
+    jj_scanpos = xsp;
+    if (jj_3R_284()) return true;
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_218() {
+    if (jj_3R_225()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_306()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_228() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_243()) jj_scanpos = xsp;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    if (jj_3R_244()) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_245()) jj_scanpos = xsp;
+    if (jj_scan_token(LBRACE)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_246()) jj_scanpos = xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_247()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RBRACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_205() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_211() {
+    if (jj_3R_214()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_201() {
+    Token xsp;
+    if (jj_3R_205()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_205()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_102()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_206() {
+    if (jj_scan_token(LBRACE)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_211()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RBRACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_25() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_308() {
+    if (jj_scan_token(MINUS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_307() {
+    if (jj_scan_token(PLUS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_24() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_272() {
+    if (jj_scan_token(IMPLEMENTS)) return true;
+    if (jj_3R_286()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_257() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_307()) {
+    jj_scanpos = xsp;
+    if (jj_3R_308()) return true;
+    }
+    if (jj_3R_218()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_328() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_26() {
+    Token xsp;
+    if (jj_3_24()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_24()) { jj_scanpos = xsp; break; }
+    }
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_25()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_213() {
+    if (jj_3R_218()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_257()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_313() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_328()) jj_scanpos = xsp;
+    if (jj_3R_62()) return true;
+    if (jj_3R_304()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_271() {
+    if (jj_scan_token(EXTENDS)) return true;
+    if (jj_3R_47()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_194() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_26()) {
+    jj_scanpos = xsp;
+    if (jj_3R_201()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_341() {
+    if (jj_scan_token(FINALLY)) return true;
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_138() {
+    if (jj_scan_token(CLASS)) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_271()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_272()) jj_scanpos = xsp;
+    if (jj_3R_206()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_260() {
+    if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_340() {
+    if (jj_scan_token(CATCH)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_313()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_314() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_313()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_259() {
+    if (jj_scan_token(RSIGNEDSHIFT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_258() {
+    if (jj_scan_token(LSHIFT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_188() {
+    if (jj_scan_token(TRY)) return true;
+    if (jj_3R_64()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_340()) { jj_scanpos = xsp; break; }
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_341()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_285() {
+    if (jj_3R_313()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_314()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_202() {
+    if (jj_3R_206()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_231() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_258()) {
+    jj_scanpos = xsp;
+    if (jj_3R_259()) {
+    jj_scanpos = xsp;
+    if (jj_3R_260()) return true;
+    }
+    }
+    if (jj_3R_213()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_244() {
+    if (jj_scan_token(LPAREN)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_285()) jj_scanpos = xsp;
+    if (jj_scan_token(RPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_208() {
+    if (jj_3R_213()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_231()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_196() {
+    if (jj_3R_54()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_202()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_195() {
+    if (jj_3R_194()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_87() {
+    if (jj_scan_token(NEW)) return true;
+    if (jj_3R_47()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_195()) {
+    jj_scanpos = xsp;
+    if (jj_3R_196()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_187() {
+    if (jj_scan_token(SYNCHRONIZED)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_296() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_235() {
+    if (jj_scan_token(GE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_234() {
+    if (jj_scan_token(LE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_23() {
+    if (jj_scan_token(NEW)) return true;
+    if (jj_3R_56()) return true;
+    if (jj_3R_194()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_42() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(13)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(29)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(63)) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3_1() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_42()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(CLASS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_249() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    if (jj_3R_244()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_296()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_233() {
+    if (jj_scan_token(GT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_59() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_23()) {
+    jj_scanpos = xsp;
+    if (jj_3R_87()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_232() {
+    if (jj_scan_token(LT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_224() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_232()) {
+    jj_scanpos = xsp;
+    if (jj_3R_233()) {
+    jj_scanpos = xsp;
+    if (jj_3R_234()) {
+    jj_scanpos = xsp;
+    if (jj_3R_235()) return true;
+    }
+    }
+    }
+    if (jj_3R_208()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_186() {
+    if (jj_scan_token(THROW)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_204() {
+    if (jj_3R_208()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_224()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_253() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_252() {
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_251() {
+    if (jj_3R_64()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_339() {
+    if (jj_3R_60()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_122() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_60()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_185() {
+    if (jj_scan_token(RETURN)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_339()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_250() {
+    if (jj_scan_token(THROWS)) return true;
+    if (jj_3R_286()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_110() {
+    if (jj_3R_60()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_122()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_295() {
+    if (jj_scan_token(STRICTFP)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_215() {
+    if (jj_scan_token(INSTANCEOF)) return true;
+    if (jj_3R_62()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_294() {
+    if (jj_scan_token(SYNCHRONIZED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_293() {
+    if (jj_scan_token(NATIVE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_198() {
+    if (jj_3R_204()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_215()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_292() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_338() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_291() {
+    if (jj_scan_token(ABSTRACT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_71() {
+    if (jj_3R_110()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_290() {
+    if (jj_scan_token(STATIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_184() {
+    if (jj_scan_token(CONTINUE)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_338()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_54() {
+    if (jj_scan_token(LPAREN)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_71()) jj_scanpos = xsp;
+    if (jj_scan_token(RPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_289() {
+    if (jj_scan_token(PRIVATE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_288() {
+    if (jj_scan_token(PROTECTED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_287() {
+    if (jj_scan_token(PUBLIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_217() {
+    if (jj_scan_token(NE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_248() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_287()) {
+    jj_scanpos = xsp;
+    if (jj_3R_288()) {
+    jj_scanpos = xsp;
+    if (jj_3R_289()) {
+    jj_scanpos = xsp;
+    if (jj_3R_290()) {
+    jj_scanpos = xsp;
+    if (jj_3R_291()) {
+    jj_scanpos = xsp;
+    if (jj_3R_292()) {
+    jj_scanpos = xsp;
+    if (jj_3R_293()) {
+    jj_scanpos = xsp;
+    if (jj_3R_294()) {
+    jj_scanpos = xsp;
+    if (jj_3R_295()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_216() {
+    if (jj_scan_token(EQ)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_229() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_248()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_58()) return true;
+    if (jj_3R_249()) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_250()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_251()) {
+    jj_scanpos = xsp;
+    if (jj_3R_252()) return true;
+    }
+    xsp = jj_scanpos;
+    if (jj_3R_253()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_337() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_141() {
+    if (jj_scan_token(NULL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_212() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_216()) {
+    jj_scanpos = xsp;
+    if (jj_3R_217()) return true;
+    }
+    if (jj_3R_198()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_183() {
+    if (jj_scan_token(BREAK)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_337()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_190() {
+    if (jj_3R_198()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_212()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_161() {
+    if (jj_scan_token(FALSE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_160() {
+    if (jj_scan_token(TRUE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_140() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_160()) {
+    jj_scanpos = xsp;
+    if (jj_3R_161()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_347() {
+    if (jj_3R_357()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_207() {
+    if (jj_scan_token(BIT_AND)) return true;
+    if (jj_3R_190()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_133() {
+    if (jj_3R_141()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_175() {
+    if (jj_3R_190()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_207()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_132() {
+    if (jj_3R_140()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_358() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_177()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_131() {
+    if (jj_scan_token(STRING_LITERAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_210() {
+    if (jj_scan_token(COMMA)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_357() {
+    if (jj_3R_177()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_358()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_130() {
+    if (jj_scan_token(CHARACTER_LITERAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_129() {
+    if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_128() {
+    if (jj_scan_token(INTEGER_LITERAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_10() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_51()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_121() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_128()) {
+    jj_scanpos = xsp;
+    if (jj_3R_129()) {
+    jj_scanpos = xsp;
+    if (jj_3R_130()) {
+    jj_scanpos = xsp;
+    if (jj_3R_131()) {
+    jj_scanpos = xsp;
+    if (jj_3R_132()) {
+    jj_scanpos = xsp;
+    if (jj_3R_133()) return true;
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3_29() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(29)) jj_scanpos = xsp;
+    if (jj_3R_62()) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_203() {
+    if (jj_scan_token(XOR)) return true;
+    if (jj_3R_175()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_209() {
+    if (jj_3R_51()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_10()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_356() {
+    if (jj_3R_357()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_144() {
+    if (jj_3R_175()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_203()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_355() {
+    if (jj_3R_136()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_102() {
+    if (jj_scan_token(LBRACE)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_209()) jj_scanpos = xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_210()) jj_scanpos = xsp;
+    if (jj_scan_token(RBRACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_346() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_355()) {
+    jj_scanpos = xsp;
+    if (jj_3R_356()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_84() {
+    if (jj_3R_54()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_83() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_336() {
+    if (jj_3R_347()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_197() {
+    if (jj_scan_token(BIT_OR)) return true;
+    if (jj_3R_144()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_335() {
+    if (jj_3R_60()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_135() {
+    if (jj_3R_144()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_197()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_67() {
+    if (jj_3R_60()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_82() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_66() {
+    if (jj_3R_102()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_334() {
+    if (jj_3R_346()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_51() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_66()) {
+    jj_scanpos = xsp;
+    if (jj_3R_67()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3_22() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_182() {
+    if (jj_scan_token(FOR)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_334()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMICOLON)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_335()) jj_scanpos = xsp;
+    if (jj_scan_token(SEMICOLON)) return true;
+    xsp = jj_scanpos;
+    if (jj_3R_336()) jj_scanpos = xsp;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_137()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_21() {
+    if (jj_scan_token(DOT)) return true;
+    if (jj_scan_token(THIS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_189() {
+    if (jj_scan_token(SC_AND)) return true;
+    if (jj_3R_135()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_57() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3_21()) {
+    jj_scanpos = xsp;
+    if (jj_3_22()) {
+    jj_scanpos = xsp;
+    if (jj_3R_82()) {
+    jj_scanpos = xsp;
+    if (jj_3R_83()) {
+    jj_scanpos = xsp;
+    if (jj_3R_84()) return true;
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_316() {
+    if (jj_scan_token(LBRACKET)) return true;
+    if (jj_scan_token(RBRACKET)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_123() {
+    if (jj_3R_135()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_189()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_304() {
+    if (jj_scan_token(IDENTIFIER)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_316()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_181() {
+    if (jj_scan_token(DO)) return true;
+    if (jj_3R_137()) return true;
+    if (jj_scan_token(WHILE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_162() {
+    if (jj_scan_token(SC_OR)) return true;
+    if (jj_3R_123()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_119() {
+    if (jj_3R_123()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_162()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_305() {
+    if (jj_scan_token(ASSIGN)) return true;
+    if (jj_3R_51()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_109() {
+    if (jj_3R_47()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_20() {
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(DOT)) return true;
+    if (jj_scan_token(CLASS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_255() {
+    if (jj_3R_304()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_305()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_108() {
+    if (jj_3R_58()) return true;
+    if (jj_scan_token(DOT)) return true;
+    if (jj_scan_token(CLASS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_107() {
+    if (jj_3R_59()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_180() {
+    if (jj_scan_token(WHILE)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_137()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_106() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_142() {
+    if (jj_scan_token(HOOK)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(COLON)) return true;
+    if (jj_3R_88()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_256() {
+    if (jj_scan_token(COMMA)) return true;
+    if (jj_3R_255()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_88() {
+    if (jj_3R_119()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_142()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_105() {
+    if (jj_scan_token(SUPER)) return true;
+    if (jj_scan_token(DOT)) return true;
+    if (jj_scan_token(IDENTIFIER)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_303() {
+    if (jj_scan_token(VOLATILE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_104() {
+    if (jj_scan_token(THIS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_302() {
+    if (jj_scan_token(TRANSIENT)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_103() {
+    if (jj_3R_121()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_301() {
+    if (jj_scan_token(FINAL)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_70() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_103()) {
+    jj_scanpos = xsp;
+    if (jj_3R_104()) {
+    jj_scanpos = xsp;
+    if (jj_3R_105()) {
+    jj_scanpos = xsp;
+    if (jj_3R_106()) {
+    jj_scanpos = xsp;
+    if (jj_3R_107()) {
+    jj_scanpos = xsp;
+    if (jj_3R_108()) {
+    jj_scanpos = xsp;
+    if (jj_3R_109()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_333() {
+    if (jj_scan_token(ELSE)) return true;
+    if (jj_3R_137()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_300() {
+    if (jj_scan_token(STATIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_299() {
+    if (jj_scan_token(PRIVATE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_298() {
+    if (jj_scan_token(PROTECTED)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_174() {
+    if (jj_scan_token(ORASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_297() {
+    if (jj_scan_token(PUBLIC)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_173() {
+    if (jj_scan_token(XORASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_179() {
+    if (jj_scan_token(IF)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_137()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_333()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_172() {
+    if (jj_scan_token(ANDASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_254() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_297()) {
+    jj_scanpos = xsp;
+    if (jj_3R_298()) {
+    jj_scanpos = xsp;
+    if (jj_3R_299()) {
+    jj_scanpos = xsp;
+    if (jj_3R_300()) {
+    jj_scanpos = xsp;
+    if (jj_3R_301()) {
+    jj_scanpos = xsp;
+    if (jj_3R_302()) {
+    jj_scanpos = xsp;
+    if (jj_3R_303()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_171() {
+    if (jj_scan_token(RUNSIGNEDSHIFTASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_230() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_254()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_3R_62()) return true;
+    if (jj_3R_255()) return true;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_256()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(SEMICOLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_170() {
+    if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_169() {
+    if (jj_scan_token(LSHIFTASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_168() {
+    if (jj_scan_token(MINUSASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_167() {
+    if (jj_scan_token(PLUSASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_166() {
+    if (jj_scan_token(REMASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_165() {
+    if (jj_scan_token(SLASHASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_164() {
+    if (jj_scan_token(STARASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_19() {
+    if (jj_3R_57()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_354() {
+    if (jj_scan_token(_DEFAULT)) return true;
+    if (jj_scan_token(COLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_163() {
+    if (jj_scan_token(ASSIGN)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_53() {
+    if (jj_3R_70()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3_19()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_143() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_163()) {
+    jj_scanpos = xsp;
+    if (jj_3R_164()) {
+    jj_scanpos = xsp;
+    if (jj_3R_165()) {
+    jj_scanpos = xsp;
+    if (jj_3R_166()) {
+    jj_scanpos = xsp;
+    if (jj_3R_167()) {
+    jj_scanpos = xsp;
+    if (jj_3R_168()) {
+    jj_scanpos = xsp;
+    if (jj_3R_169()) {
+    jj_scanpos = xsp;
+    if (jj_3R_170()) {
+    jj_scanpos = xsp;
+    if (jj_3R_171()) {
+    jj_scanpos = xsp;
+    if (jj_3R_172()) {
+    jj_scanpos = xsp;
+    if (jj_3R_173()) {
+    jj_scanpos = xsp;
+    if (jj_3R_174()) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_353() {
+    if (jj_scan_token(CASE)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(COLON)) return true;
+    return false;
+  }
+
+  final private boolean jj_3_9() {
+    if (jj_3R_48()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_50() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(50)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(13)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(29)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(46)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(45)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(63)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_344() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_353()) {
+    jj_scanpos = xsp;
+    if (jj_3R_354()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3_8() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_50()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(INTERFACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_327() {
+    if (jj_3R_230()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_49() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(50)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(13)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(29)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(47)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(46)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(45)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(63)) return true;
+    }
+    }
+    }
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3_7() {
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_49()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(CLASS)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_326() {
+    if (jj_3R_229()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_325() {
+    if (jj_3R_227()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_330() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_62()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_263()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_324() {
+    if (jj_3R_226()) return true;
+    return false;
+  }
+
+  final private boolean jj_3_18() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_56()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_312() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_324()) {
+    jj_scanpos = xsp;
+    if (jj_3R_325()) {
+    jj_scanpos = xsp;
+    if (jj_3R_326()) {
+    jj_scanpos = xsp;
+    if (jj_3R_327()) return true;
+    }
+    }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_329() {
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_62()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_3R_225()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_345() {
+    if (jj_3R_120()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_322() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_329()) {
+    jj_scanpos = xsp;
+    if (jj_3R_330()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_134() {
+    if (jj_3R_143()) return true;
+    if (jj_3R_60()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_332() {
+    if (jj_3R_344()) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_345()) { jj_scanpos = xsp; break; }
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_281() {
+    if (jj_3R_312()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_60() {
+    if (jj_3R_88()) return true;
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_134()) jj_scanpos = xsp;
+    return false;
+  }
+
+  final private boolean jj_3R_178() {
+    if (jj_scan_token(SWITCH)) return true;
+    if (jj_scan_token(LPAREN)) return true;
+    if (jj_3R_60()) return true;
+    if (jj_scan_token(RPAREN)) return true;
+    if (jj_scan_token(LBRACE)) return true;
+    Token xsp;
+    while (true) {
+      xsp = jj_scanpos;
+      if (jj_3R_332()) { jj_scanpos = xsp; break; }
+    }
+    if (jj_scan_token(RBRACE)) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_280() {
+    if (jj_scan_token(EXTENDS)) return true;
+    if (jj_3R_286()) return true;
+    return false;
+  }
+
+  public JavaParserTokenManager token_source;
+  JavaCharStream jj_input_stream;
+  public Token token, jj_nt;
+  private int jj_ntk;
+  private Token jj_scanpos, jj_lastpos;
+  private int jj_la;
+  public boolean lookingAhead = false;
+  private boolean jj_semLA;
+  private int jj_gen;
+  final private int[] jj_la1 = new int[114];
+  static private int[] jj_la1_0;
+  static private int[] jj_la1_1;
+  static private int[] jj_la1_2;
+  static private int[] jj_la1_3;
+  static {
+      jj_la1_0();
+      jj_la1_1();
+      jj_la1_2();
+      jj_la1_3();
+   }
+   private static void jj_la1_0() {
+      jj_la1_0 = new int[] 
{0x0,0x0,0x20102000,0x0,0x2000,0x20002000,0x20002000,0x8000000,0x0,0xa2196000,0x20002000,0x20002000,0x0,0xa2094000,0x20002000,0x20002000,0x2000,0x2000,0x20002000,0x20002000,0x8000000,0xa2196000,0xa2094000,0x20000000,0x20000000,0x0,0x0,0x0,0x92094000,0x92094000,0x0,0x20002000,0x20002000,0x0,0x0,0x0,0x0,0x0,0xa2094000,0x20000000,0x0,0x0,0x0,0xb359c000,0x92094000,0x0,0x82094000,0x0,0x82094000,0x82094000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x92094000,0x0,0x0,0x92094000,0x10000000,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000000,0x10000000,0x92094000,0x0,0x0,0x0,0x0,0x0,0x0,0x9349c000,0xb359c000,0x9359c000,0x20000000,0x0,0x0,0x0,0x92094000,0x820000,0xb359c000,0x820000,0x4000000,0xb2094000,0x92094000,0x92094000,0x92094000,0x0,0x0,0x0,0x92094000,0x40000,0x40000000,};
+   }
+   private static void jj_la1_1() {
+      jj_la1_1 = new int[] 
{0x1000,0x10,0x80008080,0x0,0x80008080,0x80008000,0x80008000,0x0,0x8,0xb226e3c0,0x8004e000,0x8004e000,0x0,0x2206e140,0x8024e200,0x8024e200,0x80008000,0x80008000,0x8004e000,0x8004e000,0x0,0xb226e3c0,0x2206e140,0x2204e000,0x2204e000,0x0,0x0,0x0,0x144a0d40,0x144a0d40,0x0,0x8024e200,0x8024e200,0x1000000,0x0,0x0,0x0,0x0,0x20140,0x0,0xe000,0xe000,0x1000000,0x5cfb0dc5,0x144a0d40,0x40000,0x20140,0x0,0x20140,0x10020140,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x144a0d40,0x0,0x0,0x144a0d40,0x4480c00,0x0,0x0,0x0,0x0,0x4480c00,0x0,0x0,0x4000800,0x4000000,0x144a0d40,0x0,0x0,0x0,0x400,0x0,0x0,0x5cfb0d45,0x5cfb0dc5,0x5cfb0dc5,0x0,0x0,0x0,0x0,0x144a0d40,0x0,0x5cfb0dc5,0x0,0x0,0x144a0d40,0x144a0d40,0x144a0d40,0x144a0d40,0x0,0x0,0x0,0x144a0d40,0x0,0x0,};
+   }
+   private static void jj_la1_2() {
+      jj_la1_2 = new int[] 
{0x0,0x0,0x20000,0x80000,0x20000,0x0,0x0,0x0,0x0,0x2100,0x0,0x0,0x20000,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x100,0x0,0x0,0x40000,0x100000,0x8000,0x18029d1,0x18029d1,0x40000,0x0,0x0,0x0,0x22000,0x20000,0x8000,0x40000,0x100,0x0,0x0,0x0,0x0,0x229d1,0x9d1,0x0,0x100,0x8000,0x0,0x100,0x40000,0x100000,0x100000,0x2000000,0x80000000,0x0,0x0,0x0,0x0,0x48000000,0x48000000,0x0,0x30600000,0x30600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18009d1,0x1800000,0x1800000,0x9d1,0x18009d1,0x800,0x0,0x0,0x800,0x8d1,0x100,0x88800,0xd1,0x0,0x18009d1,0x40000,0x2000,0x8800,0x0,0x8000,0x8000,0x229d1,0x229d1,0x229d1,0x0,0x40000,0x100000,0x100000,0x9d1,0x0,0x229d1,0x0,0x0,0x9d1,0x18009d1,0x9d1,0x9d1,0x40000,0x100,0x100,0x18009d1,0x0,0x0,};
+   }
+   private static void jj_la1_3() {
+      jj_la1_3 = new int[] 
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffc000,0x1ffc000,0x0,0x0,0x1,0x100,0x200,0x80,0x0,0x0,0x0,0x0,0x0,0x3800,0x3800,0x18,0x18,0x460,0x460,0x18,0x1e,0x0,0x0,0x0,0x0,0x0,0x6,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x6,0x6,0x0,0x0,0x1ffc006,0x1ffc006,0x6,0x0,0x6,0x0,0x0,0x6,0x1e,0x6,0x6,0x0,0x0,0x0,0x1e,0x0,0x0,};
+   }
+  final private JJCalls[] jj_2_rtns = new JJCalls[29];
+  private boolean jj_rescan = false;
+  private int jj_gc = 0;
+
+  public JavaParser(java.io.InputStream stream) {
+     this(stream, null);
+  }
+  public JavaParser(java.io.InputStream stream, String encoding) {
+    try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } 
catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    token_source = new JavaParserTokenManager(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 114; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public void ReInit(java.io.InputStream stream) {
+     ReInit(stream);
+  }
+  public void ReInit(java.io.InputStream stream, String encoding) {
+    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } 
catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
+    token_source.ReInit(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 114; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public JavaParser(java.io.Reader stream) {
+    jj_input_stream = new JavaCharStream(stream, 1, 1);
+    token_source = new JavaParserTokenManager(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 114; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public void ReInit(java.io.Reader stream) {
+    jj_input_stream.ReInit(stream, 1, 1);
+    token_source.ReInit(jj_input_stream);
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 114; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public JavaParser(JavaParserTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 114; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  public void ReInit(JavaParserTokenManager tm) {
+    token_source = tm;
+    token = new Token();
+    jj_ntk = -1;
+    jj_gen = 0;
+    for (int i = 0; i < 114; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+  }
+
+  final private Token jj_consume_token(int kind) throws ParseException {
+    Token oldToken;
+    if ((oldToken = token).next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    if (token.kind == kind) {
+      jj_gen++;
+      if (++jj_gc > 100) {
+        jj_gc = 0;
+        for (int i = 0; i < jj_2_rtns.length; i++) {
+          JJCalls c = jj_2_rtns[i];
+          while (c != null) {
+            if (c.gen < jj_gen) c.first = null;
+            c = c.next;
+          }
+        }
+      }
+      return token;
+    }
+    token = oldToken;
+    jj_kind = kind;
+    throw generateParseException();
+  }
+
+  static private final class LookaheadSuccess extends java.lang.Error { }
+  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+  final private boolean jj_scan_token(int kind) {
+    if (jj_scanpos == jj_lastpos) {
+      jj_la--;
+      if (jj_scanpos.next == null) {
+        jj_lastpos = jj_scanpos = jj_scanpos.next = 
token_source.getNextToken();
+      } else {
+        jj_lastpos = jj_scanpos = jj_scanpos.next;
+      }
+    } else {
+      jj_scanpos = jj_scanpos.next;
+    }
+    if (jj_rescan) {
+      int i = 0; Token tok = token;
+      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+      if (tok != null) jj_add_error_token(kind, i);
+    }
+    if (jj_scanpos.kind != kind) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+    return false;
+  }
+
+  final public Token getNextToken() {
+    if (token.next != null) token = token.next;
+    else token = token.next = token_source.getNextToken();
+    jj_ntk = -1;
+    jj_gen++;
+    return token;
+  }
+
+  final public Token getToken(int index) {
+    Token t = lookingAhead ? jj_scanpos : token;
+    for (int i = 0; i < index; i++) {
+      if (t.next != null) t = t.next;
+      else t = t.next = token_source.getNextToken();
+    }
+    return t;
+  }
+
+  final private int jj_ntk() {
+    if ((jj_nt=token.next) == null)
+      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+    else
+      return (jj_ntk = jj_nt.kind);
+  }
+
+  private java.util.Vector jj_expentries = new java.util.Vector();
+  private int[] jj_expentry;
+  private int jj_kind = -1;
+  private int[] jj_lasttokens = new int[100];
+  private int jj_endpos;
+
+  private void jj_add_error_token(int kind, int pos) {
+    if (pos >= 100) return;
+    if (pos == jj_endpos + 1) {
+      jj_lasttokens[jj_endpos++] = kind;
+    } else if (jj_endpos != 0) {
+      jj_expentry = new int[jj_endpos];
+      for (int i = 0; i < jj_endpos; i++) {
+        jj_expentry[i] = jj_lasttokens[i];
+      }
+      boolean exists = false;
+      for (java.util.Enumeration e = jj_expentries.elements(); 
e.hasMoreElements();) {
+        int[] oldentry = (int[])(e.nextElement());
+        if (oldentry.length == jj_expentry.length) {
+          exists = true;
+          for (int i = 0; i < jj_expentry.length; i++) {
+            if (oldentry[i] != jj_expentry[i]) {
+              exists = false;
+              break;
+            }
+          }
+          if (exists) break;
+        }
+      }
+      if (!exists) jj_expentries.addElement(jj_expentry);
+      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+    }
+  }
+
+  public ParseException generateParseException() {
+    jj_expentries.removeAllElements();
+    boolean[] la1tokens = new boolean[121];
+    for (int i = 0; i < 121; i++) {
+      la1tokens[i] = false;
+    }
+    if (jj_kind >= 0) {
+      la1tokens[jj_kind] = true;
+      jj_kind = -1;
+    }
+    for (int i = 0; i < 114; i++) {
+      if (jj_la1[i] == jj_gen) {
+        for (int j = 0; j < 32; j++) {
+          if ((jj_la1_0[i] & (1<<j)) != 0) {
+            la1tokens[j] = true;
+          }
+          if ((jj_la1_1[i] & (1<<j)) != 0) {
+            la1tokens[32+j] = true;
+          }
+          if ((jj_la1_2[i] & (1<<j)) != 0) {
+            la1tokens[64+j] = true;
+          }
+          if ((jj_la1_3[i] & (1<<j)) != 0) {
+            la1tokens[96+j] = true;
+          }
+        }
+      }
+    }
+    for (int i = 0; i < 121; i++) {
+      if (la1tokens[i]) {
+        jj_expentry = new int[1];
+        jj_expentry[0] = i;
+        jj_expentries.addElement(jj_expentry);
+      }
+    }
+    jj_endpos = 0;
+    jj_rescan_token();
+    jj_add_error_token(0, 0);
+    int[][] exptokseq = new int[jj_expentries.size()][];
+    for (int i = 0; i < jj_expentries.size(); i++) {
+      exptokseq[i] = (int[])jj_expentries.elementAt(i);
+    }
+    return new ParseException(token, exptokseq, tokenImage);
+  }
+
+  final public void enable_tracing() {
+  }
+
+  final public void disable_tracing() {
+  }
+
+  final private void jj_rescan_token() {
+    jj_rescan = true;
+    for (int i = 0; i < 29; i++) {
+    try {
+      JJCalls p = jj_2_rtns[i];
+      do {
+        if (p.gen > jj_gen) {
+          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+          switch (i) {
+            case 0: jj_3_1(); break;
+            case 1: jj_3_2(); break;
+            case 2: jj_3_3(); break;
+            case 3: jj_3_4(); break;
+            case 4: jj_3_5(); break;
+            case 5: jj_3_6(); break;
+            case 6: jj_3_7(); break;
+            case 7: jj_3_8(); break;
+            case 8: jj_3_9(); break;
+            case 9: jj_3_10(); break;
+            case 10: jj_3_11(); break;
+            case 11: jj_3_12(); break;
+            case 12: jj_3_13(); break;
+            case 13: jj_3_14(); break;
+            case 14: jj_3_15(); break;
+            case 15: jj_3_16(); break;
+            case 16: jj_3_17(); break;
+            case 17: jj_3_18(); break;
+            case 18: jj_3_19(); break;
+            case 19: jj_3_20(); break;
+            case 20: jj_3_21(); break;
+            case 21: jj_3_22(); break;
+            case 22: jj_3_23(); break;
+            case 23: jj_3_24(); break;
+            case 24: jj_3_25(); break;
+            case 25: jj_3_26(); break;
+            case 26: jj_3_27(); break;
+            case 27: jj_3_28(); break;
+            case 28: jj_3_29(); break;
+          }
+        }
+        p = p.next;
+      } while (p != null);
+      } catch(LookaheadSuccess ls) { }
+    }
+    jj_rescan = false;
+  }
+
+  final private void jj_save(int index, int xla) {
+    JJCalls p = jj_2_rtns[index];
+    while (p.gen > jj_gen) {
+      if (p.next == null) { p = p.next = new JJCalls(); break; }
+      p = p.next;
+    }
+    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+  }
+
+  static final class JJCalls {
+    int gen;
+    Token first;
+    int arg;
+    JJCalls next;
+  }
+
+}
+
+class JTBToolkit {
+   static NodeToken makeNodeToken(Token t) {
+      return new NodeToken(t.image.intern(), t.kind, t.beginLine, 
t.beginColumn, t.endLine, t.endColumn);
+   }
+}

Added: freeway/src/org/gnu/freeway/support/javaparser/JavaParserConstants.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/JavaParserConstants.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/JavaParserConstants.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,247 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. JavaParserConstants.java */
+public interface JavaParserConstants {
+
+  int EOF = 0;
+  int SINGLE_LINE_COMMENT = 9;
+  int FORMAL_COMMENT = 10;
+  int MULTI_LINE_COMMENT = 11;
+  int ABSTRACT = 13;
+  int BOOLEAN = 14;
+  int BREAK = 15;
+  int BYTE = 16;
+  int CASE = 17;
+  int CATCH = 18;
+  int CHAR = 19;
+  int CLASS = 20;
+  int CONST = 21;
+  int CONTINUE = 22;
+  int _DEFAULT = 23;
+  int DO = 24;
+  int DOUBLE = 25;
+  int ELSE = 26;
+  int EXTENDS = 27;
+  int FALSE = 28;
+  int FINAL = 29;
+  int FINALLY = 30;
+  int FLOAT = 31;
+  int FOR = 32;
+  int GOTO = 33;
+  int IF = 34;
+  int IMPLEMENTS = 35;
+  int IMPORT = 36;
+  int INSTANCEOF = 37;
+  int INT = 38;
+  int INTERFACE = 39;
+  int LONG = 40;
+  int NATIVE = 41;
+  int NEW = 42;
+  int NULL = 43;
+  int PACKAGE = 44;
+  int PRIVATE = 45;
+  int PROTECTED = 46;
+  int PUBLIC = 47;
+  int RETURN = 48;
+  int SHORT = 49;
+  int STATIC = 50;
+  int SUPER = 51;
+  int SWITCH = 52;
+  int SYNCHRONIZED = 53;
+  int THIS = 54;
+  int THROW = 55;
+  int THROWS = 56;
+  int TRANSIENT = 57;
+  int TRUE = 58;
+  int TRY = 59;
+  int VOID = 60;
+  int VOLATILE = 61;
+  int WHILE = 62;
+  int STRICTFP = 63;
+  int INTEGER_LITERAL = 64;
+  int DECIMAL_LITERAL = 65;
+  int HEX_LITERAL = 66;
+  int OCTAL_LITERAL = 67;
+  int FLOATING_POINT_LITERAL = 68;
+  int EXPONENT = 69;
+  int CHARACTER_LITERAL = 70;
+  int STRING_LITERAL = 71;
+  int IDENTIFIER = 72;
+  int LETTER = 73;
+  int DIGIT = 74;
+  int LPAREN = 75;
+  int RPAREN = 76;
+  int LBRACE = 77;
+  int RBRACE = 78;
+  int LBRACKET = 79;
+  int RBRACKET = 80;
+  int SEMICOLON = 81;
+  int COMMA = 82;
+  int DOT = 83;
+  int ASSIGN = 84;
+  int GT = 85;
+  int LT = 86;
+  int BANG = 87;
+  int TILDE = 88;
+  int HOOK = 89;
+  int COLON = 90;
+  int EQ = 91;
+  int LE = 92;
+  int GE = 93;
+  int NE = 94;
+  int SC_OR = 95;
+  int SC_AND = 96;
+  int INCR = 97;
+  int DECR = 98;
+  int PLUS = 99;
+  int MINUS = 100;
+  int STAR = 101;
+  int SLASH = 102;
+  int BIT_AND = 103;
+  int BIT_OR = 104;
+  int XOR = 105;
+  int REM = 106;
+  int LSHIFT = 107;
+  int RSIGNEDSHIFT = 108;
+  int RUNSIGNEDSHIFT = 109;
+  int PLUSASSIGN = 110;
+  int MINUSASSIGN = 111;
+  int STARASSIGN = 112;
+  int SLASHASSIGN = 113;
+  int ANDASSIGN = 114;
+  int ORASSIGN = 115;
+  int XORASSIGN = 116;
+  int REMASSIGN = 117;
+  int LSHIFTASSIGN = 118;
+  int RSIGNEDSHIFTASSIGN = 119;
+  int RUNSIGNEDSHIFTASSIGN = 120;
+
+  int DEFAULT = 0;
+  int IN_SINGLE_LINE_COMMENT = 1;
+  int IN_FORMAL_COMMENT = 2;
+  int IN_MULTI_LINE_COMMENT = 3;
+
+  String[] tokenImage = {
+    "<EOF>",
+    "\" \"",
+    "\"\\t\"",
+    "\"\\n\"",
+    "\"\\r\"",
+    "\"\\f\"",
+    "\"//\"",
+    "<token of kind 7>",
+    "\"/*\"",
+    "<SINGLE_LINE_COMMENT>",
+    "\"*/\"",
+    "\"*/\"",
+    "<token of kind 12>",
+    "\"abstract\"",
+    "\"boolean\"",
+    "\"break\"",
+    "\"byte\"",
+    "\"case\"",
+    "\"catch\"",
+    "\"char\"",
+    "\"class\"",
+    "\"const\"",
+    "\"continue\"",
+    "\"default\"",
+    "\"do\"",
+    "\"double\"",
+    "\"else\"",
+    "\"extends\"",
+    "\"false\"",
+    "\"final\"",
+    "\"finally\"",
+    "\"float\"",
+    "\"for\"",
+    "\"goto\"",
+    "\"if\"",
+    "\"implements\"",
+    "\"import\"",
+    "\"instanceof\"",
+    "\"int\"",
+    "\"interface\"",
+    "\"long\"",
+    "\"native\"",
+    "\"new\"",
+    "\"null\"",
+    "\"package\"",
+    "\"private\"",
+    "\"protected\"",
+    "\"public\"",
+    "\"return\"",
+    "\"short\"",
+    "\"static\"",
+    "\"super\"",
+    "\"switch\"",
+    "\"synchronized\"",
+    "\"this\"",
+    "\"throw\"",
+    "\"throws\"",
+    "\"transient\"",
+    "\"true\"",
+    "\"try\"",
+    "\"void\"",
+    "\"volatile\"",
+    "\"while\"",
+    "\"strictfp\"",
+    "<INTEGER_LITERAL>",
+    "<DECIMAL_LITERAL>",
+    "<HEX_LITERAL>",
+    "<OCTAL_LITERAL>",
+    "<FLOATING_POINT_LITERAL>",
+    "<EXPONENT>",
+    "<CHARACTER_LITERAL>",
+    "<STRING_LITERAL>",
+    "<IDENTIFIER>",
+    "<LETTER>",
+    "<DIGIT>",
+    "\"(\"",
+    "\")\"",
+    "\"{\"",
+    "\"}\"",
+    "\"[\"",
+    "\"]\"",
+    "\";\"",
+    "\",\"",
+    "\".\"",
+    "\"=\"",
+    "\">\"",
+    "\"<\"",
+    "\"!\"",
+    "\"~\"",
+    "\"?\"",
+    "\":\"",
+    "\"==\"",
+    "\"<=\"",
+    "\">=\"",
+    "\"!=\"",
+    "\"||\"",
+    "\"&&\"",
+    "\"++\"",
+    "\"--\"",
+    "\"+\"",
+    "\"-\"",
+    "\"*\"",
+    "\"/\"",
+    "\"&\"",
+    "\"|\"",
+    "\"^\"",
+    "\"%\"",
+    "\"<<\"",
+    "\">>\"",
+    "\">>>\"",
+    "\"+=\"",
+    "\"-=\"",
+    "\"*=\"",
+    "\"/=\"",
+    "\"&=\"",
+    "\"|=\"",
+    "\"^=\"",
+    "\"%=\"",
+    "\"<<=\"",
+    "\">>=\"",
+    "\">>>=\"",
+  };
+
+}

Added: 
freeway/src/org/gnu/freeway/support/javaparser/JavaParserTokenManager.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/JavaParserTokenManager.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/JavaParserTokenManager.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,1717 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. JavaParserTokenManager.java */
+import org.gnu.freeway.support.javaparser.*;
+import java.util.Vector;
+
+public class JavaParserTokenManager implements JavaParserConstants
+{
+  public  java.io.PrintStream debugStream = System.out;
+  public  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1)
+{
+   switch (pos)
+   {
+      case 0:
+         if ((active0 & 0x140L) != 0L || (active1 & 0x2004000000000L) != 0L)
+            return 2;
+         if ((active1 & 0x80000L) != 0L)
+            return 8;
+         if ((active0 & 0xffffffffffffe000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            return 32;
+         }
+         return -1;
+      case 1:
+         if ((active0 & 0x100L) != 0L)
+            return 0;
+         if ((active0 & 0xfffffffbfcffe000L) != 0L)
+         {
+            if (jjmatchedPos != 1)
+            {
+               jjmatchedKind = 72;
+               jjmatchedPos = 1;
+            }
+            return 32;
+         }
+         if ((active0 & 0x403000000L) != 0L)
+            return 32;
+         return -1;
+      case 2:
+         if ((active0 & 0xf7fffb3afeffe000L) != 0L)
+         {
+            if (jjmatchedPos != 2)
+            {
+               jjmatchedKind = 72;
+               jjmatchedPos = 2;
+            }
+            return 32;
+         }
+         if ((active0 & 0x80004c100000000L) != 0L)
+            return 32;
+         return -1;
+      case 3:
+         if ((active0 & 0xe3bff2b8faf4e000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 3;
+            return 32;
+         }
+         if ((active0 & 0x14400902040b0000L) != 0L)
+            return 32;
+         return -1;
+      case 4:
+         if ((active0 & 0xa235f2b80ac06000L) != 0L)
+         {
+            if (jjmatchedPos != 4)
+            {
+               jjmatchedKind = 72;
+               jjmatchedPos = 4;
+            }
+            return 32;
+         }
+         if ((active0 & 0x418a0000f0348000L) != 0L)
+            return 32;
+         return -1;
+      case 5:
+         if ((active0 & 0xa22070a848c06000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 5;
+            return 32;
+         }
+         if ((active0 & 0x115821002000000L) != 0L)
+            return 32;
+         return -1;
+      case 6:
+         if ((active0 & 0xa22040a800402000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 6;
+            return 32;
+         }
+         if ((active0 & 0x300048804000L) != 0L)
+            return 32;
+         return -1;
+      case 7:
+         if ((active0 & 0x22040a800000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 7;
+            return 32;
+         }
+         if ((active0 & 0xa000000000402000L) != 0L)
+            return 32;
+         return -1;
+      case 8:
+         if ((active0 & 0x20002800000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 8;
+            return 32;
+         }
+         if ((active0 & 0x200408000000000L) != 0L)
+            return 32;
+         return -1;
+      case 9:
+         if ((active0 & 0x20000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 9;
+            return 32;
+         }
+         if ((active0 & 0x2800000000L) != 0L)
+            return 32;
+         return -1;
+      case 10:
+         if ((active0 & 0x20000000000000L) != 0L)
+         {
+            jjmatchedKind = 72;
+            jjmatchedPos = 10;
+            return 32;
+         }
+         return -1;
+      default :
+         return -1;
+   }
+}
+private final int jjStartNfa_0(int pos, long active0, long active1)
+{
+   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 
1);
+}
+private final int jjStopAtPos(int pos, int kind)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   return pos + 1;
+}
+private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+{
+   jjmatchedKind = kind;
+   jjmatchedPos = pos;
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) { return pos + 1; }
+   return jjMoveNfa_0(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_0()
+{
+   switch(curChar)
+   {
+      case 33:
+         jjmatchedKind = 87;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x40000000L);
+      case 37:
+         jjmatchedKind = 106;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x20000000000000L);
+      case 38:
+         jjmatchedKind = 103;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x4000100000000L);
+      case 40:
+         return jjStopAtPos(0, 75);
+      case 41:
+         return jjStopAtPos(0, 76);
+      case 42:
+         jjmatchedKind = 101;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x1000000000000L);
+      case 43:
+         jjmatchedKind = 99;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x400200000000L);
+      case 44:
+         return jjStopAtPos(0, 82);
+      case 45:
+         jjmatchedKind = 100;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x800400000000L);
+      case 46:
+         return jjStartNfaWithStates_0(0, 83, 8);
+      case 47:
+         jjmatchedKind = 102;
+         return jjMoveStringLiteralDfa1_0(0x140L, 0x2000000000000L);
+      case 58:
+         return jjStopAtPos(0, 90);
+      case 59:
+         return jjStopAtPos(0, 81);
+      case 60:
+         jjmatchedKind = 86;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x40080010000000L);
+      case 61:
+         jjmatchedKind = 84;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x8000000L);
+      case 62:
+         jjmatchedKind = 85;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x180300020000000L);
+      case 63:
+         return jjStopAtPos(0, 89);
+      case 91:
+         return jjStopAtPos(0, 79);
+      case 93:
+         return jjStopAtPos(0, 80);
+      case 94:
+         jjmatchedKind = 105;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x10000000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa1_0(0x2000L, 0x0L);
+      case 98:
+         return jjMoveStringLiteralDfa1_0(0x1c000L, 0x0L);
+      case 99:
+         return jjMoveStringLiteralDfa1_0(0x7e0000L, 0x0L);
+      case 100:
+         return jjMoveStringLiteralDfa1_0(0x3800000L, 0x0L);
+      case 101:
+         return jjMoveStringLiteralDfa1_0(0xc000000L, 0x0L);
+      case 102:
+         return jjMoveStringLiteralDfa1_0(0x1f0000000L, 0x0L);
+      case 103:
+         return jjMoveStringLiteralDfa1_0(0x200000000L, 0x0L);
+      case 105:
+         return jjMoveStringLiteralDfa1_0(0xfc00000000L, 0x0L);
+      case 108:
+         return jjMoveStringLiteralDfa1_0(0x10000000000L, 0x0L);
+      case 110:
+         return jjMoveStringLiteralDfa1_0(0xe0000000000L, 0x0L);
+      case 112:
+         return jjMoveStringLiteralDfa1_0(0xf00000000000L, 0x0L);
+      case 114:
+         return jjMoveStringLiteralDfa1_0(0x1000000000000L, 0x0L);
+      case 115:
+         return jjMoveStringLiteralDfa1_0(0x803e000000000000L, 0x0L);
+      case 116:
+         return jjMoveStringLiteralDfa1_0(0xfc0000000000000L, 0x0L);
+      case 118:
+         return jjMoveStringLiteralDfa1_0(0x3000000000000000L, 0x0L);
+      case 119:
+         return jjMoveStringLiteralDfa1_0(0x4000000000000000L, 0x0L);
+      case 123:
+         return jjStopAtPos(0, 77);
+      case 124:
+         jjmatchedKind = 104;
+         return jjMoveStringLiteralDfa1_0(0x0L, 0x8000080000000L);
+      case 125:
+         return jjStopAtPos(0, 78);
+      case 126:
+         return jjStopAtPos(0, 88);
+      default :
+         return jjMoveNfa_0(3, 0);
+   }
+}
+private final int jjMoveStringLiteralDfa1_0(long active0, long active1)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(0, active0, active1);
+      return 1;
+   }
+   switch(curChar)
+   {
+      case 38:
+         if ((active1 & 0x100000000L) != 0L)
+            return jjStopAtPos(1, 96);
+         break;
+      case 42:
+         if ((active0 & 0x100L) != 0L)
+            return jjStartNfaWithStates_0(1, 8, 0);
+         break;
+      case 43:
+         if ((active1 & 0x200000000L) != 0L)
+            return jjStopAtPos(1, 97);
+         break;
+      case 45:
+         if ((active1 & 0x400000000L) != 0L)
+            return jjStopAtPos(1, 98);
+         break;
+      case 47:
+         if ((active0 & 0x40L) != 0L)
+            return jjStopAtPos(1, 6);
+         break;
+      case 60:
+         if ((active1 & 0x80000000000L) != 0L)
+         {
+            jjmatchedKind = 107;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 
0x40000000000000L);
+      case 61:
+         if ((active1 & 0x8000000L) != 0L)
+            return jjStopAtPos(1, 91);
+         else if ((active1 & 0x10000000L) != 0L)
+            return jjStopAtPos(1, 92);
+         else if ((active1 & 0x20000000L) != 0L)
+            return jjStopAtPos(1, 93);
+         else if ((active1 & 0x40000000L) != 0L)
+            return jjStopAtPos(1, 94);
+         else if ((active1 & 0x400000000000L) != 0L)
+            return jjStopAtPos(1, 110);
+         else if ((active1 & 0x800000000000L) != 0L)
+            return jjStopAtPos(1, 111);
+         else if ((active1 & 0x1000000000000L) != 0L)
+            return jjStopAtPos(1, 112);
+         else if ((active1 & 0x2000000000000L) != 0L)
+            return jjStopAtPos(1, 113);
+         else if ((active1 & 0x4000000000000L) != 0L)
+            return jjStopAtPos(1, 114);
+         else if ((active1 & 0x8000000000000L) != 0L)
+            return jjStopAtPos(1, 115);
+         else if ((active1 & 0x10000000000000L) != 0L)
+            return jjStopAtPos(1, 116);
+         else if ((active1 & 0x20000000000000L) != 0L)
+            return jjStopAtPos(1, 117);
+         break;
+      case 62:
+         if ((active1 & 0x100000000000L) != 0L)
+         {
+            jjmatchedKind = 108;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 
0x180200000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa2_0(active0, 0x120010060000L, active1, 
0L);
+      case 98:
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000L, active1, 0L);
+      case 101:
+         return jjMoveStringLiteralDfa2_0(active0, 0x1040000800000L, active1, 
0L);
+      case 102:
+         if ((active0 & 0x400000000L) != 0L)
+            return jjStartNfaWithStates_0(1, 34, 32);
+         break;
+      case 104:
+         return jjMoveStringLiteralDfa2_0(active0, 0x41c2000000080000L, 
active1, 0L);
+      case 105:
+         return jjMoveStringLiteralDfa2_0(active0, 0x60000000L, active1, 0L);
+      case 108:
+         return jjMoveStringLiteralDfa2_0(active0, 0x84100000L, active1, 0L);
+      case 109:
+         return jjMoveStringLiteralDfa2_0(active0, 0x1800000000L, active1, 0L);
+      case 110:
+         return jjMoveStringLiteralDfa2_0(active0, 0xe000000000L, active1, 0L);
+      case 111:
+         if ((active0 & 0x1000000L) != 0L)
+         {
+            jjmatchedKind = 24;
+            jjmatchedPos = 1;
+         }
+         return jjMoveStringLiteralDfa2_0(active0, 0x3000010302604000L, 
active1, 0L);
+      case 114:
+         return jjMoveStringLiteralDfa2_0(active0, 0xe00600000008000L, 
active1, 0L);
+      case 116:
+         return jjMoveStringLiteralDfa2_0(active0, 0x8004000000000000L, 
active1, 0L);
+      case 117:
+         return jjMoveStringLiteralDfa2_0(active0, 0x8880000000000L, active1, 
0L);
+      case 119:
+         return jjMoveStringLiteralDfa2_0(active0, 0x10000000000000L, active1, 
0L);
+      case 120:
+         return jjMoveStringLiteralDfa2_0(active0, 0x8000000L, active1, 0L);
+      case 121:
+         return jjMoveStringLiteralDfa2_0(active0, 0x20000000010000L, active1, 
0L);
+      case 124:
+         if ((active1 & 0x80000000L) != 0L)
+            return jjStopAtPos(1, 95);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(0, active0, active1);
+}
+private final int jjMoveStringLiteralDfa2_0(long old0, long active0, long 
old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(0, old0, old1); 
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(1, active0, active1);
+      return 2;
+   }
+   switch(curChar)
+   {
+      case 61:
+         if ((active1 & 0x40000000000000L) != 0L)
+            return jjStopAtPos(2, 118);
+         else if ((active1 & 0x80000000000000L) != 0L)
+            return jjStopAtPos(2, 119);
+         break;
+      case 62:
+         if ((active1 & 0x200000000000L) != 0L)
+         {
+            jjmatchedKind = 109;
+            jjmatchedPos = 2;
+         }
+         return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 
0x100000000000000L);
+      case 97:
+         return jjMoveStringLiteralDfa3_0(active0, 0x204000000180000L, 
active1, 0L);
+      case 98:
+         return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L, active1, 
0L);
+      case 99:
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L, active1, 
0L);
+      case 101:
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000L, active1, 0L);
+      case 102:
+         return jjMoveStringLiteralDfa3_0(active0, 0x800000L, active1, 0L);
+      case 105:
+         return jjMoveStringLiteralDfa3_0(active0, 0x5050200000000000L, 
active1, 0L);
+      case 108:
+         return jjMoveStringLiteralDfa3_0(active0, 0x2000080010000000L, 
active1, 0L);
+      case 110:
+         return jjMoveStringLiteralDfa3_0(active0, 0x20010060600000L, active1, 
0L);
+      case 111:
+         return jjMoveStringLiteralDfa3_0(active0, 0x2400080004000L, active1, 
0L);
+      case 112:
+         return jjMoveStringLiteralDfa3_0(active0, 0x8001800000000L, active1, 
0L);
+      case 114:
+         if ((active0 & 0x100000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 32, 32);
+         return jjMoveStringLiteralDfa3_0(active0, 0x8180000000000000L, 
active1, 0L);
+      case 115:
+         return jjMoveStringLiteralDfa3_0(active0, 0x2004022000L, active1, 0L);
+      case 116:
+         if ((active0 & 0x4000000000L) != 0L)
+         {
+            jjmatchedKind = 38;
+            jjmatchedPos = 2;
+         }
+         return jjMoveStringLiteralDfa3_0(active0, 0x1028208050000L, active1, 
0L);
+      case 117:
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000002000000L, 
active1, 0L);
+      case 119:
+         if ((active0 & 0x40000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 42, 32);
+         break;
+      case 121:
+         if ((active0 & 0x800000000000000L) != 0L)
+            return jjStartNfaWithStates_0(2, 59, 32);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(1, active0, active1);
+}
+private final int jjMoveStringLiteralDfa3_0(long old0, long active0, long 
old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(1, old0, old1); 
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(2, active0, active1);
+      return 3;
+   }
+   switch(curChar)
+   {
+      case 61:
+         if ((active1 & 0x100000000000000L) != 0L)
+            return jjStopAtPos(3, 120);
+         break;
+      case 97:
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000e0808000L, 
active1, 0L);
+      case 98:
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000000L, active1, 0L);
+      case 99:
+         return jjMoveStringLiteralDfa4_0(active0, 0x20000000040000L, active1, 
0L);
+      case 100:
+         if ((active0 & 0x1000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 60, 32);
+         break;
+      case 101:
+         if ((active0 & 0x10000L) != 0L)
+            return jjStartNfaWithStates_0(3, 16, 32);
+         else if ((active0 & 0x20000L) != 0L)
+            return jjStartNfaWithStates_0(3, 17, 32);
+         else if ((active0 & 0x4000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 26, 32);
+         else if ((active0 & 0x400000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 58, 32);
+         return jjMoveStringLiteralDfa4_0(active0, 0x8008008000000L, active1, 
0L);
+      case 103:
+         if ((active0 & 0x10000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 40, 32);
+         break;
+      case 105:
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000020000000000L, 
active1, 0L);
+      case 107:
+         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L, active1, 
0L);
+      case 108:
+         if ((active0 & 0x80000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 43, 32);
+         return jjMoveStringLiteralDfa4_0(active0, 0x4000800800004000L, 
active1, 0L);
+      case 110:
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000000L, 
active1, 0L);
+      case 111:
+         if ((active0 & 0x200000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 33, 32);
+         return jjMoveStringLiteralDfa4_0(active0, 0x180001000000000L, 
active1, 0L);
+      case 114:
+         if ((active0 & 0x80000L) != 0L)
+            return jjStartNfaWithStates_0(3, 19, 32);
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000000L, active1, 
0L);
+      case 115:
+         if ((active0 & 0x40000000000000L) != 0L)
+            return jjStartNfaWithStates_0(3, 54, 32);
+         return jjMoveStringLiteralDfa4_0(active0, 0x10300000L, active1, 0L);
+      case 116:
+         return jjMoveStringLiteralDfa4_0(active0, 0x14402000402000L, active1, 
0L);
+      case 117:
+         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L, active1, 
0L);
+      case 118:
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000000000L, active1, 
0L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(2, active0, active1);
+}
+private final int jjMoveStringLiteralDfa4_0(long old0, long active0, long 
old1, long active1)
+{
+   if (((active0 &= old0) | (active1 &= old1)) == 0L)
+      return jjStartNfa_0(2, old0, old1); 
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(3, active0, 0L);
+      return 4;
+   }
+   switch(curChar)
+   {
+      case 97:
+         return jjMoveStringLiteralDfa5_0(active0, 0x302000000000L);
+      case 99:
+         return jjMoveStringLiteralDfa5_0(active0, 0x8010000000000000L);
+      case 101:
+         if ((active0 & 0x10000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 28, 32);
+         else if ((active0 & 0x4000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 62, 32);
+         return jjMoveStringLiteralDfa5_0(active0, 0x400800004000L);
+      case 104:
+         if ((active0 & 0x40000L) != 0L)
+            return jjStartNfaWithStates_0(4, 18, 32);
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000000L);
+      case 105:
+         return jjMoveStringLiteralDfa5_0(active0, 0x4800000400000L);
+      case 107:
+         if ((active0 & 0x8000L) != 0L)
+            return jjStartNfaWithStates_0(4, 15, 32);
+         break;
+      case 108:
+         if ((active0 & 0x20000000L) != 0L)
+         {
+            jjmatchedKind = 29;
+            jjmatchedPos = 4;
+         }
+         return jjMoveStringLiteralDfa5_0(active0, 0x42000000L);
+      case 110:
+         return jjMoveStringLiteralDfa5_0(active0, 0x8000000L);
+      case 114:
+         if ((active0 & 0x8000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 51, 32);
+         return jjMoveStringLiteralDfa5_0(active0, 0x1009000002000L);
+      case 115:
+         if ((active0 & 0x100000L) != 0L)
+            return jjStartNfaWithStates_0(4, 20, 32);
+         return jjMoveStringLiteralDfa5_0(active0, 0x200000000000000L);
+      case 116:
+         if ((active0 & 0x200000L) != 0L)
+            return jjStartNfaWithStates_0(4, 21, 32);
+         else if ((active0 & 0x80000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 31, 32);
+         else if ((active0 & 0x2000000000000L) != 0L)
+            return jjStartNfaWithStates_0(4, 49, 32);
+         return jjMoveStringLiteralDfa5_0(active0, 0x2000000000000000L);
+      case 117:
+         return jjMoveStringLiteralDfa5_0(active0, 0x800000L);
+      case 118:
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L);
+      case 119:
+         if ((active0 & 0x80000000000000L) != 0L)
+         {
+            jjmatchedKind = 55;
+            jjmatchedPos = 4;
+         }
+         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000000L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(3, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(3, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(4, active0, 0L);
+      return 5;
+   }
+   switch(curChar)
+   {
+      case 97:
+         return jjMoveStringLiteralDfa6_0(active0, 0x6000L);
+      case 99:
+         if ((active0 & 0x800000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 47, 32);
+         else if ((active0 & 0x4000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 50, 32);
+         return jjMoveStringLiteralDfa6_0(active0, 0x400000000000L);
+      case 100:
+         return jjMoveStringLiteralDfa6_0(active0, 0x8000000L);
+      case 101:
+         if ((active0 & 0x2000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 25, 32);
+         else if ((active0 & 0x20000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 41, 32);
+         break;
+      case 102:
+         return jjMoveStringLiteralDfa6_0(active0, 0x8000000000L);
+      case 103:
+         return jjMoveStringLiteralDfa6_0(active0, 0x100000000000L);
+      case 104:
+         if ((active0 & 0x10000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 52, 32);
+         break;
+      case 105:
+         return jjMoveStringLiteralDfa6_0(active0, 0x2200000000000000L);
+      case 108:
+         return jjMoveStringLiteralDfa6_0(active0, 0x40800000L);
+      case 109:
+         return jjMoveStringLiteralDfa6_0(active0, 0x800000000L);
+      case 110:
+         if ((active0 & 0x1000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 48, 32);
+         return jjMoveStringLiteralDfa6_0(active0, 0x2000400000L);
+      case 114:
+         return jjMoveStringLiteralDfa6_0(active0, 0x20000000000000L);
+      case 115:
+         if ((active0 & 0x100000000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 56, 32);
+         break;
+      case 116:
+         if ((active0 & 0x1000000000L) != 0L)
+            return jjStartNfaWithStates_0(5, 36, 32);
+         return jjMoveStringLiteralDfa6_0(active0, 0x8000200000000000L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(4, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(4, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(5, active0, 0L);
+      return 6;
+   }
+   switch(curChar)
+   {
+      case 97:
+         return jjMoveStringLiteralDfa7_0(active0, 0x8000000000L);
+      case 99:
+         return jjMoveStringLiteralDfa7_0(active0, 0x2000002000L);
+      case 101:
+         if ((active0 & 0x100000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 44, 32);
+         else if ((active0 & 0x200000000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 45, 32);
+         return jjMoveStringLiteralDfa7_0(active0, 0x200000800000000L);
+      case 102:
+         return jjMoveStringLiteralDfa7_0(active0, 0x8000000000000000L);
+      case 108:
+         return jjMoveStringLiteralDfa7_0(active0, 0x2000000000000000L);
+      case 110:
+         if ((active0 & 0x4000L) != 0L)
+            return jjStartNfaWithStates_0(6, 14, 32);
+         break;
+      case 111:
+         return jjMoveStringLiteralDfa7_0(active0, 0x20000000000000L);
+      case 115:
+         if ((active0 & 0x8000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 27, 32);
+         break;
+      case 116:
+         if ((active0 & 0x800000L) != 0L)
+            return jjStartNfaWithStates_0(6, 23, 32);
+         return jjMoveStringLiteralDfa7_0(active0, 0x400000000000L);
+      case 117:
+         return jjMoveStringLiteralDfa7_0(active0, 0x400000L);
+      case 121:
+         if ((active0 & 0x40000000L) != 0L)
+            return jjStartNfaWithStates_0(6, 30, 32);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(5, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa7_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(5, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(6, active0, 0L);
+      return 7;
+   }
+   switch(curChar)
+   {
+      case 99:
+         return jjMoveStringLiteralDfa8_0(active0, 0x8000000000L);
+      case 101:
+         if ((active0 & 0x400000L) != 0L)
+            return jjStartNfaWithStates_0(7, 22, 32);
+         else if ((active0 & 0x2000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 61, 32);
+         return jjMoveStringLiteralDfa8_0(active0, 0x402000000000L);
+      case 110:
+         return jjMoveStringLiteralDfa8_0(active0, 0x220000800000000L);
+      case 112:
+         if ((active0 & 0x8000000000000000L) != 0L)
+            return jjStartNfaWithStates_0(7, 63, 32);
+         break;
+      case 116:
+         if ((active0 & 0x2000L) != 0L)
+            return jjStartNfaWithStates_0(7, 13, 32);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(6, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa8_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(6, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(7, active0, 0L);
+      return 8;
+   }
+   switch(curChar)
+   {
+      case 100:
+         if ((active0 & 0x400000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 46, 32);
+         break;
+      case 101:
+         if ((active0 & 0x8000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 39, 32);
+         break;
+      case 105:
+         return jjMoveStringLiteralDfa9_0(active0, 0x20000000000000L);
+      case 111:
+         return jjMoveStringLiteralDfa9_0(active0, 0x2000000000L);
+      case 116:
+         if ((active0 & 0x200000000000000L) != 0L)
+            return jjStartNfaWithStates_0(8, 57, 32);
+         return jjMoveStringLiteralDfa9_0(active0, 0x800000000L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(7, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa9_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(7, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(8, active0, 0L);
+      return 9;
+   }
+   switch(curChar)
+   {
+      case 102:
+         if ((active0 & 0x2000000000L) != 0L)
+            return jjStartNfaWithStates_0(9, 37, 32);
+         break;
+      case 115:
+         if ((active0 & 0x800000000L) != 0L)
+            return jjStartNfaWithStates_0(9, 35, 32);
+         break;
+      case 122:
+         return jjMoveStringLiteralDfa10_0(active0, 0x20000000000000L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(8, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa10_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(8, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(9, active0, 0L);
+      return 10;
+   }
+   switch(curChar)
+   {
+      case 101:
+         return jjMoveStringLiteralDfa11_0(active0, 0x20000000000000L);
+      default :
+         break;
+   }
+   return jjStartNfa_0(9, active0, 0L);
+}
+private final int jjMoveStringLiteralDfa11_0(long old0, long active0)
+{
+   if (((active0 &= old0)) == 0L)
+      return jjStartNfa_0(9, old0, 0L);
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      jjStopStringLiteralDfa_0(10, active0, 0L);
+      return 11;
+   }
+   switch(curChar)
+   {
+      case 100:
+         if ((active0 & 0x20000000000000L) != 0L)
+            return jjStartNfaWithStates_0(11, 53, 32);
+         break;
+      default :
+         break;
+   }
+   return jjStartNfa_0(10, active0, 0L);
+}
+private final void jjCheckNAdd(int state)
+{
+   if (jjrounds[state] != jjround)
+   {
+      jjstateSet[jjnewStateCnt++] = state;
+      jjrounds[state] = jjround;
+   }
+}
+private final void jjAddStates(int start, int end)
+{
+   do {
+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+   } while (start++ != end);
+}
+private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+   jjCheckNAdd(state1);
+   jjCheckNAdd(state2);
+}
+private final void jjCheckNAddStates(int start, int end)
+{
+   do {
+      jjCheckNAdd(jjnextStates[start]);
+   } while (start++ != end);
+}
+private final void jjCheckNAddStates(int start)
+{
+   jjCheckNAdd(jjnextStates[start]);
+   jjCheckNAdd(jjnextStates[start + 1]);
+}
+static final long[] jjbitVec0 = {
+   0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 
0xffffffffffffffffL
+};
+static final long[] jjbitVec2 = {
+   0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec3 = {
+   0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L
+};
+static final long[] jjbitVec4 = {
+   0x0L, 0x0L, 0x0L, 0xff7fffffff7fffffL
+};
+static final long[] jjbitVec5 = {
+   0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static final long[] jjbitVec6 = {
+   0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffL, 0x0L
+};
+static final long[] jjbitVec7 = {
+   0xffffffffffffffffL, 0xffffffffffffffffL, 0x0L, 0x0L
+};
+static final long[] jjbitVec8 = {
+   0x3fffffffffffL, 0x0L, 0x0L, 0x0L
+};
+private final int jjMoveNfa_0(int startState, int curPos)
+{
+   int[] nextStates;
+   int startsAt = 0;
+   jjnewStateCnt = 52;
+   int i = 1;
+   jjstateSet[0] = startState;
+   int j, kind = 0x7fffffff;
+   for (;;)
+   {
+      if (++jjround == 0x7fffffff)
+         ReInitRounds();
+      if (curChar < 64)
+      {
+         long l = 1L << curChar;
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 3:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(0, 6);
+                  else if (curChar == 36)
+                  {
+                     if (kind > 72)
+                        kind = 72;
+                     jjCheckNAdd(32);
+                  }
+                  else if (curChar == 34)
+                     jjCheckNAddStates(7, 9);
+                  else if (curChar == 39)
+                     jjAddStates(10, 11);
+                  else if (curChar == 46)
+                     jjCheckNAdd(8);
+                  else if (curChar == 47)
+                     jjstateSet[jjnewStateCnt++] = 2;
+                  if ((0x3fe000000000000L & l) != 0L)
+                  {
+                     if (kind > 64)
+                        kind = 64;
+                     jjCheckNAddTwoStates(5, 6);
+                  }
+                  else if (curChar == 48)
+                  {
+                     if (kind > 64)
+                        kind = 64;
+                     jjCheckNAddStates(12, 14);
+                  }
+                  break;
+               case 0:
+                  if (curChar == 42)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
+               case 1:
+                  if ((0xffff7fffffffffffL & l) != 0L && kind > 7)
+                     kind = 7;
+                  break;
+               case 2:
+                  if (curChar == 42)
+                     jjstateSet[jjnewStateCnt++] = 0;
+                  break;
+               case 4:
+                  if ((0x3fe000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddTwoStates(5, 6);
+                  break;
+               case 5:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddTwoStates(5, 6);
+                  break;
+               case 7:
+                  if (curChar == 46)
+                     jjCheckNAdd(8);
+                  break;
+               case 8:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 68)
+                     kind = 68;
+                  jjCheckNAddStates(15, 17);
+                  break;
+               case 10:
+                  if ((0x280000000000L & l) != 0L)
+                     jjCheckNAdd(11);
+                  break;
+               case 11:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 68)
+                     kind = 68;
+                  jjCheckNAddTwoStates(11, 12);
+                  break;
+               case 13:
+                  if (curChar == 39)
+                     jjAddStates(10, 11);
+                  break;
+               case 14:
+                  if ((0xffffff7fffffdbffL & l) != 0L)
+                     jjCheckNAdd(15);
+                  break;
+               case 15:
+                  if (curChar == 39 && kind > 70)
+                     kind = 70;
+                  break;
+               case 17:
+                  if ((0x8400000000L & l) != 0L)
+                     jjCheckNAdd(15);
+                  break;
+               case 18:
+                  if ((0xff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(19, 15);
+                  break;
+               case 19:
+                  if ((0xff000000000000L & l) != 0L)
+                     jjCheckNAdd(15);
+                  break;
+               case 20:
+                  if ((0xf000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 21;
+                  break;
+               case 21:
+                  if ((0xff000000000000L & l) != 0L)
+                     jjCheckNAdd(19);
+                  break;
+               case 22:
+                  if (curChar == 34)
+                     jjCheckNAddStates(7, 9);
+                  break;
+               case 23:
+                  if ((0xfffffffbffffdbffL & l) != 0L)
+                     jjCheckNAddStates(7, 9);
+                  break;
+               case 25:
+                  if ((0x8400000000L & l) != 0L)
+                     jjCheckNAddStates(7, 9);
+                  break;
+               case 26:
+                  if (curChar == 34 && kind > 71)
+                     kind = 71;
+                  break;
+               case 27:
+                  if ((0xff000000000000L & l) != 0L)
+                     jjCheckNAddStates(18, 21);
+                  break;
+               case 28:
+                  if ((0xff000000000000L & l) != 0L)
+                     jjCheckNAddStates(7, 9);
+                  break;
+               case 29:
+                  if ((0xf000000000000L & l) != 0L)
+                     jjstateSet[jjnewStateCnt++] = 30;
+                  break;
+               case 30:
+                  if ((0xff000000000000L & l) != 0L)
+                     jjCheckNAdd(28);
+                  break;
+               case 31:
+                  if (curChar != 36)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAdd(32);
+                  break;
+               case 32:
+                  if ((0x3ff001000000000L & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAdd(32);
+                  break;
+               case 33:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(0, 6);
+                  break;
+               case 34:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(34, 35);
+                  break;
+               case 35:
+                  if (curChar != 46)
+                     break;
+                  if (kind > 68)
+                     kind = 68;
+                  jjCheckNAddStates(22, 24);
+                  break;
+               case 36:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 68)
+                     kind = 68;
+                  jjCheckNAddStates(22, 24);
+                  break;
+               case 38:
+                  if ((0x280000000000L & l) != 0L)
+                     jjCheckNAdd(39);
+                  break;
+               case 39:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 68)
+                     kind = 68;
+                  jjCheckNAddTwoStates(39, 12);
+                  break;
+               case 40:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(40, 41);
+                  break;
+               case 42:
+                  if ((0x280000000000L & l) != 0L)
+                     jjCheckNAdd(43);
+                  break;
+               case 43:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 68)
+                     kind = 68;
+                  jjCheckNAddTwoStates(43, 12);
+                  break;
+               case 44:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddStates(25, 27);
+                  break;
+               case 46:
+                  if ((0x280000000000L & l) != 0L)
+                     jjCheckNAdd(47);
+                  break;
+               case 47:
+                  if ((0x3ff000000000000L & l) != 0L)
+                     jjCheckNAddTwoStates(47, 12);
+                  break;
+               case 48:
+                  if (curChar != 48)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddStates(12, 14);
+                  break;
+               case 50:
+                  if ((0x3ff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddTwoStates(50, 6);
+                  break;
+               case 51:
+                  if ((0xff000000000000L & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddTwoStates(51, 6);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else if (curChar < 128)
+      {
+         long l = 1L << (curChar & 077);
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 3:
+               case 32:
+                  if ((0x7fffffe87fffffeL & l) == 0L)
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAdd(32);
+                  break;
+               case 1:
+                  if (kind > 7)
+                     kind = 7;
+                  break;
+               case 6:
+                  if ((0x100000001000L & l) != 0L && kind > 64)
+                     kind = 64;
+                  break;
+               case 9:
+                  if ((0x2000000020L & l) != 0L)
+                     jjAddStates(28, 29);
+                  break;
+               case 12:
+                  if ((0x5000000050L & l) != 0L && kind > 68)
+                     kind = 68;
+                  break;
+               case 14:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAdd(15);
+                  break;
+               case 16:
+                  if (curChar == 92)
+                     jjAddStates(30, 32);
+                  break;
+               case 17:
+                  if ((0x14404410000000L & l) != 0L)
+                     jjCheckNAdd(15);
+                  break;
+               case 23:
+                  if ((0xffffffffefffffffL & l) != 0L)
+                     jjCheckNAddStates(7, 9);
+                  break;
+               case 24:
+                  if (curChar == 92)
+                     jjAddStates(33, 35);
+                  break;
+               case 25:
+                  if ((0x14404410000000L & l) != 0L)
+                     jjCheckNAddStates(7, 9);
+                  break;
+               case 37:
+                  if ((0x2000000020L & l) != 0L)
+                     jjAddStates(36, 37);
+                  break;
+               case 41:
+                  if ((0x2000000020L & l) != 0L)
+                     jjAddStates(38, 39);
+                  break;
+               case 45:
+                  if ((0x2000000020L & l) != 0L)
+                     jjAddStates(40, 41);
+                  break;
+               case 49:
+                  if ((0x100000001000000L & l) != 0L)
+                     jjCheckNAdd(50);
+                  break;
+               case 50:
+                  if ((0x7e0000007eL & l) == 0L)
+                     break;
+                  if (kind > 64)
+                     kind = 64;
+                  jjCheckNAddTwoStates(50, 6);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else
+      {
+         int hiByte = (int)(curChar >> 8);
+         int i1 = hiByte >> 6;
+         long l1 = 1L << (hiByte & 077);
+         int i2 = (curChar & 0xff) >> 6;
+         long l2 = 1L << (curChar & 077);
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 3:
+               case 32:
+                  if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
+                     break;
+                  if (kind > 72)
+                     kind = 72;
+                  jjCheckNAdd(32);
+                  break;
+               case 1:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 7)
+                     kind = 7;
+                  break;
+               case 14:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjstateSet[jjnewStateCnt++] = 15;
+                  break;
+               case 23:
+                  if (jjCanMove_0(hiByte, i1, i2, l1, l2))
+                     jjAddStates(7, 9);
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      if (kind != 0x7fffffff)
+      {
+         jjmatchedKind = kind;
+         jjmatchedPos = curPos;
+         kind = 0x7fffffff;
+      }
+      ++curPos;
+      if ((i = jjnewStateCnt) == (startsAt = 52 - (jjnewStateCnt = startsAt)))
+         return curPos;
+      try { curChar = input_stream.readChar(); }
+      catch(java.io.IOException e) { return curPos; }
+   }
+}
+private final int jjMoveStringLiteralDfa0_3()
+{
+   switch(curChar)
+   {
+      case 42:
+         return jjMoveStringLiteralDfa1_3(0x800L);
+      default :
+         return 1;
+   }
+}
+private final int jjMoveStringLiteralDfa1_3(long active0)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      return 1;
+   }
+   switch(curChar)
+   {
+      case 47:
+         if ((active0 & 0x800L) != 0L)
+            return jjStopAtPos(1, 11);
+         break;
+      default :
+         return 2;
+   }
+   return 2;
+}
+private final int jjMoveStringLiteralDfa0_1()
+{
+   return jjMoveNfa_1(0, 0);
+}
+private final int jjMoveNfa_1(int startState, int curPos)
+{
+   int[] nextStates;
+   int startsAt = 0;
+   jjnewStateCnt = 3;
+   int i = 1;
+   jjstateSet[0] = startState;
+   int j, kind = 0x7fffffff;
+   for (;;)
+   {
+      if (++jjround == 0x7fffffff)
+         ReInitRounds();
+      if (curChar < 64)
+      {
+         long l = 1L << curChar;
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               case 0:
+                  if ((0x2400L & l) != 0L)
+                  {
+                     if (kind > 9)
+                        kind = 9;
+                  }
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
+               case 1:
+                  if (curChar == 10 && kind > 9)
+                     kind = 9;
+                  break;
+               case 2:
+                  if (curChar == 13)
+                     jjstateSet[jjnewStateCnt++] = 1;
+                  break;
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else if (curChar < 128)
+      {
+         long l = 1L << (curChar & 077);
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      else
+      {
+         int hiByte = (int)(curChar >> 8);
+         int i1 = hiByte >> 6;
+         long l1 = 1L << (hiByte & 077);
+         int i2 = (curChar & 0xff) >> 6;
+         long l2 = 1L << (curChar & 077);
+         MatchLoop: do
+         {
+            switch(jjstateSet[--i])
+            {
+               default : break;
+            }
+         } while(i != startsAt);
+      }
+      if (kind != 0x7fffffff)
+      {
+         jjmatchedKind = kind;
+         jjmatchedPos = curPos;
+         kind = 0x7fffffff;
+      }
+      ++curPos;
+      if ((i = jjnewStateCnt) == (startsAt = 3 - (jjnewStateCnt = startsAt)))
+         return curPos;
+      try { curChar = input_stream.readChar(); }
+      catch(java.io.IOException e) { return curPos; }
+   }
+}
+private final int jjMoveStringLiteralDfa0_2()
+{
+   switch(curChar)
+   {
+      case 42:
+         return jjMoveStringLiteralDfa1_2(0x400L);
+      default :
+         return 1;
+   }
+}
+private final int jjMoveStringLiteralDfa1_2(long active0)
+{
+   try { curChar = input_stream.readChar(); }
+   catch(java.io.IOException e) {
+      return 1;
+   }
+   switch(curChar)
+   {
+      case 47:
+         if ((active0 & 0x400L) != 0L)
+            return jjStopAtPos(1, 10);
+         break;
+      default :
+         return 2;
+   }
+   return 2;
+}
+static final int[] jjnextStates = {
+   34, 35, 40, 41, 44, 45, 12, 23, 24, 26, 14, 16, 49, 51, 6, 8, 
+   9, 12, 23, 24, 28, 26, 36, 37, 12, 44, 45, 12, 10, 11, 17, 18, 
+   20, 25, 27, 29, 38, 39, 42, 43, 46, 47, 
+};
+private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, 
long l2)
+{
+   switch(hiByte)
+   {
+      case 0:
+         return ((jjbitVec2[i2] & l2) != 0L);
+      default : 
+         if ((jjbitVec0[i1] & l1) != 0L)
+            return true;
+         return false;
+   }
+}
+private static final boolean jjCanMove_1(int hiByte, int i1, int i2, long l1, 
long l2)
+{
+   switch(hiByte)
+   {
+      case 0:
+         return ((jjbitVec4[i2] & l2) != 0L);
+      case 48:
+         return ((jjbitVec5[i2] & l2) != 0L);
+      case 49:
+         return ((jjbitVec6[i2] & l2) != 0L);
+      case 51:
+         return ((jjbitVec7[i2] & l2) != 0L);
+      case 61:
+         return ((jjbitVec8[i2] & l2) != 0L);
+      default : 
+         if ((jjbitVec3[i1] & l1) != 0L)
+            return true;
+         return false;
+   }
+}
+public static final String[] jjstrLiteralImages = {
+"", null, null, null, null, null, null, null, null, null, null, null, null, 
+"\141\142\163\164\162\141\143\164", "\142\157\157\154\145\141\156", 
"\142\162\145\141\153", "\142\171\164\145", 
+"\143\141\163\145", "\143\141\164\143\150", "\143\150\141\162", 
"\143\154\141\163\163", 
+"\143\157\156\163\164", "\143\157\156\164\151\156\165\145", 
"\144\145\146\141\165\154\164", 
+"\144\157", "\144\157\165\142\154\145", "\145\154\163\145", 
+"\145\170\164\145\156\144\163", "\146\141\154\163\145", 
"\146\151\156\141\154", 
+"\146\151\156\141\154\154\171", "\146\154\157\141\164", "\146\157\162", 
"\147\157\164\157", "\151\146", 
+"\151\155\160\154\145\155\145\156\164\163", "\151\155\160\157\162\164", 
"\151\156\163\164\141\156\143\145\157\146", 
+"\151\156\164", "\151\156\164\145\162\146\141\143\145", "\154\157\156\147", 
+"\156\141\164\151\166\145", "\156\145\167", "\156\165\154\154", 
"\160\141\143\153\141\147\145", 
+"\160\162\151\166\141\164\145", "\160\162\157\164\145\143\164\145\144", 
"\160\165\142\154\151\143", 
+"\162\145\164\165\162\156", "\163\150\157\162\164", 
"\163\164\141\164\151\143", "\163\165\160\145\162", 
+"\163\167\151\164\143\150", 
"\163\171\156\143\150\162\157\156\151\172\145\144", "\164\150\151\163", 
+"\164\150\162\157\167", "\164\150\162\157\167\163", 
"\164\162\141\156\163\151\145\156\164", 
+"\164\162\165\145", "\164\162\171", "\166\157\151\144", 
"\166\157\154\141\164\151\154\145", 
+"\167\150\151\154\145", "\163\164\162\151\143\164\146\160", null, null, null, 
null, null, null, null, 
+null, null, null, null, "\50", "\51", "\173", "\175", "\133", "\135", "\73", 
"\54", 
+"\56", "\75", "\76", "\74", "\41", "\176", "\77", "\72", "\75\75", "\74\75", 
+"\76\75", "\41\75", "\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55", 
"\52", 
+"\57", "\46", "\174", "\136", "\45", "\74\74", "\76\76", "\76\76\76", 
"\53\75", 
+"\55\75", "\52\75", "\57\75", "\46\75", "\174\75", "\136\75", "\45\75", 
"\74\74\75", 
+"\76\76\75", "\76\76\76\75", };
+public static final String[] lexStateNames = {
+   "DEFAULT", 
+   "IN_SINGLE_LINE_COMMENT", 
+   "IN_FORMAL_COMMENT", 
+   "IN_MULTI_LINE_COMMENT", 
+};
+public static final int[] jjnewLexState = {
+   -1, -1, -1, -1, -1, -1, 1, 2, 3, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, -1, -1, -1, -1, 
+   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
-1, -1, 
+};
+static final long[] jjtoToken = {
+   0xffffffffffffe001L, 0x1fffffffffff9d1L, 
+};
+static final long[] jjtoSkip = {
+   0xe3eL, 0x0L, 
+};
+static final long[] jjtoSpecial = {
+   0xe00L, 0x0L, 
+};
+static final long[] jjtoMore = {
+   0x11c0L, 0x0L, 
+};
+protected JavaCharStream input_stream;
+private final int[] jjrounds = new int[52];
+private final int[] jjstateSet = new int[104];
+StringBuffer image;
+int jjimageLen;
+int lengthOfMatch;
+protected char curChar;
+public JavaParserTokenManager(JavaCharStream stream)
+{
+   if (JavaCharStream.staticFlag)
+      throw new Error("ERROR: Cannot use a static CharStream class with a 
non-static lexical analyzer.");
+   input_stream = stream;
+}
+public JavaParserTokenManager(JavaCharStream stream, int lexState)
+{
+   this(stream);
+   SwitchTo(lexState);
+}
+public void ReInit(JavaCharStream stream)
+{
+   jjmatchedPos = jjnewStateCnt = 0;
+   curLexState = defaultLexState;
+   input_stream = stream;
+   ReInitRounds();
+}
+private final void ReInitRounds()
+{
+   int i;
+   jjround = 0x80000001;
+   for (i = 52; i-- > 0;)
+      jjrounds[i] = 0x80000000;
+}
+public void ReInit(JavaCharStream stream, int lexState)
+{
+   ReInit(stream);
+   SwitchTo(lexState);
+}
+public void SwitchTo(int lexState)
+{
+   if (lexState >= 4 || lexState < 0)
+      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + 
lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+   else
+      curLexState = lexState;
+}
+
+protected Token jjFillToken()
+{
+   Token t = Token.newToken(jjmatchedKind);
+   t.kind = jjmatchedKind;
+   String im = jjstrLiteralImages[jjmatchedKind];
+   t.image = (im == null) ? input_stream.GetImage() : im;
+   t.beginLine = input_stream.getBeginLine();
+   t.beginColumn = input_stream.getBeginColumn();
+   t.endLine = input_stream.getEndLine();
+   t.endColumn = input_stream.getEndColumn();
+   return t;
+}
+
+int curLexState = 0;
+int defaultLexState = 0;
+int jjnewStateCnt;
+int jjround;
+int jjmatchedPos;
+int jjmatchedKind;
+
+public Token getNextToken() 
+{
+  int kind;
+  Token specialToken = null;
+  Token matchedToken;
+  int curPos = 0;
+
+  EOFLoop :
+  for (;;)
+  {   
+   try   
+   {     
+      curChar = input_stream.BeginToken();
+   }     
+   catch(java.io.IOException e)
+   {        
+      jjmatchedKind = 0;
+      matchedToken = jjFillToken();
+      matchedToken.specialToken = specialToken;
+      return matchedToken;
+   }
+   image = null;
+   jjimageLen = 0;
+
+   for (;;)
+   {
+     switch(curLexState)
+     {
+       case 0:
+         try { input_stream.backup(0);
+            while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
+               curChar = input_stream.BeginToken();
+         }
+         catch (java.io.IOException e1) { continue EOFLoop; }
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_0();
+         break;
+       case 1:
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_1();
+         if (jjmatchedPos == 0 && jjmatchedKind > 12)
+         {
+            jjmatchedKind = 12;
+         }
+         break;
+       case 2:
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_2();
+         if (jjmatchedPos == 0 && jjmatchedKind > 12)
+         {
+            jjmatchedKind = 12;
+         }
+         break;
+       case 3:
+         jjmatchedKind = 0x7fffffff;
+         jjmatchedPos = 0;
+         curPos = jjMoveStringLiteralDfa0_3();
+         if (jjmatchedPos == 0 && jjmatchedKind > 12)
+         {
+            jjmatchedKind = 12;
+         }
+         break;
+     }
+     if (jjmatchedKind != 0x7fffffff)
+     {
+        if (jjmatchedPos + 1 < curPos)
+           input_stream.backup(curPos - jjmatchedPos - 1);
+        if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 
0L)
+        {
+           matchedToken = jjFillToken();
+           matchedToken.specialToken = specialToken;
+       if (jjnewLexState[jjmatchedKind] != -1)
+         curLexState = jjnewLexState[jjmatchedKind];
+           return matchedToken;
+        }
+        else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 
077))) != 0L)
+        {
+           if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 
077))) != 0L)
+           {
+              matchedToken = jjFillToken();
+              if (specialToken == null)
+                 specialToken = matchedToken;
+              else
+              {
+                 matchedToken.specialToken = specialToken;
+                 specialToken = (specialToken.next = matchedToken);
+              }
+              SkipLexicalActions(matchedToken);
+           }
+           else 
+              SkipLexicalActions(null);
+         if (jjnewLexState[jjmatchedKind] != -1)
+           curLexState = jjnewLexState[jjmatchedKind];
+           continue EOFLoop;
+        }
+        MoreLexicalActions();
+      if (jjnewLexState[jjmatchedKind] != -1)
+        curLexState = jjnewLexState[jjmatchedKind];
+        curPos = 0;
+        jjmatchedKind = 0x7fffffff;
+        try {
+           curChar = input_stream.readChar();
+           continue;
+        }
+        catch (java.io.IOException e1) { }
+     }
+     int error_line = input_stream.getEndLine();
+     int error_column = input_stream.getEndColumn();
+     String error_after = null;
+     boolean EOFSeen = false;
+     try { input_stream.readChar(); input_stream.backup(1); }
+     catch (java.io.IOException e1) {
+        EOFSeen = true;
+        error_after = curPos <= 1 ? "" : input_stream.GetImage();
+        if (curChar == '\n' || curChar == '\r') {
+           error_line++;
+           error_column = 0;
+        }
+        else
+           error_column++;
+     }
+     if (!EOFSeen) {
+        input_stream.backup(1);
+        error_after = curPos <= 1 ? "" : input_stream.GetImage();
+     }
+     throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, 
error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+   }
+  }
+}
+
+void SkipLexicalActions(Token matchedToken)
+{
+   switch(jjmatchedKind)
+   {
+      default :
+         break;
+   }
+}
+void MoreLexicalActions()
+{
+   jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+   switch(jjmatchedKind)
+   {
+      case 7 :
+         if (image == null)
+            image = new StringBuffer();
+         image.append(input_stream.GetSuffix(jjimageLen));
+         jjimageLen = 0;
+         input_stream.backup(1);
+         break;
+      default : 
+         break;
+   }
+}
+}

Added: freeway/src/org/gnu/freeway/support/javaparser/LabeledStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/LabeledStatement.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/LabeledStatement.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> &lt;IDENTIFIER&gt;
+ * f1 -> ":"
+ * f2 -> Statement()
+ * </PRE>
+ */
+public class LabeledStatement implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public Statement f2;
+
+   public LabeledStatement(NodeToken n0, NodeToken n1, Statement n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public LabeledStatement(NodeToken n0, Statement n1) {
+      f0 = n0;
+      f1 = new NodeToken(":");
+      f2 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Literal.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Literal.java 2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Literal.java 2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,33 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> &lt;INTEGER_LITERAL&gt;
+ *       | &lt;FLOATING_POINT_LITERAL&gt;
+ *       | &lt;CHARACTER_LITERAL&gt;
+ *       | &lt;STRING_LITERAL&gt;
+ *       | BooleanLiteral()
+ *       | NullLiteral()
+ * </PRE>
+ */
+public class Literal implements Node {
+   public NodeChoice f0;
+
+   public Literal(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/LocalVariableDeclaration.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/LocalVariableDeclaration.java    
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/LocalVariableDeclaration.java    
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,37 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> [ "final" ]
+ * f1 -> Type()
+ * f2 -> VariableDeclarator()
+ * f3 -> ( "," VariableDeclarator() )*
+ * </PRE>
+ */
+public class LocalVariableDeclaration implements Node {
+   public NodeOptional f0;
+   public Type f1;
+   public VariableDeclarator f2;
+   public NodeListOptional f3;
+
+   public LocalVariableDeclaration(NodeOptional n0, Type n1, 
VariableDeclarator n2, NodeListOptional n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/MethodDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/MethodDeclaration.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/MethodDeclaration.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,43 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+ * f1 -> ResultType()
+ * f2 -> MethodDeclarator()
+ * f3 -> [ "throws" NameList() ]
+ * f4 -> ( Block() | ";" )
+ * f5 -> ( ";" )?
+ * </PRE>
+ */
+public class MethodDeclaration implements Node {
+   public NodeListOptional f0;
+   public ResultType f1;
+   public MethodDeclarator f2;
+   public NodeOptional f3;
+   public NodeChoice f4;
+   public NodeOptional f5;
+
+   public MethodDeclaration(NodeListOptional n0, ResultType n1, 
MethodDeclarator n2, NodeOptional n3, NodeChoice n4, NodeOptional n5) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarationLookahead.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarationLookahead.java  
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarationLookahead.java  
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,44 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+ * f1 -> ResultType()
+ * f2 -> &lt;IDENTIFIER&gt;
+ * f3 -> "("
+ * </PRE>
+ */
+public class MethodDeclarationLookahead implements Node {
+   public NodeListOptional f0;
+   public ResultType f1;
+   public NodeToken f2;
+   public NodeToken f3;
+
+   public MethodDeclarationLookahead(NodeListOptional n0, ResultType n1, 
NodeToken n2, NodeToken n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+   }
+
+   public MethodDeclarationLookahead(NodeListOptional n0, ResultType n1, 
NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = new NodeToken("(");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarator.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarator.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/MethodDeclarator.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,34 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> &lt;IDENTIFIER&gt;
+ * f1 -> FormalParameters()
+ * f2 -> ( "[" "]" )*
+ * </PRE>
+ */
+public class MethodDeclarator implements Node {
+   public NodeToken f0;
+   public FormalParameters f1;
+   public NodeListOptional f2;
+
+   public MethodDeclarator(NodeToken n0, FormalParameters n1, NodeListOptional 
n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/MultiplicativeExpression.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/MultiplicativeExpression.java    
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/MultiplicativeExpression.java    
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> UnaryExpression()
+ * f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
+ * </PRE>
+ */
+public class MultiplicativeExpression implements Node {
+   public UnaryExpression f0;
+   public NodeListOptional f1;
+
+   public MultiplicativeExpression(UnaryExpression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Name.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Name.java    2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Name.java    2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> &lt;IDENTIFIER&gt;
+ * f1 -> ( "." &lt;IDENTIFIER&gt; )*
+ * </PRE>
+ */
+public class Name implements Node {
+   public NodeToken f0;
+   public NodeListOptional f1;
+
+   public Name(NodeToken n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NameList.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NameList.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NameList.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> Name()
+ * f1 -> ( "," Name() )*
+ * </PRE>
+ */
+public class NameList implements Node {
+   public Name f0;
+   public NodeListOptional f1;
+
+   public NameList(Name n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/NestedClassDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NestedClassDeclaration.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NestedClassDeclaration.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,34 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+ * f1 -> UnmodifiedClassDeclaration()
+ * f2 -> ( ";" )?
+ * </PRE>
+ */
+public class NestedClassDeclaration implements Node {
+   public NodeListOptional f0;
+   public UnmodifiedClassDeclaration f1;
+   public NodeOptional f2;
+
+   public NestedClassDeclaration(NodeListOptional n0, 
UnmodifiedClassDeclaration n1, NodeOptional n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/NestedInterfaceDeclaration.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/NestedInterfaceDeclaration.java  
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/NestedInterfaceDeclaration.java  
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+ * f1 -> UnmodifiedInterfaceDeclaration()
+ * </PRE>
+ */
+public class NestedInterfaceDeclaration implements Node {
+   public NodeListOptional f0;
+   public UnmodifiedInterfaceDeclaration f1;
+
+   public NestedInterfaceDeclaration(NodeListOptional n0, 
UnmodifiedInterfaceDeclaration n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Node.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Node.java    2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Node.java    2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,16 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * The interface which all syntax tree classes must implement.
+ */
+public interface Node extends java.io.Serializable {
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v);
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu);
+
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeChoice.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeChoice.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeChoice.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Represents a grammar choice, e.g. ( A | B )
+ */
+public class NodeChoice implements Node {
+   public NodeChoice(Node node) {
+      this(node, -1);
+   }
+
+   public NodeChoice(Node node, int whichChoice) {
+      choice = node;
+      which = whichChoice;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      choice.accept(v);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return choice.accept(v,argu);
+   }
+
+   public Node choice;
+   public int which;
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeList.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeList.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeList.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,39 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+import java.util.*;
+
+/**
+ * Represents a grammar list, e.g. ( A )+
+ */
+public class NodeList implements NodeListInterface {
+   public NodeList() {
+      nodes = new Vector();
+   }
+
+   public NodeList(Node firstNode) {
+      nodes = new Vector();
+      addNode(firstNode);
+   }
+
+   public void addNode(Node n) {
+      nodes.addElement(n);
+   }
+
+   public Enumeration elements() { return nodes.elements(); }
+   public Node elementAt(int i)  { return (Node)nodes.elementAt(i); }
+   public int size()             { return nodes.size(); }
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+
+   public Vector nodes;
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeListInterface.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeListInterface.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeListInterface.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,18 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * The interface which NodeList, NodeListOptional, and NodeSequence
+ * implement.
+ */
+public interface NodeListInterface extends Node {
+   public void addNode(Node n);
+   public Node elementAt(int i);
+   public java.util.Enumeration elements();
+   public int size();
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeListOptional.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeListOptional.java        
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeListOptional.java        
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+import java.util.*;
+
+/**
+ * Represents an optional grammar list, e.g. ( A )*
+ */
+public class NodeListOptional implements NodeListInterface {
+   public NodeListOptional() {
+      nodes = new Vector();
+   }
+
+   public NodeListOptional(Node firstNode) {
+      nodes = new Vector();
+      addNode(firstNode);
+   }
+
+   public void addNode(Node n) {
+      nodes.addElement(n);
+   }
+
+   public Enumeration elements() { return nodes.elements(); }
+   public Node elementAt(int i)  { return (Node)nodes.elementAt(i); }
+   public int size()             { return nodes.size(); }
+   public boolean present()      { return nodes.size() != 0; }
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+
+   public Vector nodes;
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeOptional.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeOptional.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeOptional.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,36 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Represents an grammar optional node, e.g. ( A )? or [ A ]
+ */
+public class NodeOptional implements Node {
+   public NodeOptional() {
+      node = null;
+   }
+
+   public NodeOptional(Node n) {
+      addNode(n);
+   }
+
+   public void addNode(Node n)  {
+      if ( node != null)                // Oh oh!
+         throw new Error("Attempt to set optional node twice");
+
+      node = n;
+   }
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+   public boolean present()   { return node != null; }
+
+   public Node node;
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeSequence.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeSequence.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeSequence.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+import java.util.*;
+
+/**
+ * Represents a sequence of nodes nested within a choice, list,
+ * optional list, or optional, e.g. ( A B )+ or [ C D E ]
+ */
+public class NodeSequence implements NodeListInterface {
+   public NodeSequence(int n) {
+      nodes = new Vector(n);
+   }
+
+   public NodeSequence(Node firstNode) {
+      nodes = new Vector();
+      addNode(firstNode);
+   }
+
+   public void addNode(Node n) {
+      nodes.addElement(n);
+   }
+
+   public Node elementAt(int i)  { return (Node)nodes.elementAt(i); }
+   public Enumeration elements() { return nodes.elements(); }
+   public int size()             { return nodes.size(); }
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+
+   public Vector nodes;
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NodeToken.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NodeToken.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NodeToken.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,82 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+import java.util.*;
+/**
+ * Represents a single token in the grammar.  If the "-tk" option
+ * is used, also contains a Vector of preceding special tokens.
+ */
+public class NodeToken implements Node {
+   public NodeToken(String s) {
+      this(s, -1, -1, -1, -1, -1);    }
+
+   public NodeToken(String s, int kind, int beginLine, int beginColumn, int 
endLine, int endColumn) {
+      tokenImage = s;
+      specialTokens = null;
+      this.kind = kind;
+      this.beginLine = beginLine;
+      this.beginColumn = beginColumn;
+      this.endLine = endLine;
+      this.endColumn = endColumn;
+   }
+
+   public NodeToken getSpecialAt(int i) {
+      if ( specialTokens == null )
+         throw new NoSuchElementException("No specials in token");
+      return (NodeToken)specialTokens.elementAt(i);
+   }
+
+   public int numSpecials() {
+      if ( specialTokens == null ) return 0;
+      return specialTokens.size();
+   }
+
+   public void addSpecial(NodeToken s) {
+      if ( specialTokens == null ) specialTokens = new Vector();
+      specialTokens.addElement(s);
+   }
+
+   public void trimSpecials() {
+      if ( specialTokens == null ) return;
+      specialTokens.trimToSize();
+   }
+
+   public String toString()     { return tokenImage; }
+
+   public String withSpecials() {
+      if ( specialTokens == null )
+          return tokenImage;
+
+       StringBuffer buf = new StringBuffer();
+
+       for ( Enumeration e = specialTokens.elements(); e.hasMoreElements(); )
+          buf.append(e.nextElement().toString());
+
+       buf.append(tokenImage);
+       return buf.toString();
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+
+   public String tokenImage;
+
+   // Stores a list of NodeTokens
+   public Vector specialTokens;
+
+   // -1 for these ints means no position info is available.
+   public int beginLine, beginColumn, endLine, endColumn;
+
+   // Equal to the JavaCC token "kind" integer.
+   // -1 if not available.
+   public int kind;
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/NullLiteral.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/NullLiteral.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/NullLiteral.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,32 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "null"
+ * </PRE>
+ */
+public class NullLiteral implements Node {
+   public NodeToken f0;
+
+   public NullLiteral(NodeToken n0) {
+      f0 = n0;
+   }
+
+   public NullLiteral() {
+      f0 = new NodeToken("null");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/PackageDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PackageDeclaration.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PackageDeclaration.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "package"
+ * f1 -> Name()
+ * f2 -> ";"
+ * </PRE>
+ */
+public class PackageDeclaration implements Node {
+   public NodeToken f0;
+   public Name f1;
+   public NodeToken f2;
+
+   public PackageDeclaration(NodeToken n0, Name n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public PackageDeclaration(Name n0) {
+      f0 = new NodeToken("package");
+      f1 = n0;
+      f2 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ParseException.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ParseException.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ParseException.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,191 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 
*/
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+  /**
+   * This constructor is used by the method "generateParseException"
+   * in the generated parser.  Calling this constructor generates
+   * a new object of this type with the fields "currentToken",
+   * "expectedTokenSequences", and "tokenImage" set.  The boolean
+   * flag "specialConstructor" is also set to true to indicate that
+   * this constructor was used to create this object.
+   * This constructor calls its super class with the empty string
+   * to force the "toString" method of parent class "Throwable" to
+   * print the error message in the form:
+   *     ParseException: <result of getMessage>
+   */
+  public ParseException(Token currentTokenVal,
+                        int[][] expectedTokenSequencesVal,
+                        String[] tokenImageVal
+                       )
+  {
+    super("");
+    specialConstructor = true;
+    currentToken = currentTokenVal;
+    expectedTokenSequences = expectedTokenSequencesVal;
+    tokenImage = tokenImageVal;
+  }
+
+  /**
+   * The following constructors are for use by you for whatever
+   * purpose you can think of.  Constructing the exception in this
+   * manner makes the exception behave in the normal way - i.e., as
+   * documented in the class "Throwable".  The fields "errorToken",
+   * "expectedTokenSequences", and "tokenImage" do not contain
+   * relevant information.  The JavaCC generated code does not use
+   * these constructors.
+   */
+
+  public ParseException() {
+    super();
+    specialConstructor = false;
+  }
+
+  public ParseException(String message) {
+    super(message);
+    specialConstructor = false;
+  }
+
+  /**
+   * This variable determines which constructor was used to create
+   * this object and thereby affects the semantics of the
+   * "getMessage" method (see below).
+   */
+  protected boolean specialConstructor;
+
+  /**
+   * This is the last token that has been consumed successfully.  If
+   * this object has been created due to a parse error, the token
+   * followng this token will (therefore) be the first error token.
+   */
+  public Token currentToken;
+
+  /**
+   * Each entry in this array is an array of integers.  Each array
+   * of integers represents a sequence of tokens (by their ordinal
+   * values) that is expected at this point of the parse.
+   */
+  public int[][] expectedTokenSequences;
+
+  /**
+   * This is a reference to the "tokenImage" array of the generated
+   * parser within which the parse error occurred.  This array is
+   * defined in the generated ...Constants interface.
+   */
+  public String[] tokenImage;
+
+  /**
+   * This method has the standard behavior when this object has been
+   * created using the standard constructors.  Otherwise, it uses
+   * "currentToken" and "expectedTokenSequences" to generate a parse
+   * error message and returns it.  If this object has been created
+   * due to a parse error, and you do not catch it (it gets thrown
+   * from the parser), then this method is called during the printing
+   * of the final stack trace, and hence the correct error message
+   * gets displayed.
+   */
+  public String getMessage() {
+    if (!specialConstructor) {
+      return super.getMessage();
+    }
+    String expected = "";
+    int maxSize = 0;
+    for (int i = 0; i < expectedTokenSequences.length; i++) {
+      if (maxSize < expectedTokenSequences[i].length) {
+        maxSize = expectedTokenSequences[i].length;
+      }
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+        expected += tokenImage[expectedTokenSequences[i][j]] + " ";
+      }
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 
0) {
+        expected += "...";
+      }
+      expected += eol + "    ";
+    }
+    String retval = "Encountered \"";
+    Token tok = currentToken.next;
+    for (int i = 0; i < maxSize; i++) {
+      if (i != 0) retval += " ";
+      if (tok.kind == 0) {
+        retval += tokenImage[0];
+        break;
+      }
+      retval += add_escapes(tok.image);
+      tok = tok.next; 
+    }
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + 
currentToken.next.beginColumn;
+    retval += "." + eol;
+    if (expectedTokenSequences.length == 1) {
+      retval += "Was expecting:" + eol + "    ";
+    } else {
+      retval += "Was expecting one of:" + eol + "    ";
+    }
+    retval += expected;
+    return retval;
+  }
+
+  /**
+   * The end of line string for this machine.
+   */
+  protected String eol = System.getProperty("line.separator", "\n");
+ 
+  /**
+   * Used to convert raw characters to their escaped version
+   * when these raw version cannot be used as part of an ASCII
+   * string literal.
+   */
+  protected String add_escapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, 
s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+}

Added: freeway/src/org/gnu/freeway/support/javaparser/PostfixExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PostfixExpression.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PostfixExpression.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> PrimaryExpression()
+ * f1 -> [ "++" | "--" ]
+ * </PRE>
+ */
+public class PostfixExpression implements Node {
+   public PrimaryExpression f0;
+   public NodeOptional f1;
+
+   public PostfixExpression(PrimaryExpression n0, NodeOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/PreDecrementExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PreDecrementExpression.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PreDecrementExpression.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,36 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "--"
+ * f1 -> PrimaryExpression()
+ * </PRE>
+ */
+public class PreDecrementExpression implements Node {
+   public NodeToken f0;
+   public PrimaryExpression f1;
+
+   public PreDecrementExpression(NodeToken n0, PrimaryExpression n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public PreDecrementExpression(PrimaryExpression n0) {
+      f0 = new NodeToken("--");
+      f1 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/PreIncrementExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PreIncrementExpression.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PreIncrementExpression.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,36 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "++"
+ * f1 -> PrimaryExpression()
+ * </PRE>
+ */
+public class PreIncrementExpression implements Node {
+   public NodeToken f0;
+   public PrimaryExpression f1;
+
+   public PreIncrementExpression(NodeToken n0, PrimaryExpression n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public PreIncrementExpression(PrimaryExpression n0) {
+      f0 = new NodeToken("++");
+      f1 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/PrimaryExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PrimaryExpression.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PrimaryExpression.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> PrimaryPrefix()
+ * f1 -> ( PrimarySuffix() )*
+ * </PRE>
+ */
+public class PrimaryExpression implements Node {
+   public PrimaryPrefix f0;
+   public NodeListOptional f1;
+
+   public PrimaryExpression(PrimaryPrefix n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/PrimaryPrefix.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PrimaryPrefix.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PrimaryPrefix.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,34 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> Literal()
+ *       | "this"
+ *       | "super" "." &lt;IDENTIFIER&gt;
+ *       | "(" Expression() ")"
+ *       | AllocationExpression()
+ *       | ResultType() "." "class"
+ *       | Name()
+ * </PRE>
+ */
+public class PrimaryPrefix implements Node {
+   public NodeChoice f0;
+
+   public PrimaryPrefix(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/PrimarySuffix.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PrimarySuffix.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PrimarySuffix.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,32 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "." "this"
+ *       | "." AllocationExpression()
+ *       | "[" Expression() "]"
+ *       | "." &lt;IDENTIFIER&gt;
+ *       | Arguments()
+ * </PRE>
+ */
+public class PrimarySuffix implements Node {
+   public NodeChoice f0;
+
+   public PrimarySuffix(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/PrimitiveType.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/PrimitiveType.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/PrimitiveType.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,35 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "boolean"
+ *       | "char"
+ *       | "byte"
+ *       | "short"
+ *       | "int"
+ *       | "long"
+ *       | "float"
+ *       | "double"
+ * </PRE>
+ */
+public class PrimitiveType implements Node {
+   public NodeChoice f0;
+
+   public PrimitiveType(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/RelationalExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/RelationalExpression.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/RelationalExpression.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ShiftExpression()
+ * f1 -> ( ( "&lt;" | "&gt;" | "&lt;=" | "&gt;=" ) ShiftExpression() )*
+ * </PRE>
+ */
+public class RelationalExpression implements Node {
+   public ShiftExpression f0;
+   public NodeListOptional f1;
+
+   public RelationalExpression(ShiftExpression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ResultType.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ResultType.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ResultType.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "void"
+ *       | Type()
+ * </PRE>
+ */
+public class ResultType implements Node {
+   public NodeChoice f0;
+
+   public ResultType(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ReturnStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ReturnStatement.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ReturnStatement.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "return"
+ * f1 -> [ Expression() ]
+ * f2 -> ";"
+ * </PRE>
+ */
+public class ReturnStatement implements Node {
+   public NodeToken f0;
+   public NodeOptional f1;
+   public NodeToken f2;
+
+   public ReturnStatement(NodeToken n0, NodeOptional n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public ReturnStatement(NodeOptional n0) {
+      f0 = new NodeToken("return");
+      f1 = n0;
+      f2 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ShiftExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ShiftExpression.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ShiftExpression.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> AdditiveExpression()
+ * f1 -> ( ( "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;" ) AdditiveExpression() )*
+ * </PRE>
+ */
+public class ShiftExpression implements Node {
+   public AdditiveExpression f0;
+   public NodeListOptional f1;
+
+   public ShiftExpression(AdditiveExpression n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Statement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Statement.java       
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Statement.java       
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,42 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> LabeledStatement()
+ *       | Block()
+ *       | EmptyStatement()
+ *       | StatementExpression() ";"
+ *       | SwitchStatement()
+ *       | IfStatement()
+ *       | WhileStatement()
+ *       | DoStatement()
+ *       | ForStatement()
+ *       | BreakStatement()
+ *       | ContinueStatement()
+ *       | ReturnStatement()
+ *       | ThrowStatement()
+ *       | SynchronizedStatement()
+ *       | TryStatement()
+ * </PRE>
+ */
+public class Statement implements Node {
+   public NodeChoice f0;
+
+   public Statement(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/StatementExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/StatementExpression.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/StatementExpression.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,30 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> PreIncrementExpression()
+ *       | PreDecrementExpression()
+ *       | PrimaryExpression() [ "++" | "--" | AssignmentOperator() 
Expression() ]
+ * </PRE>
+ */
+public class StatementExpression implements Node {
+   public NodeChoice f0;
+
+   public StatementExpression(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/StatementExpressionList.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/StatementExpressionList.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/StatementExpressionList.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> StatementExpression()
+ * f1 -> ( "," StatementExpression() )*
+ * </PRE>
+ */
+public class StatementExpressionList implements Node {
+   public StatementExpression f0;
+   public NodeListOptional f1;
+
+   public StatementExpressionList(StatementExpression n0, NodeListOptional n1) 
{
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/SwitchLabel.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/SwitchLabel.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/SwitchLabel.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "case" Expression() ":"
+ *       | "default" ":"
+ * </PRE>
+ */
+public class SwitchLabel implements Node {
+   public NodeChoice f0;
+
+   public SwitchLabel(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/SwitchStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/SwitchStatement.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/SwitchStatement.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,56 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "switch"
+ * f1 -> "("
+ * f2 -> Expression()
+ * f3 -> ")"
+ * f4 -> "{"
+ * f5 -> ( SwitchLabel() ( BlockStatement() )* )*
+ * f6 -> "}"
+ * </PRE>
+ */
+public class SwitchStatement implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public Expression f2;
+   public NodeToken f3;
+   public NodeToken f4;
+   public NodeListOptional f5;
+   public NodeToken f6;
+
+   public SwitchStatement(NodeToken n0, NodeToken n1, Expression n2, NodeToken 
n3, NodeToken n4, NodeListOptional n5, NodeToken n6) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+      f6 = n6;
+   }
+
+   public SwitchStatement(Expression n0, NodeListOptional n1) {
+      f0 = new NodeToken("switch");
+      f1 = new NodeToken("(");
+      f2 = n0;
+      f3 = new NodeToken(")");
+      f4 = new NodeToken("{");
+      f5 = n1;
+      f6 = new NodeToken("}");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/SynchronizedStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/SynchronizedStatement.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/SynchronizedStatement.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,48 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "synchronized"
+ * f1 -> "("
+ * f2 -> Expression()
+ * f3 -> ")"
+ * f4 -> Block()
+ * </PRE>
+ */
+public class SynchronizedStatement implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public Expression f2;
+   public NodeToken f3;
+   public Block f4;
+
+   public SynchronizedStatement(NodeToken n0, NodeToken n1, Expression n2, 
NodeToken n3, Block n4) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+   }
+
+   public SynchronizedStatement(Expression n0, Block n1) {
+      f0 = new NodeToken("synchronized");
+      f1 = new NodeToken("(");
+      f2 = n0;
+      f3 = new NodeToken(")");
+      f4 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/ThrowStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/ThrowStatement.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/ThrowStatement.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,40 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "throw"
+ * f1 -> Expression()
+ * f2 -> ";"
+ * </PRE>
+ */
+public class ThrowStatement implements Node {
+   public NodeToken f0;
+   public Expression f1;
+   public NodeToken f2;
+
+   public ThrowStatement(NodeToken n0, Expression n1, NodeToken n2) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+   }
+
+   public ThrowStatement(Expression n0) {
+      f0 = new NodeToken("throw");
+      f1 = n0;
+      f2 = new NodeToken(";");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Token.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Token.java   2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Token.java   2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,80 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+  /**
+   * An integer that describes the kind of this token.  This numbering
+   * system is determined by JavaCCParser, and a table of these numbers is
+   * stored in the file ...Constants.java.
+   */
+  public int kind;
+
+  /**
+   * beginLine and beginColumn describe the position of the first character
+   * of this token; endLine and endColumn describe the position of the
+   * last character of this token.
+   */
+  public int beginLine, beginColumn, endLine, endColumn;
+
+  /**
+   * The string image of the token.
+   */
+  public String image;
+
+  /**
+   * A reference to the next regular (non-special) token from the input
+   * stream.  If this is the last token from the input stream, or if the
+   * token manager has not read tokens beyond this one, this field is
+   * set to null.  This is true only if this token is also a regular
+   * token.  Otherwise, see below for a description of the contents of
+   * this field.
+   */
+  public Token next;
+
+  /**
+   * This field is used to access special tokens that occur prior to this
+   * token, but after the immediately preceding regular (non-special) token.
+   * If there are no such special tokens, this field is set to null.
+   * When there are more than one such special token, this field refers
+   * to the last of these special tokens, which in turn refers to the next
+   * previous special token through its specialToken field, and so on
+   * until the first special token (whose specialToken field is null).
+   * The next fields of special tokens refer to other special tokens that
+   * immediately follow it (without an intervening regular token).  If there
+   * is no such token, this field is null.
+   */
+  public Token specialToken;
+
+  /**
+   * Returns the image.
+   */
+  public String toString()
+  {
+     return image;
+  }
+
+  /**
+   * Returns a new Token object, by default. However, if you want, you
+   * can create and return subclass objects based on the value of ofKind.
+   * Simply add the cases to the switch for all those special cases.
+   * For example, if you have a subclass of Token called IDToken that
+   * you want to create if ofKind is ID, simlpy add something like :
+   *
+   *    case MyParserConstants.ID : return new IDToken();
+   *
+   * to the following switch statement. Then you can cast matchedToken
+   * variable to the appropriate type and use it in your lexical actions.
+   */
+  public static final Token newToken(int ofKind)
+  {
+     switch(ofKind)
+     {
+       default : return new Token();
+     }
+  }
+
+}

Added: freeway/src/org/gnu/freeway/support/javaparser/TokenMgrError.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/TokenMgrError.java   
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/TokenMgrError.java   
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,132 @@
+package org.gnu.freeway.support.javaparser;
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 
*/
+public class TokenMgrError extends Error
+{
+   /*
+    * Ordinals for various reasons why an Error of this type can be thrown.
+    */
+
+   /**
+    * Lexical error occured.
+    */
+   static final int LEXICAL_ERROR = 0;
+
+   /**
+    * An attempt wass made to create a second instance of a static token 
manager.
+    */
+   static final int STATIC_LEXER_ERROR = 1;
+
+   /**
+    * Tried to change to an invalid lexical state.
+    */
+   static final int INVALID_LEXICAL_STATE = 2;
+
+   /**
+    * Detected (and bailed out of) an infinite loop in the token manager.
+    */
+   static final int LOOP_DETECTED = 3;
+
+   /**
+    * Indicates the reason why the exception is thrown. It will have
+    * one of the above 4 values.
+    */
+   int errorCode;
+
+   /**
+    * Replaces unprintable characters by their espaced (or unicode escaped)
+    * equivalents in the given string
+    */
+   protected static final String addEscapes(String str) {
+      StringBuffer retval = new StringBuffer();
+      char ch;
+      for (int i = 0; i < str.length(); i++) {
+        switch (str.charAt(i))
+        {
+           case 0 :
+              continue;
+           case '\b':
+              retval.append("\\b");
+              continue;
+           case '\t':
+              retval.append("\\t");
+              continue;
+           case '\n':
+              retval.append("\\n");
+              continue;
+           case '\f':
+              retval.append("\\f");
+              continue;
+           case '\r':
+              retval.append("\\r");
+              continue;
+           case '\"':
+              retval.append("\\\"");
+              continue;
+           case '\'':
+              retval.append("\\\'");
+              continue;
+           case '\\':
+              retval.append("\\\\");
+              continue;
+           default:
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+                 String s = "0000" + Integer.toString(ch, 16);
+                 retval.append("\\u" + s.substring(s.length() - 4, 
s.length()));
+              } else {
+                 retval.append(ch);
+              }
+              continue;
+        }
+      }
+      return retval.toString();
+   }
+
+   /**
+    * Returns a detailed message for the Error when it is thrown by the
+    * token manager to indicate a lexical error.
+    * Parameters : 
+    *    EOFSeen     : indicates if EOF caused the lexicl error
+    *    curLexState : lexical state in which this error occured
+    *    errorLine   : line number when the error occured
+    *    errorColumn : column number when the error occured
+    *    errorAfter  : prefix that was seen before this error occured
+    *    curchar     : the offending character
+    * Note: You can customize the lexical error message by modifying this 
method.
+    */
+   protected static String LexicalError(boolean EOFSeen, int lexState, int 
errorLine, int errorColumn, String errorAfter, char curChar) {
+      return("Lexical error at line " +
+           errorLine + ", column " +
+           errorColumn + ".  Encountered: " +
+           (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + 
"\"") + " (" + (int)curChar + "), ") +
+           "after : \"" + addEscapes(errorAfter) + "\"");
+   }
+
+   /**
+    * You can also modify the body of this method to customize your error 
messages.
+    * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+    * of end-users concern, so you can return something like : 
+    *
+    *     "Internal Error : Please file a bug report .... "
+    *
+    * from this method for such cases in the release version of your parser.
+    */
+   public String getMessage() {
+      return super.getMessage();
+   }
+
+   /*
+    * Constructors of various flavors follow.
+    */
+
+   public TokenMgrError() {
+   }
+
+   public TokenMgrError(String message, int reason) {
+      super(message);
+      errorCode = reason;
+   }
+
+   public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int 
errorColumn, String errorAfter, char curChar, int reason) {
+      this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, 
curChar), reason);
+   }
+}

Added: freeway/src/org/gnu/freeway/support/javaparser/TryStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/TryStatement.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/TryStatement.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,44 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "try"
+ * f1 -> Block()
+ * f2 -> ( "catch" "(" FormalParameter() ")" Block() )*
+ * f3 -> [ "finally" Block() ]
+ * </PRE>
+ */
+public class TryStatement implements Node {
+   public NodeToken f0;
+   public Block f1;
+   public NodeListOptional f2;
+   public NodeOptional f3;
+
+   public TryStatement(NodeToken n0, Block n1, NodeListOptional n2, 
NodeOptional n3) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+   }
+
+   public TryStatement(Block n0, NodeListOptional n1, NodeOptional n2) {
+      f0 = new NodeToken("try");
+      f1 = n0;
+      f2 = n1;
+      f3 = n2;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/Type.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/Type.java    2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/Type.java    2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( PrimitiveType() | Name() )
+ * f1 -> ( "[" "]" )*
+ * </PRE>
+ */
+public class Type implements Node {
+   public NodeChoice f0;
+   public NodeListOptional f1;
+
+   public Type(NodeChoice n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/TypeDeclaration.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/TypeDeclaration.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/TypeDeclaration.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,30 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ClassDeclaration()
+ *       | InterfaceDeclaration()
+ *       | ";"
+ * </PRE>
+ */
+public class TypeDeclaration implements Node {
+   public NodeChoice f0;
+
+   public TypeDeclaration(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/UnaryExpression.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/UnaryExpression.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/UnaryExpression.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "+" | "-" ) UnaryExpression()
+ *       | PreIncrementExpression()
+ *       | PreDecrementExpression()
+ *       | UnaryExpressionNotPlusMinus()
+ * </PRE>
+ */
+public class UnaryExpression implements Node {
+   public NodeChoice f0;
+
+   public UnaryExpression(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/UnaryExpressionNotPlusMinus.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/UnaryExpressionNotPlusMinus.java 
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/UnaryExpressionNotPlusMinus.java 
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,30 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ( "~" | "!" ) UnaryExpression()
+ *       | CastExpression()
+ *       | PostfixExpression()
+ * </PRE>
+ */
+public class UnaryExpressionNotPlusMinus implements Node {
+   public NodeChoice f0;
+
+   public UnaryExpressionNotPlusMinus(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedClassDeclaration.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedClassDeclaration.java  
    2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedClassDeclaration.java  
    2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,48 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "class"
+ * f1 -> &lt;IDENTIFIER&gt;
+ * f2 -> [ "extends" Name() ]
+ * f3 -> [ "implements" NameList() ]
+ * f4 -> ClassBody()
+ * </PRE>
+ */
+public class UnmodifiedClassDeclaration implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public NodeOptional f2;
+   public NodeOptional f3;
+   public ClassBody f4;
+
+   public UnmodifiedClassDeclaration(NodeToken n0, NodeToken n1, NodeOptional 
n2, NodeOptional n3, ClassBody n4) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+   }
+
+   public UnmodifiedClassDeclaration(NodeToken n0, NodeOptional n1, 
NodeOptional n2, ClassBody n3) {
+      f0 = new NodeToken("class");
+      f1 = n0;
+      f2 = n1;
+      f3 = n2;
+      f4 = n3;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: 
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedInterfaceDeclaration.java
===================================================================
--- 
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedInterfaceDeclaration.java
  2006-06-08 00:52:10 UTC (rev 2968)
+++ 
freeway/src/org/gnu/freeway/support/javaparser/UnmodifiedInterfaceDeclaration.java
  2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,52 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "interface"
+ * f1 -> &lt;IDENTIFIER&gt;
+ * f2 -> [ "extends" NameList() ]
+ * f3 -> "{"
+ * f4 -> ( InterfaceMemberDeclaration() )*
+ * f5 -> "}"
+ * </PRE>
+ */
+public class UnmodifiedInterfaceDeclaration implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public NodeOptional f2;
+   public NodeToken f3;
+   public NodeListOptional f4;
+   public NodeToken f5;
+
+   public UnmodifiedInterfaceDeclaration(NodeToken n0, NodeToken n1, 
NodeOptional n2, NodeToken n3, NodeListOptional n4, NodeToken n5) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+      f5 = n5;
+   }
+
+   public UnmodifiedInterfaceDeclaration(NodeToken n0, NodeOptional n1, 
NodeListOptional n2) {
+      f0 = new NodeToken("interface");
+      f1 = n0;
+      f2 = n1;
+      f3 = new NodeToken("{");
+      f4 = n2;
+      f5 = new NodeToken("}");
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/VariableDeclarator.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/VariableDeclarator.java      
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/VariableDeclarator.java      
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> VariableDeclaratorId()
+ * f1 -> [ "=" VariableInitializer() ]
+ * </PRE>
+ */
+public class VariableDeclarator implements Node {
+   public VariableDeclaratorId f0;
+   public NodeOptional f1;
+
+   public VariableDeclarator(VariableDeclaratorId n0, NodeOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/VariableDeclaratorId.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/VariableDeclaratorId.java    
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/VariableDeclaratorId.java    
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,31 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> &lt;IDENTIFIER&gt;
+ * f1 -> ( "[" "]" )*
+ * </PRE>
+ */
+public class VariableDeclaratorId implements Node {
+   public NodeToken f0;
+   public NodeListOptional f1;
+
+   public VariableDeclaratorId(NodeToken n0, NodeListOptional n1) {
+      f0 = n0;
+      f1 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/VariableInitializer.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/VariableInitializer.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/VariableInitializer.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,29 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> ArrayInitializer()
+ *       | Expression()
+ * </PRE>
+ */
+public class VariableInitializer implements Node {
+   public NodeChoice f0;
+
+   public VariableInitializer(NodeChoice n0) {
+      f0 = n0;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/javaparser/WhileStatement.java
===================================================================
--- freeway/src/org/gnu/freeway/support/javaparser/WhileStatement.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/javaparser/WhileStatement.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,48 @@
+package org.gnu.freeway.support.javaparser;
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser;
+
+/**
+ * Grammar production:
+ * <PRE>
+ * f0 -> "while"
+ * f1 -> "("
+ * f2 -> Expression()
+ * f3 -> ")"
+ * f4 -> Statement()
+ * </PRE>
+ */
+public class WhileStatement implements Node {
+   public NodeToken f0;
+   public NodeToken f1;
+   public Expression f2;
+   public NodeToken f3;
+   public Statement f4;
+
+   public WhileStatement(NodeToken n0, NodeToken n1, Expression n2, NodeToken 
n3, Statement n4) {
+      f0 = n0;
+      f1 = n1;
+      f2 = n2;
+      f3 = n3;
+      f4 = n4;
+   }
+
+   public WhileStatement(Expression n0, Statement n1) {
+      f0 = new NodeToken("while");
+      f1 = new NodeToken("(");
+      f2 = n0;
+      f3 = new NodeToken(")");
+      f4 = n1;
+   }
+
+   public void accept(org.gnu.freeway.support.javaparser.visitors.Visitor v) {
+      v.visit(this);
+   }
+   public Object 
accept(org.gnu.freeway.support.javaparser.visitors.ObjectVisitor v, Object 
argu) {
+      return v.visit(this,argu);
+   }
+}
+

Added: freeway/src/org/gnu/freeway/support/visitors/DepthFirstVisitor.java
===================================================================
--- freeway/src/org/gnu/freeway/support/visitors/DepthFirstVisitor.java 
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/visitors/DepthFirstVisitor.java 
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,1138 @@
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser.visitors;
+import org.gnu.freeway.support.javaparser.*;
+import java.util.*;
+
+/**
+ * Provides default methods which visit each node in the tree in depth-first
+ * order.  Your visitors may extend this class.
+ */
+public class DepthFirstVisitor implements Visitor {
+   //
+   // Auto class visitors--probably don't need to be overridden.
+   //
+   public void visit(NodeList n) {
+      for ( Enumeration e = n.elements(); e.hasMoreElements(); )
+         ((Node)e.nextElement()).accept(this);
+   }
+
+   public void visit(NodeListOptional n) {
+      if ( n.present() )
+         for ( Enumeration e = n.elements(); e.hasMoreElements(); )
+            ((Node)e.nextElement()).accept(this);
+   }
+
+   public void visit(NodeOptional n) {
+      if ( n.present() )
+         n.node.accept(this);
+   }
+
+   public void visit(NodeSequence n) {
+      for ( Enumeration e = n.elements(); e.hasMoreElements(); )
+         ((Node)e.nextElement()).accept(this);
+   }
+
+   public void visit(NodeToken n) { }
+
+   //
+   // User-generated visitor methods below
+   //
+
+   /**
+    * <PRE>
+    * f0 -> [ PackageDeclaration() ]
+    * f1 -> ( ImportDeclaration() )*
+    * f2 -> ( TypeDeclaration() )*
+    * f3 -> &lt;EOF&gt;
+    * </PRE>
+    */
+   public void visit(CompilationUnit n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "package"
+    * f1 -> Name()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(PackageDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "import"
+    * f1 -> Name()
+    * f2 -> [ "." "*" ]
+    * f3 -> ";"
+    * </PRE>
+    */
+   public void visit(ImportDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ClassDeclaration()
+    *       | InterfaceDeclaration()
+    *       | ";"
+    * </PRE>
+    */
+   public void visit(TypeDeclaration n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "final" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * </PRE>
+    */
+   public void visit(ClassDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "class"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" Name() ]
+    * f3 -> [ "implements" NameList() ]
+    * f4 -> ClassBody()
+    * </PRE>
+    */
+   public void visit(UnmodifiedClassDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( ClassBodyDeclaration() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public void visit(ClassBody n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * f2 -> ( ";" )?
+    * </PRE>
+    */
+   public void visit(NestedClassDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Initializer()
+    *       | NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | ConstructorDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public void visit(ClassBodyDeclaration n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> &lt;IDENTIFIER&gt;
+    * f3 -> "("
+    * </PRE>
+    */
+   public void visit(MethodDeclarationLookahead n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public void visit(InterfaceDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public void visit(NestedInterfaceDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "interface"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" NameList() ]
+    * f3 -> "{"
+    * f4 -> ( InterfaceMemberDeclaration() )*
+    * f5 -> "}"
+    * </PRE>
+    */
+   public void visit(UnmodifiedInterfaceDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public void visit(InterfaceMemberDeclaration n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "final" | 
"transient" | "volatile" )*
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * f4 -> ";"
+    * </PRE>
+    */
+   public void visit(FieldDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> VariableDeclaratorId()
+    * f1 -> [ "=" VariableInitializer() ]
+    * </PRE>
+    */
+   public void visit(VariableDeclarator n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public void visit(VariableDeclaratorId n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ArrayInitializer()
+    *       | Expression()
+    * </PRE>
+    */
+   public void visit(VariableInitializer n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ]
+    * f2 -> [ "," ]
+    * f3 -> "}"
+    * </PRE>
+    */
+   public void visit(ArrayInitializer n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> MethodDeclarator()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> ( Block() | ";" )
+    * f5 -> ( ";" )?
+    * </PRE>
+    */
+   public void visit(MethodDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> FormalParameters()
+    * f2 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public void visit(MethodDeclarator n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ FormalParameter() ( "," FormalParameter() )* ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public void visit(FormalParameters n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclaratorId()
+    * </PRE>
+    */
+   public void visit(FormalParameter n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "public" | "protected" | "private" ]
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> FormalParameters()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> "{"
+    * f5 -> [ ExplicitConstructorInvocation() ]
+    * f6 -> ( BlockStatement() )*
+    * f7 -> "}"
+    * </PRE>
+    */
+   public void visit(ConstructorDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+      n.f6.accept(this);
+      n.f7.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "this" Arguments() ";"
+    *       | [ PrimaryExpression() "." ] "super" Arguments() ";"
+    * </PRE>
+    */
+   public void visit(ExplicitConstructorInvocation n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "static" ]
+    * f1 -> Block()
+    * </PRE>
+    */
+   public void visit(Initializer n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( PrimitiveType() | Name() )
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public void visit(Type n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "boolean"
+    *       | "char"
+    *       | "byte"
+    *       | "short"
+    *       | "int"
+    *       | "long"
+    *       | "float"
+    *       | "double"
+    * </PRE>
+    */
+   public void visit(PrimitiveType n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "void"
+    *       | Type()
+    * </PRE>
+    */
+   public void visit(ResultType n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "." &lt;IDENTIFIER&gt; )*
+    * </PRE>
+    */
+   public void visit(Name n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Name()
+    * f1 -> ( "," Name() )*
+    * </PRE>
+    */
+   public void visit(NameList n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalExpression()
+    * f1 -> [ AssignmentOperator() Expression() ]
+    * </PRE>
+    */
+   public void visit(Expression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "="
+    *       | "*="
+    *       | "/="
+    *       | "%="
+    *       | "+="
+    *       | "-="
+    *       | "&lt;&lt;="
+    *       | "&gt;&gt;="
+    *       | "&gt;&gt;&gt;="
+    *       | "&="
+    *       | "^="
+    *       | "|="
+    * </PRE>
+    */
+   public void visit(AssignmentOperator n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalOrExpression()
+    * f1 -> [ "?" Expression() ":" ConditionalExpression() ]
+    * </PRE>
+    */
+   public void visit(ConditionalExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalAndExpression()
+    * f1 -> ( "||" ConditionalAndExpression() )*
+    * </PRE>
+    */
+   public void visit(ConditionalOrExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> InclusiveOrExpression()
+    * f1 -> ( "&&" InclusiveOrExpression() )*
+    * </PRE>
+    */
+   public void visit(ConditionalAndExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ExclusiveOrExpression()
+    * f1 -> ( "|" ExclusiveOrExpression() )*
+    * </PRE>
+    */
+   public void visit(InclusiveOrExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> AndExpression()
+    * f1 -> ( "^" AndExpression() )*
+    * </PRE>
+    */
+   public void visit(ExclusiveOrExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> EqualityExpression()
+    * f1 -> ( "&" EqualityExpression() )*
+    * </PRE>
+    */
+   public void visit(AndExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> InstanceOfExpression()
+    * f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
+    * </PRE>
+    */
+   public void visit(EqualityExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> RelationalExpression()
+    * f1 -> [ "instanceof" Type() ]
+    * </PRE>
+    */
+   public void visit(InstanceOfExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ShiftExpression()
+    * f1 -> ( ( "&lt;" | "&gt;" | "&lt;=" | "&gt;=" ) ShiftExpression() )*
+    * </PRE>
+    */
+   public void visit(RelationalExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> AdditiveExpression()
+    * f1 -> ( ( "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;" ) 
AdditiveExpression() )*
+    * </PRE>
+    */
+   public void visit(ShiftExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> MultiplicativeExpression()
+    * f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
+    * </PRE>
+    */
+   public void visit(AdditiveExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> UnaryExpression()
+    * f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
+    * </PRE>
+    */
+   public void visit(MultiplicativeExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "+" | "-" ) UnaryExpression()
+    *       | PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public void visit(UnaryExpression n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "++"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public void visit(PreIncrementExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "--"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public void visit(PreDecrementExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "~" | "!" ) UnaryExpression()
+    *       | CastExpression()
+    *       | PostfixExpression()
+    * </PRE>
+    */
+   public void visit(UnaryExpressionNotPlusMinus n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "(" PrimitiveType()
+    *       | "(" Name() "[" "]"
+    *       | "(" Name() ")" ( "~" | "!" | "(" | &lt;IDENTIFIER&gt; | "this" | 
"super" | "new" | Literal() )
+    * </PRE>
+    */
+   public void visit(CastLookahead n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryExpression()
+    * f1 -> [ "++" | "--" ]
+    * </PRE>
+    */
+   public void visit(PostfixExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "(" Type() ")" UnaryExpression()
+    *       | "(" Type() ")" UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public void visit(CastExpression n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryPrefix()
+    * f1 -> ( PrimarySuffix() )*
+    * </PRE>
+    */
+   public void visit(PrimaryExpression n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Literal()
+    *       | "this"
+    *       | "super" "." &lt;IDENTIFIER&gt;
+    *       | "(" Expression() ")"
+    *       | AllocationExpression()
+    *       | ResultType() "." "class"
+    *       | Name()
+    * </PRE>
+    */
+   public void visit(PrimaryPrefix n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "." "this"
+    *       | "." AllocationExpression()
+    *       | "[" Expression() "]"
+    *       | "." &lt;IDENTIFIER&gt;
+    *       | Arguments()
+    * </PRE>
+    */
+   public void visit(PrimarySuffix n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;INTEGER_LITERAL&gt;
+    *       | &lt;FLOATING_POINT_LITERAL&gt;
+    *       | &lt;CHARACTER_LITERAL&gt;
+    *       | &lt;STRING_LITERAL&gt;
+    *       | BooleanLiteral()
+    *       | NullLiteral()
+    * </PRE>
+    */
+   public void visit(Literal n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "true"
+    *       | "false"
+    * </PRE>
+    */
+   public void visit(BooleanLiteral n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "null"
+    * </PRE>
+    */
+   public void visit(NullLiteral n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ ArgumentList() ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public void visit(Arguments n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Expression()
+    * f1 -> ( "," Expression() )*
+    * </PRE>
+    */
+   public void visit(ArgumentList n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "new" PrimitiveType() ArrayDimsAndInits()
+    *       | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] 
)
+    * </PRE>
+    */
+   public void visit(AllocationExpression n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "[" Expression() "]" )+ ( "[" "]" )*
+    *       | ( "[" "]" )+ ArrayInitializer()
+    * </PRE>
+    */
+   public void visit(ArrayDimsAndInits n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> LabeledStatement()
+    *       | Block()
+    *       | EmptyStatement()
+    *       | StatementExpression() ";"
+    *       | SwitchStatement()
+    *       | IfStatement()
+    *       | WhileStatement()
+    *       | DoStatement()
+    *       | ForStatement()
+    *       | BreakStatement()
+    *       | ContinueStatement()
+    *       | ReturnStatement()
+    *       | ThrowStatement()
+    *       | SynchronizedStatement()
+    *       | TryStatement()
+    * </PRE>
+    */
+   public void visit(Statement n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ":"
+    * f2 -> Statement()
+    * </PRE>
+    */
+   public void visit(LabeledStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( BlockStatement() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public void visit(Block n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration() ";"
+    *       | Statement()
+    *       | UnmodifiedClassDeclaration()
+    *       | UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public void visit(BlockStatement n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * </PRE>
+    */
+   public void visit(LocalVariableDeclaration n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ";"
+    * </PRE>
+    */
+   public void visit(EmptyStatement n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | PrimaryExpression() [ "++" | "--" | AssignmentOperator() 
Expression() ]
+    * </PRE>
+    */
+   public void visit(StatementExpression n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "switch"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> "{"
+    * f5 -> ( SwitchLabel() ( BlockStatement() )* )*
+    * f6 -> "}"
+    * </PRE>
+    */
+   public void visit(SwitchStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+      n.f6.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "case" Expression() ":"
+    *       | "default" ":"
+    * </PRE>
+    */
+   public void visit(SwitchLabel n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "if"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * f5 -> [ "else" Statement() ]
+    * </PRE>
+    */
+   public void visit(IfStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "while"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * </PRE>
+    */
+   public void visit(WhileStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "do"
+    * f1 -> Statement()
+    * f2 -> "while"
+    * f3 -> "("
+    * f4 -> Expression()
+    * f5 -> ")"
+    * f6 -> ";"
+    * </PRE>
+    */
+   public void visit(DoStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+      n.f6.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "for"
+    * f1 -> "("
+    * f2 -> [ ForInit() ]
+    * f3 -> ";"
+    * f4 -> [ Expression() ]
+    * f5 -> ";"
+    * f6 -> [ ForUpdate() ]
+    * f7 -> ")"
+    * f8 -> Statement()
+    * </PRE>
+    */
+   public void visit(ForStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+      n.f5.accept(this);
+      n.f6.accept(this);
+      n.f7.accept(this);
+      n.f8.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration()
+    *       | StatementExpressionList()
+    * </PRE>
+    */
+   public void visit(ForInit n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpression()
+    * f1 -> ( "," StatementExpression() )*
+    * </PRE>
+    */
+   public void visit(StatementExpressionList n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpressionList()
+    * </PRE>
+    */
+   public void visit(ForUpdate n) {
+      n.f0.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "break"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(BreakStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "continue"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(ContinueStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "return"
+    * f1 -> [ Expression() ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(ReturnStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "throw"
+    * f1 -> Expression()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(ThrowStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "synchronized"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Block()
+    * </PRE>
+    */
+   public void visit(SynchronizedStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+      n.f4.accept(this);
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "try"
+    * f1 -> Block()
+    * f2 -> ( "catch" "(" FormalParameter() ")" Block() )*
+    * f3 -> [ "finally" Block() ]
+    * </PRE>
+    */
+   public void visit(TryStatement n) {
+      n.f0.accept(this);
+      n.f1.accept(this);
+      n.f2.accept(this);
+      n.f3.accept(this);
+   }
+
+}

Added: freeway/src/org/gnu/freeway/support/visitors/ObjectDepthFirst.java
===================================================================
--- freeway/src/org/gnu/freeway/support/visitors/ObjectDepthFirst.java  
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/visitors/ObjectDepthFirst.java  
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,1326 @@
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser.visitors;
+import org.gnu.freeway.support.javaparser.*;
+import java.util.*;
+
+/**
+ * Provides default methods which visit each node in the tree in depth-first
+ * order.  Your visitors may extend this class.
+ */
+public class ObjectDepthFirst implements ObjectVisitor {
+   //
+   // Auto class visitors--probably don't need to be overridden.
+   //
+   public Object visit(NodeList n, Object argu) {
+      Object _ret=argu;
+      int _count=0;
+      for ( Enumeration e = n.elements(); e.hasMoreElements(); ) {
+         _ret=((Node)e.nextElement()).accept(this,_ret);
+         _count++;
+      }
+      return _ret;
+   }
+
+   public Object visit(NodeListOptional n, Object argu) {
+      if ( n.present() ) {
+         Object _ret=argu;
+         int _count=0;
+         for ( Enumeration e = n.elements(); e.hasMoreElements(); ) {
+            _ret=((Node)e.nextElement()).accept(this,_ret);
+            _count++;
+         }
+         return _ret;
+      }
+      else
+         return argu;
+   }
+
+   public Object visit(NodeOptional n, Object argu) {
+      if ( n.present() )
+         return n.node.accept(this,argu);
+      else
+         return argu;
+   }
+
+   public Object visit(NodeSequence n, Object argu) {
+      Object _ret=argu;
+      int _count=0;
+      for ( Enumeration e = n.elements(); e.hasMoreElements(); ) {
+         _ret=((Node)e.nextElement()).accept(this,_ret);
+         _count++;
+      }
+      return _ret;
+   }
+
+   public Object visit(NodeToken n, Object argu) { return argu; }
+
+   //
+   // User-generated visitor methods below
+   //
+
+   /**
+    * <PRE>
+    * f0 -> [ PackageDeclaration() ]
+    * f1 -> ( ImportDeclaration() )*
+    * f2 -> ( TypeDeclaration() )*
+    * f3 -> &lt;EOF&gt;
+    * </PRE>
+    */
+   public Object visit(CompilationUnit n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "package"
+    * f1 -> Name()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(PackageDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "import"
+    * f1 -> Name()
+    * f2 -> [ "." "*" ]
+    * f3 -> ";"
+    * </PRE>
+    */
+   public Object visit(ImportDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ClassDeclaration()
+    *       | InterfaceDeclaration()
+    *       | ";"
+    * </PRE>
+    */
+   public Object visit(TypeDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "final" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * </PRE>
+    */
+   public Object visit(ClassDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "class"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" Name() ]
+    * f3 -> [ "implements" NameList() ]
+    * f4 -> ClassBody()
+    * </PRE>
+    */
+   public Object visit(UnmodifiedClassDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( ClassBodyDeclaration() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public Object visit(ClassBody n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * f2 -> ( ";" )?
+    * </PRE>
+    */
+   public Object visit(NestedClassDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Initializer()
+    *       | NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | ConstructorDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public Object visit(ClassBodyDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> &lt;IDENTIFIER&gt;
+    * f3 -> "("
+    * </PRE>
+    */
+   public Object visit(MethodDeclarationLookahead n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public Object visit(InterfaceDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public Object visit(NestedInterfaceDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "interface"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" NameList() ]
+    * f3 -> "{"
+    * f4 -> ( InterfaceMemberDeclaration() )*
+    * f5 -> "}"
+    * </PRE>
+    */
+   public Object visit(UnmodifiedInterfaceDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public Object visit(InterfaceMemberDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "final" | 
"transient" | "volatile" )*
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * f4 -> ";"
+    * </PRE>
+    */
+   public Object visit(FieldDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> VariableDeclaratorId()
+    * f1 -> [ "=" VariableInitializer() ]
+    * </PRE>
+    */
+   public Object visit(VariableDeclarator n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public Object visit(VariableDeclaratorId n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ArrayInitializer()
+    *       | Expression()
+    * </PRE>
+    */
+   public Object visit(VariableInitializer n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ]
+    * f2 -> [ "," ]
+    * f3 -> "}"
+    * </PRE>
+    */
+   public Object visit(ArrayInitializer n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> MethodDeclarator()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> ( Block() | ";" )
+    * f5 -> ( ";" )?
+    * </PRE>
+    */
+   public Object visit(MethodDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> FormalParameters()
+    * f2 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public Object visit(MethodDeclarator n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ FormalParameter() ( "," FormalParameter() )* ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public Object visit(FormalParameters n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclaratorId()
+    * </PRE>
+    */
+   public Object visit(FormalParameter n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "public" | "protected" | "private" ]
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> FormalParameters()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> "{"
+    * f5 -> [ ExplicitConstructorInvocation() ]
+    * f6 -> ( BlockStatement() )*
+    * f7 -> "}"
+    * </PRE>
+    */
+   public Object visit(ConstructorDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      _ret=n.f6.accept(this, _ret);
+      _ret=n.f7.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "this" Arguments() ";"
+    *       | [ PrimaryExpression() "." ] "super" Arguments() ";"
+    * </PRE>
+    */
+   public Object visit(ExplicitConstructorInvocation n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "static" ]
+    * f1 -> Block()
+    * </PRE>
+    */
+   public Object visit(Initializer n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( PrimitiveType() | Name() )
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public Object visit(Type n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "boolean"
+    *       | "char"
+    *       | "byte"
+    *       | "short"
+    *       | "int"
+    *       | "long"
+    *       | "float"
+    *       | "double"
+    * </PRE>
+    */
+   public Object visit(PrimitiveType n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "void"
+    *       | Type()
+    * </PRE>
+    */
+   public Object visit(ResultType n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "." &lt;IDENTIFIER&gt; )*
+    * </PRE>
+    */
+   public Object visit(Name n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Name()
+    * f1 -> ( "," Name() )*
+    * </PRE>
+    */
+   public Object visit(NameList n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalExpression()
+    * f1 -> [ AssignmentOperator() Expression() ]
+    * </PRE>
+    */
+   public Object visit(Expression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "="
+    *       | "*="
+    *       | "/="
+    *       | "%="
+    *       | "+="
+    *       | "-="
+    *       | "&lt;&lt;="
+    *       | "&gt;&gt;="
+    *       | "&gt;&gt;&gt;="
+    *       | "&="
+    *       | "^="
+    *       | "|="
+    * </PRE>
+    */
+   public Object visit(AssignmentOperator n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalOrExpression()
+    * f1 -> [ "?" Expression() ":" ConditionalExpression() ]
+    * </PRE>
+    */
+   public Object visit(ConditionalExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalAndExpression()
+    * f1 -> ( "||" ConditionalAndExpression() )*
+    * </PRE>
+    */
+   public Object visit(ConditionalOrExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> InclusiveOrExpression()
+    * f1 -> ( "&&" InclusiveOrExpression() )*
+    * </PRE>
+    */
+   public Object visit(ConditionalAndExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ExclusiveOrExpression()
+    * f1 -> ( "|" ExclusiveOrExpression() )*
+    * </PRE>
+    */
+   public Object visit(InclusiveOrExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> AndExpression()
+    * f1 -> ( "^" AndExpression() )*
+    * </PRE>
+    */
+   public Object visit(ExclusiveOrExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> EqualityExpression()
+    * f1 -> ( "&" EqualityExpression() )*
+    * </PRE>
+    */
+   public Object visit(AndExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> InstanceOfExpression()
+    * f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
+    * </PRE>
+    */
+   public Object visit(EqualityExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> RelationalExpression()
+    * f1 -> [ "instanceof" Type() ]
+    * </PRE>
+    */
+   public Object visit(InstanceOfExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ShiftExpression()
+    * f1 -> ( ( "&lt;" | "&gt;" | "&lt;=" | "&gt;=" ) ShiftExpression() )*
+    * </PRE>
+    */
+   public Object visit(RelationalExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> AdditiveExpression()
+    * f1 -> ( ( "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;" ) 
AdditiveExpression() )*
+    * </PRE>
+    */
+   public Object visit(ShiftExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> MultiplicativeExpression()
+    * f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
+    * </PRE>
+    */
+   public Object visit(AdditiveExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> UnaryExpression()
+    * f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
+    * </PRE>
+    */
+   public Object visit(MultiplicativeExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "+" | "-" ) UnaryExpression()
+    *       | PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public Object visit(UnaryExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "++"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public Object visit(PreIncrementExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "--"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public Object visit(PreDecrementExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "~" | "!" ) UnaryExpression()
+    *       | CastExpression()
+    *       | PostfixExpression()
+    * </PRE>
+    */
+   public Object visit(UnaryExpressionNotPlusMinus n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "(" PrimitiveType()
+    *       | "(" Name() "[" "]"
+    *       | "(" Name() ")" ( "~" | "!" | "(" | &lt;IDENTIFIER&gt; | "this" | 
"super" | "new" | Literal() )
+    * </PRE>
+    */
+   public Object visit(CastLookahead n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryExpression()
+    * f1 -> [ "++" | "--" ]
+    * </PRE>
+    */
+   public Object visit(PostfixExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "(" Type() ")" UnaryExpression()
+    *       | "(" Type() ")" UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public Object visit(CastExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryPrefix()
+    * f1 -> ( PrimarySuffix() )*
+    * </PRE>
+    */
+   public Object visit(PrimaryExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Literal()
+    *       | "this"
+    *       | "super" "." &lt;IDENTIFIER&gt;
+    *       | "(" Expression() ")"
+    *       | AllocationExpression()
+    *       | ResultType() "." "class"
+    *       | Name()
+    * </PRE>
+    */
+   public Object visit(PrimaryPrefix n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "." "this"
+    *       | "." AllocationExpression()
+    *       | "[" Expression() "]"
+    *       | "." &lt;IDENTIFIER&gt;
+    *       | Arguments()
+    * </PRE>
+    */
+   public Object visit(PrimarySuffix n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;INTEGER_LITERAL&gt;
+    *       | &lt;FLOATING_POINT_LITERAL&gt;
+    *       | &lt;CHARACTER_LITERAL&gt;
+    *       | &lt;STRING_LITERAL&gt;
+    *       | BooleanLiteral()
+    *       | NullLiteral()
+    * </PRE>
+    */
+   public Object visit(Literal n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "true"
+    *       | "false"
+    * </PRE>
+    */
+   public Object visit(BooleanLiteral n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "null"
+    * </PRE>
+    */
+   public Object visit(NullLiteral n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ ArgumentList() ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public Object visit(Arguments n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> Expression()
+    * f1 -> ( "," Expression() )*
+    * </PRE>
+    */
+   public Object visit(ArgumentList n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "new" PrimitiveType() ArrayDimsAndInits()
+    *       | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] 
)
+    * </PRE>
+    */
+   public Object visit(AllocationExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ( "[" Expression() "]" )+ ( "[" "]" )*
+    *       | ( "[" "]" )+ ArrayInitializer()
+    * </PRE>
+    */
+   public Object visit(ArrayDimsAndInits n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> LabeledStatement()
+    *       | Block()
+    *       | EmptyStatement()
+    *       | StatementExpression() ";"
+    *       | SwitchStatement()
+    *       | IfStatement()
+    *       | WhileStatement()
+    *       | DoStatement()
+    *       | ForStatement()
+    *       | BreakStatement()
+    *       | ContinueStatement()
+    *       | ReturnStatement()
+    *       | ThrowStatement()
+    *       | SynchronizedStatement()
+    *       | TryStatement()
+    * </PRE>
+    */
+   public Object visit(Statement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ":"
+    * f2 -> Statement()
+    * </PRE>
+    */
+   public Object visit(LabeledStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( BlockStatement() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public Object visit(Block n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration() ";"
+    *       | Statement()
+    *       | UnmodifiedClassDeclaration()
+    *       | UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public Object visit(BlockStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * </PRE>
+    */
+   public Object visit(LocalVariableDeclaration n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> ";"
+    * </PRE>
+    */
+   public Object visit(EmptyStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | PrimaryExpression() [ "++" | "--" | AssignmentOperator() 
Expression() ]
+    * </PRE>
+    */
+   public Object visit(StatementExpression n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "switch"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> "{"
+    * f5 -> ( SwitchLabel() ( BlockStatement() )* )*
+    * f6 -> "}"
+    * </PRE>
+    */
+   public Object visit(SwitchStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      _ret=n.f6.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "case" Expression() ":"
+    *       | "default" ":"
+    * </PRE>
+    */
+   public Object visit(SwitchLabel n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "if"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * f5 -> [ "else" Statement() ]
+    * </PRE>
+    */
+   public Object visit(IfStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "while"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * </PRE>
+    */
+   public Object visit(WhileStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "do"
+    * f1 -> Statement()
+    * f2 -> "while"
+    * f3 -> "("
+    * f4 -> Expression()
+    * f5 -> ")"
+    * f6 -> ";"
+    * </PRE>
+    */
+   public Object visit(DoStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      _ret=n.f6.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "for"
+    * f1 -> "("
+    * f2 -> [ ForInit() ]
+    * f3 -> ";"
+    * f4 -> [ Expression() ]
+    * f5 -> ";"
+    * f6 -> [ ForUpdate() ]
+    * f7 -> ")"
+    * f8 -> Statement()
+    * </PRE>
+    */
+   public Object visit(ForStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      _ret=n.f5.accept(this, _ret);
+      _ret=n.f6.accept(this, _ret);
+      _ret=n.f7.accept(this, _ret);
+      _ret=n.f8.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration()
+    *       | StatementExpressionList()
+    * </PRE>
+    */
+   public Object visit(ForInit n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpression()
+    * f1 -> ( "," StatementExpression() )*
+    * </PRE>
+    */
+   public Object visit(StatementExpressionList n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpressionList()
+    * </PRE>
+    */
+   public Object visit(ForUpdate n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "break"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(BreakStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "continue"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(ContinueStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "return"
+    * f1 -> [ Expression() ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(ReturnStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "throw"
+    * f1 -> Expression()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(ThrowStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "synchronized"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Block()
+    * </PRE>
+    */
+   public Object visit(SynchronizedStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      _ret=n.f4.accept(this, _ret);
+      return _ret;
+   }
+
+   /**
+    * <PRE>
+    * f0 -> "try"
+    * f1 -> Block()
+    * f2 -> ( "catch" "(" FormalParameter() ")" Block() )*
+    * f3 -> [ "finally" Block() ]
+    * </PRE>
+    */
+   public Object visit(TryStatement n, Object argu) {
+      Object _ret=argu;
+      _ret=n.f0.accept(this, _ret);
+      _ret=n.f1.accept(this, _ret);
+      _ret=n.f2.accept(this, _ret);
+      _ret=n.f3.accept(this, _ret);
+      return _ret;
+   }
+
+}

Added: freeway/src/org/gnu/freeway/support/visitors/ObjectVisitor.java
===================================================================
--- freeway/src/org/gnu/freeway/support/visitors/ObjectVisitor.java     
2006-06-08 00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/visitors/ObjectVisitor.java     
2006-06-08 04:56:56 UTC (rev 2969)
@@ -0,0 +1,822 @@
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser.visitors;
+import org.gnu.freeway.support.javaparser.*;
+import java.util.*;
+
+/**
+ * All Object visitors must implement this interface.
+ */
+public interface ObjectVisitor {
+   //
+   // Object Auto class visitors
+   //
+   public Object visit(NodeList n, Object argu);
+   public Object visit(NodeListOptional n, Object argu);
+   public Object visit(NodeOptional n, Object argu);
+   public Object visit(NodeSequence n, Object argu);
+   public Object visit(NodeToken n, Object argu);
+
+   //
+   // User-generated visitor methods below
+   //
+
+   /**
+    * <PRE>
+    * f0 -> [ PackageDeclaration() ]
+    * f1 -> ( ImportDeclaration() )*
+    * f2 -> ( TypeDeclaration() )*
+    * f3 -> &lt;EOF&gt;
+    * </PRE>
+    */
+   public Object visit(CompilationUnit n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "package"
+    * f1 -> Name()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(PackageDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "import"
+    * f1 -> Name()
+    * f2 -> [ "." "*" ]
+    * f3 -> ";"
+    * </PRE>
+    */
+   public Object visit(ImportDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ClassDeclaration()
+    *       | InterfaceDeclaration()
+    *       | ";"
+    * </PRE>
+    */
+   public Object visit(TypeDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "final" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * </PRE>
+    */
+   public Object visit(ClassDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "class"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" Name() ]
+    * f3 -> [ "implements" NameList() ]
+    * f4 -> ClassBody()
+    * </PRE>
+    */
+   public Object visit(UnmodifiedClassDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( ClassBodyDeclaration() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public Object visit(ClassBody n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * f2 -> ( ";" )?
+    * </PRE>
+    */
+   public Object visit(NestedClassDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> Initializer()
+    *       | NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | ConstructorDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public Object visit(ClassBodyDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> &lt;IDENTIFIER&gt;
+    * f3 -> "("
+    * </PRE>
+    */
+   public Object visit(MethodDeclarationLookahead n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public Object visit(InterfaceDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public Object visit(NestedInterfaceDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "interface"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" NameList() ]
+    * f3 -> "{"
+    * f4 -> ( InterfaceMemberDeclaration() )*
+    * f5 -> "}"
+    * </PRE>
+    */
+   public Object visit(UnmodifiedInterfaceDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public Object visit(InterfaceMemberDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "final" | 
"transient" | "volatile" )*
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * f4 -> ";"
+    * </PRE>
+    */
+   public Object visit(FieldDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> VariableDeclaratorId()
+    * f1 -> [ "=" VariableInitializer() ]
+    * </PRE>
+    */
+   public Object visit(VariableDeclarator n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public Object visit(VariableDeclaratorId n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ArrayInitializer()
+    *       | Expression()
+    * </PRE>
+    */
+   public Object visit(VariableInitializer n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ]
+    * f2 -> [ "," ]
+    * f3 -> "}"
+    * </PRE>
+    */
+   public Object visit(ArrayInitializer n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> MethodDeclarator()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> ( Block() | ";" )
+    * f5 -> ( ";" )?
+    * </PRE>
+    */
+   public Object visit(MethodDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> FormalParameters()
+    * f2 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public Object visit(MethodDeclarator n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ FormalParameter() ( "," FormalParameter() )* ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public Object visit(FormalParameters n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclaratorId()
+    * </PRE>
+    */
+   public Object visit(FormalParameter n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> [ "public" | "protected" | "private" ]
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> FormalParameters()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> "{"
+    * f5 -> [ ExplicitConstructorInvocation() ]
+    * f6 -> ( BlockStatement() )*
+    * f7 -> "}"
+    * </PRE>
+    */
+   public Object visit(ConstructorDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "this" Arguments() ";"
+    *       | [ PrimaryExpression() "." ] "super" Arguments() ";"
+    * </PRE>
+    */
+   public Object visit(ExplicitConstructorInvocation n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> [ "static" ]
+    * f1 -> Block()
+    * </PRE>
+    */
+   public Object visit(Initializer n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( PrimitiveType() | Name() )
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public Object visit(Type n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "boolean"
+    *       | "char"
+    *       | "byte"
+    *       | "short"
+    *       | "int"
+    *       | "long"
+    *       | "float"
+    *       | "double"
+    * </PRE>
+    */
+   public Object visit(PrimitiveType n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "void"
+    *       | Type()
+    * </PRE>
+    */
+   public Object visit(ResultType n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "." &lt;IDENTIFIER&gt; )*
+    * </PRE>
+    */
+   public Object visit(Name n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> Name()
+    * f1 -> ( "," Name() )*
+    * </PRE>
+    */
+   public Object visit(NameList n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalExpression()
+    * f1 -> [ AssignmentOperator() Expression() ]
+    * </PRE>
+    */
+   public Object visit(Expression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "="
+    *       | "*="
+    *       | "/="
+    *       | "%="
+    *       | "+="
+    *       | "-="
+    *       | "&lt;&lt;="
+    *       | "&gt;&gt;="
+    *       | "&gt;&gt;&gt;="
+    *       | "&="
+    *       | "^="
+    *       | "|="
+    * </PRE>
+    */
+   public Object visit(AssignmentOperator n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalOrExpression()
+    * f1 -> [ "?" Expression() ":" ConditionalExpression() ]
+    * </PRE>
+    */
+   public Object visit(ConditionalExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalAndExpression()
+    * f1 -> ( "||" ConditionalAndExpression() )*
+    * </PRE>
+    */
+   public Object visit(ConditionalOrExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> InclusiveOrExpression()
+    * f1 -> ( "&&" InclusiveOrExpression() )*
+    * </PRE>
+    */
+   public Object visit(ConditionalAndExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ExclusiveOrExpression()
+    * f1 -> ( "|" ExclusiveOrExpression() )*
+    * </PRE>
+    */
+   public Object visit(InclusiveOrExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> AndExpression()
+    * f1 -> ( "^" AndExpression() )*
+    * </PRE>
+    */
+   public Object visit(ExclusiveOrExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> EqualityExpression()
+    * f1 -> ( "&" EqualityExpression() )*
+    * </PRE>
+    */
+   public Object visit(AndExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> InstanceOfExpression()
+    * f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
+    * </PRE>
+    */
+   public Object visit(EqualityExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> RelationalExpression()
+    * f1 -> [ "instanceof" Type() ]
+    * </PRE>
+    */
+   public Object visit(InstanceOfExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ShiftExpression()
+    * f1 -> ( ( "&lt;" | "&gt;" | "&lt;=" | "&gt;=" ) ShiftExpression() )*
+    * </PRE>
+    */
+   public Object visit(RelationalExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> AdditiveExpression()
+    * f1 -> ( ( "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;" ) 
AdditiveExpression() )*
+    * </PRE>
+    */
+   public Object visit(ShiftExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> MultiplicativeExpression()
+    * f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
+    * </PRE>
+    */
+   public Object visit(AdditiveExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> UnaryExpression()
+    * f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
+    * </PRE>
+    */
+   public Object visit(MultiplicativeExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "+" | "-" ) UnaryExpression()
+    *       | PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public Object visit(UnaryExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "++"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public Object visit(PreIncrementExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "--"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public Object visit(PreDecrementExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "~" | "!" ) UnaryExpression()
+    *       | CastExpression()
+    *       | PostfixExpression()
+    * </PRE>
+    */
+   public Object visit(UnaryExpressionNotPlusMinus n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "(" PrimitiveType()
+    *       | "(" Name() "[" "]"
+    *       | "(" Name() ")" ( "~" | "!" | "(" | &lt;IDENTIFIER&gt; | "this" | 
"super" | "new" | Literal() )
+    * </PRE>
+    */
+   public Object visit(CastLookahead n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryExpression()
+    * f1 -> [ "++" | "--" ]
+    * </PRE>
+    */
+   public Object visit(PostfixExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "(" Type() ")" UnaryExpression()
+    *       | "(" Type() ")" UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public Object visit(CastExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryPrefix()
+    * f1 -> ( PrimarySuffix() )*
+    * </PRE>
+    */
+   public Object visit(PrimaryExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> Literal()
+    *       | "this"
+    *       | "super" "." &lt;IDENTIFIER&gt;
+    *       | "(" Expression() ")"
+    *       | AllocationExpression()
+    *       | ResultType() "." "class"
+    *       | Name()
+    * </PRE>
+    */
+   public Object visit(PrimaryPrefix n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "." "this"
+    *       | "." AllocationExpression()
+    *       | "[" Expression() "]"
+    *       | "." &lt;IDENTIFIER&gt;
+    *       | Arguments()
+    * </PRE>
+    */
+   public Object visit(PrimarySuffix n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;INTEGER_LITERAL&gt;
+    *       | &lt;FLOATING_POINT_LITERAL&gt;
+    *       | &lt;CHARACTER_LITERAL&gt;
+    *       | &lt;STRING_LITERAL&gt;
+    *       | BooleanLiteral()
+    *       | NullLiteral()
+    * </PRE>
+    */
+   public Object visit(Literal n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "true"
+    *       | "false"
+    * </PRE>
+    */
+   public Object visit(BooleanLiteral n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "null"
+    * </PRE>
+    */
+   public Object visit(NullLiteral n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ ArgumentList() ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public Object visit(Arguments n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> Expression()
+    * f1 -> ( "," Expression() )*
+    * </PRE>
+    */
+   public Object visit(ArgumentList n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "new" PrimitiveType() ArrayDimsAndInits()
+    *       | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] 
)
+    * </PRE>
+    */
+   public Object visit(AllocationExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ( "[" Expression() "]" )+ ( "[" "]" )*
+    *       | ( "[" "]" )+ ArrayInitializer()
+    * </PRE>
+    */
+   public Object visit(ArrayDimsAndInits n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> LabeledStatement()
+    *       | Block()
+    *       | EmptyStatement()
+    *       | StatementExpression() ";"
+    *       | SwitchStatement()
+    *       | IfStatement()
+    *       | WhileStatement()
+    *       | DoStatement()
+    *       | ForStatement()
+    *       | BreakStatement()
+    *       | ContinueStatement()
+    *       | ReturnStatement()
+    *       | ThrowStatement()
+    *       | SynchronizedStatement()
+    *       | TryStatement()
+    * </PRE>
+    */
+   public Object visit(Statement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ":"
+    * f2 -> Statement()
+    * </PRE>
+    */
+   public Object visit(LabeledStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( BlockStatement() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public Object visit(Block n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration() ";"
+    *       | Statement()
+    *       | UnmodifiedClassDeclaration()
+    *       | UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public Object visit(BlockStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * </PRE>
+    */
+   public Object visit(LocalVariableDeclaration n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> ";"
+    * </PRE>
+    */
+   public Object visit(EmptyStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | PrimaryExpression() [ "++" | "--" | AssignmentOperator() 
Expression() ]
+    * </PRE>
+    */
+   public Object visit(StatementExpression n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "switch"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> "{"
+    * f5 -> ( SwitchLabel() ( BlockStatement() )* )*
+    * f6 -> "}"
+    * </PRE>
+    */
+   public Object visit(SwitchStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "case" Expression() ":"
+    *       | "default" ":"
+    * </PRE>
+    */
+   public Object visit(SwitchLabel n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "if"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * f5 -> [ "else" Statement() ]
+    * </PRE>
+    */
+   public Object visit(IfStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "while"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * </PRE>
+    */
+   public Object visit(WhileStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "do"
+    * f1 -> Statement()
+    * f2 -> "while"
+    * f3 -> "("
+    * f4 -> Expression()
+    * f5 -> ")"
+    * f6 -> ";"
+    * </PRE>
+    */
+   public Object visit(DoStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "for"
+    * f1 -> "("
+    * f2 -> [ ForInit() ]
+    * f3 -> ";"
+    * f4 -> [ Expression() ]
+    * f5 -> ";"
+    * f6 -> [ ForUpdate() ]
+    * f7 -> ")"
+    * f8 -> Statement()
+    * </PRE>
+    */
+   public Object visit(ForStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration()
+    *       | StatementExpressionList()
+    * </PRE>
+    */
+   public Object visit(ForInit n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpression()
+    * f1 -> ( "," StatementExpression() )*
+    * </PRE>
+    */
+   public Object visit(StatementExpressionList n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpressionList()
+    * </PRE>
+    */
+   public Object visit(ForUpdate n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "break"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(BreakStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "continue"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(ContinueStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "return"
+    * f1 -> [ Expression() ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(ReturnStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "throw"
+    * f1 -> Expression()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public Object visit(ThrowStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "synchronized"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Block()
+    * </PRE>
+    */
+   public Object visit(SynchronizedStatement n, Object argu);
+
+   /**
+    * <PRE>
+    * f0 -> "try"
+    * f1 -> Block()
+    * f2 -> ( "catch" "(" FormalParameter() ")" Block() )*
+    * f3 -> [ "finally" Block() ]
+    * </PRE>
+    */
+   public Object visit(TryStatement n, Object argu);
+
+}

Added: freeway/src/org/gnu/freeway/support/visitors/Visitor.java
===================================================================
--- freeway/src/org/gnu/freeway/support/visitors/Visitor.java   2006-06-08 
00:52:10 UTC (rev 2968)
+++ freeway/src/org/gnu/freeway/support/visitors/Visitor.java   2006-06-08 
04:56:56 UTC (rev 2969)
@@ -0,0 +1,823 @@
+//
+// Generated by JTB 1.2.2
+//
+
+package org.gnu.freeway.support.javaparser.visitors;
+import org.gnu.freeway.support.javaparser.*;
+import java.util.*;
+
+/**
+ * All void visitors must implement this interface.
+ */
+public interface Visitor {
+   //
+   // void Auto class visitors
+   //
+   public void visit(NodeList n);
+   public void visit(NodeListOptional n);
+   public void visit(NodeOptional n);
+   public void visit(NodeSequence n);
+   public void visit(NodeToken n);
+
+   //
+   // User-generated visitor methods below
+   //
+
+   /**
+    * <PRE>
+    * f0 -> [ PackageDeclaration() ]
+    * f1 -> ( ImportDeclaration() )*
+    * f2 -> ( TypeDeclaration() )*
+    * f3 -> &lt;EOF&gt;
+    * </PRE>
+    */
+   public void visit(CompilationUnit n);
+
+   /**
+    * <PRE>
+    * f0 -> "package"
+    * f1 -> Name()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(PackageDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> "import"
+    * f1 -> Name()
+    * f2 -> [ "." "*" ]
+    * f3 -> ";"
+    * </PRE>
+    */
+   public void visit(ImportDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> ClassDeclaration()
+    *       | InterfaceDeclaration()
+    *       | ";"
+    * </PRE>
+    */
+   public void visit(TypeDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "final" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * </PRE>
+    */
+   public void visit(ClassDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> "class"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" Name() ]
+    * f3 -> [ "implements" NameList() ]
+    * f4 -> ClassBody()
+    * </PRE>
+    */
+   public void visit(UnmodifiedClassDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( ClassBodyDeclaration() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public void visit(ClassBody n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedClassDeclaration()
+    * f2 -> ( ";" )?
+    * </PRE>
+    */
+   public void visit(NestedClassDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> Initializer()
+    *       | NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | ConstructorDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public void visit(ClassBodyDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> &lt;IDENTIFIER&gt;
+    * f3 -> "("
+    * </PRE>
+    */
+   public void visit(MethodDeclarationLookahead n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "abstract" | "public" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public void visit(InterfaceDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "static" | "abstract" | "final" | "public" | "protected" | 
"private" | "strictfp" )*
+    * f1 -> UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public void visit(NestedInterfaceDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> "interface"
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> [ "extends" NameList() ]
+    * f3 -> "{"
+    * f4 -> ( InterfaceMemberDeclaration() )*
+    * f5 -> "}"
+    * </PRE>
+    */
+   public void visit(UnmodifiedInterfaceDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> NestedClassDeclaration()
+    *       | NestedInterfaceDeclaration()
+    *       | MethodDeclaration()
+    *       | FieldDeclaration()
+    * </PRE>
+    */
+   public void visit(InterfaceMemberDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "final" | 
"transient" | "volatile" )*
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * f4 -> ";"
+    * </PRE>
+    */
+   public void visit(FieldDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> VariableDeclaratorId()
+    * f1 -> [ "=" VariableInitializer() ]
+    * </PRE>
+    */
+   public void visit(VariableDeclarator n);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public void visit(VariableDeclaratorId n);
+
+   /**
+    * <PRE>
+    * f0 -> ArrayInitializer()
+    *       | Expression()
+    * </PRE>
+    */
+   public void visit(VariableInitializer n);
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> [ VariableInitializer() ( "," VariableInitializer() )* ]
+    * f2 -> [ "," ]
+    * f3 -> "}"
+    * </PRE>
+    */
+   public void visit(ArrayInitializer n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "public" | "protected" | "private" | "static" | "abstract" | 
"final" | "native" | "synchronized" | "strictfp" )*
+    * f1 -> ResultType()
+    * f2 -> MethodDeclarator()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> ( Block() | ";" )
+    * f5 -> ( ";" )?
+    * </PRE>
+    */
+   public void visit(MethodDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> FormalParameters()
+    * f2 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public void visit(MethodDeclarator n);
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ FormalParameter() ( "," FormalParameter() )* ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public void visit(FormalParameters n);
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclaratorId()
+    * </PRE>
+    */
+   public void visit(FormalParameter n);
+
+   /**
+    * <PRE>
+    * f0 -> [ "public" | "protected" | "private" ]
+    * f1 -> &lt;IDENTIFIER&gt;
+    * f2 -> FormalParameters()
+    * f3 -> [ "throws" NameList() ]
+    * f4 -> "{"
+    * f5 -> [ ExplicitConstructorInvocation() ]
+    * f6 -> ( BlockStatement() )*
+    * f7 -> "}"
+    * </PRE>
+    */
+   public void visit(ConstructorDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> "this" Arguments() ";"
+    *       | [ PrimaryExpression() "." ] "super" Arguments() ";"
+    * </PRE>
+    */
+   public void visit(ExplicitConstructorInvocation n);
+
+   /**
+    * <PRE>
+    * f0 -> [ "static" ]
+    * f1 -> Block()
+    * </PRE>
+    */
+   public void visit(Initializer n);
+
+   /**
+    * <PRE>
+    * f0 -> ( PrimitiveType() | Name() )
+    * f1 -> ( "[" "]" )*
+    * </PRE>
+    */
+   public void visit(Type n);
+
+   /**
+    * <PRE>
+    * f0 -> "boolean"
+    *       | "char"
+    *       | "byte"
+    *       | "short"
+    *       | "int"
+    *       | "long"
+    *       | "float"
+    *       | "double"
+    * </PRE>
+    */
+   public void visit(PrimitiveType n);
+
+   /**
+    * <PRE>
+    * f0 -> "void"
+    *       | Type()
+    * </PRE>
+    */
+   public void visit(ResultType n);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ( "." &lt;IDENTIFIER&gt; )*
+    * </PRE>
+    */
+   public void visit(Name n);
+
+   /**
+    * <PRE>
+    * f0 -> Name()
+    * f1 -> ( "," Name() )*
+    * </PRE>
+    */
+   public void visit(NameList n);
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalExpression()
+    * f1 -> [ AssignmentOperator() Expression() ]
+    * </PRE>
+    */
+   public void visit(Expression n);
+
+   /**
+    * <PRE>
+    * f0 -> "="
+    *       | "*="
+    *       | "/="
+    *       | "%="
+    *       | "+="
+    *       | "-="
+    *       | "&lt;&lt;="
+    *       | "&gt;&gt;="
+    *       | "&gt;&gt;&gt;="
+    *       | "&="
+    *       | "^="
+    *       | "|="
+    * </PRE>
+    */
+   public void visit(AssignmentOperator n);
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalOrExpression()
+    * f1 -> [ "?" Expression() ":" ConditionalExpression() ]
+    * </PRE>
+    */
+   public void visit(ConditionalExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> ConditionalAndExpression()
+    * f1 -> ( "||" ConditionalAndExpression() )*
+    * </PRE>
+    */
+   public void visit(ConditionalOrExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> InclusiveOrExpression()
+    * f1 -> ( "&&" InclusiveOrExpression() )*
+    * </PRE>
+    */
+   public void visit(ConditionalAndExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> ExclusiveOrExpression()
+    * f1 -> ( "|" ExclusiveOrExpression() )*
+    * </PRE>
+    */
+   public void visit(InclusiveOrExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> AndExpression()
+    * f1 -> ( "^" AndExpression() )*
+    * </PRE>
+    */
+   public void visit(ExclusiveOrExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> EqualityExpression()
+    * f1 -> ( "&" EqualityExpression() )*
+    * </PRE>
+    */
+   public void visit(AndExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> InstanceOfExpression()
+    * f1 -> ( ( "==" | "!=" ) InstanceOfExpression() )*
+    * </PRE>
+    */
+   public void visit(EqualityExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> RelationalExpression()
+    * f1 -> [ "instanceof" Type() ]
+    * </PRE>
+    */
+   public void visit(InstanceOfExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> ShiftExpression()
+    * f1 -> ( ( "&lt;" | "&gt;" | "&lt;=" | "&gt;=" ) ShiftExpression() )*
+    * </PRE>
+    */
+   public void visit(RelationalExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> AdditiveExpression()
+    * f1 -> ( ( "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;" ) 
AdditiveExpression() )*
+    * </PRE>
+    */
+   public void visit(ShiftExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> MultiplicativeExpression()
+    * f1 -> ( ( "+" | "-" ) MultiplicativeExpression() )*
+    * </PRE>
+    */
+   public void visit(AdditiveExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> UnaryExpression()
+    * f1 -> ( ( "*" | "/" | "%" ) UnaryExpression() )*
+    * </PRE>
+    */
+   public void visit(MultiplicativeExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "+" | "-" ) UnaryExpression()
+    *       | PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public void visit(UnaryExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> "++"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public void visit(PreIncrementExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> "--"
+    * f1 -> PrimaryExpression()
+    * </PRE>
+    */
+   public void visit(PreDecrementExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "~" | "!" ) UnaryExpression()
+    *       | CastExpression()
+    *       | PostfixExpression()
+    * </PRE>
+    */
+   public void visit(UnaryExpressionNotPlusMinus n);
+
+   /**
+    * <PRE>
+    * f0 -> "(" PrimitiveType()
+    *       | "(" Name() "[" "]"
+    *       | "(" Name() ")" ( "~" | "!" | "(" | &lt;IDENTIFIER&gt; | "this" | 
"super" | "new" | Literal() )
+    * </PRE>
+    */
+   public void visit(CastLookahead n);
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryExpression()
+    * f1 -> [ "++" | "--" ]
+    * </PRE>
+    */
+   public void visit(PostfixExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> "(" Type() ")" UnaryExpression()
+    *       | "(" Type() ")" UnaryExpressionNotPlusMinus()
+    * </PRE>
+    */
+   public void visit(CastExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> PrimaryPrefix()
+    * f1 -> ( PrimarySuffix() )*
+    * </PRE>
+    */
+   public void visit(PrimaryExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> Literal()
+    *       | "this"
+    *       | "super" "." &lt;IDENTIFIER&gt;
+    *       | "(" Expression() ")"
+    *       | AllocationExpression()
+    *       | ResultType() "." "class"
+    *       | Name()
+    * </PRE>
+    */
+   public void visit(PrimaryPrefix n);
+
+   /**
+    * <PRE>
+    * f0 -> "." "this"
+    *       | "." AllocationExpression()
+    *       | "[" Expression() "]"
+    *       | "." &lt;IDENTIFIER&gt;
+    *       | Arguments()
+    * </PRE>
+    */
+   public void visit(PrimarySuffix n);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;INTEGER_LITERAL&gt;
+    *       | &lt;FLOATING_POINT_LITERAL&gt;
+    *       | &lt;CHARACTER_LITERAL&gt;
+    *       | &lt;STRING_LITERAL&gt;
+    *       | BooleanLiteral()
+    *       | NullLiteral()
+    * </PRE>
+    */
+   public void visit(Literal n);
+
+   /**
+    * <PRE>
+    * f0 -> "true"
+    *       | "false"
+    * </PRE>
+    */
+   public void visit(BooleanLiteral n);
+
+   /**
+    * <PRE>
+    * f0 -> "null"
+    * </PRE>
+    */
+   public void visit(NullLiteral n);
+
+   /**
+    * <PRE>
+    * f0 -> "("
+    * f1 -> [ ArgumentList() ]
+    * f2 -> ")"
+    * </PRE>
+    */
+   public void visit(Arguments n);
+
+   /**
+    * <PRE>
+    * f0 -> Expression()
+    * f1 -> ( "," Expression() )*
+    * </PRE>
+    */
+   public void visit(ArgumentList n);
+
+   /**
+    * <PRE>
+    * f0 -> "new" PrimitiveType() ArrayDimsAndInits()
+    *       | "new" Name() ( ArrayDimsAndInits() | Arguments() [ ClassBody() ] 
)
+    * </PRE>
+    */
+   public void visit(AllocationExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> ( "[" Expression() "]" )+ ( "[" "]" )*
+    *       | ( "[" "]" )+ ArrayInitializer()
+    * </PRE>
+    */
+   public void visit(ArrayDimsAndInits n);
+
+   /**
+    * <PRE>
+    * f0 -> LabeledStatement()
+    *       | Block()
+    *       | EmptyStatement()
+    *       | StatementExpression() ";"
+    *       | SwitchStatement()
+    *       | IfStatement()
+    *       | WhileStatement()
+    *       | DoStatement()
+    *       | ForStatement()
+    *       | BreakStatement()
+    *       | ContinueStatement()
+    *       | ReturnStatement()
+    *       | ThrowStatement()
+    *       | SynchronizedStatement()
+    *       | TryStatement()
+    * </PRE>
+    */
+   public void visit(Statement n);
+
+   /**
+    * <PRE>
+    * f0 -> &lt;IDENTIFIER&gt;
+    * f1 -> ":"
+    * f2 -> Statement()
+    * </PRE>
+    */
+   public void visit(LabeledStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "{"
+    * f1 -> ( BlockStatement() )*
+    * f2 -> "}"
+    * </PRE>
+    */
+   public void visit(Block n);
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration() ";"
+    *       | Statement()
+    *       | UnmodifiedClassDeclaration()
+    *       | UnmodifiedInterfaceDeclaration()
+    * </PRE>
+    */
+   public void visit(BlockStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> [ "final" ]
+    * f1 -> Type()
+    * f2 -> VariableDeclarator()
+    * f3 -> ( "," VariableDeclarator() )*
+    * </PRE>
+    */
+   public void visit(LocalVariableDeclaration n);
+
+   /**
+    * <PRE>
+    * f0 -> ";"
+    * </PRE>
+    */
+   public void visit(EmptyStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> PreIncrementExpression()
+    *       | PreDecrementExpression()
+    *       | PrimaryExpression() [ "++" | "--" | AssignmentOperator() 
Expression() ]
+    * </PRE>
+    */
+   public void visit(StatementExpression n);
+
+   /**
+    * <PRE>
+    * f0 -> "switch"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> "{"
+    * f5 -> ( SwitchLabel() ( BlockStatement() )* )*
+    * f6 -> "}"
+    * </PRE>
+    */
+   public void visit(SwitchStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "case" Expression() ":"
+    *       | "default" ":"
+    * </PRE>
+    */
+   public void visit(SwitchLabel n);
+
+   /**
+    * <PRE>
+    * f0 -> "if"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * f5 -> [ "else" Statement() ]
+    * </PRE>
+    */
+   public void visit(IfStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "while"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Statement()
+    * </PRE>
+    */
+   public void visit(WhileStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "do"
+    * f1 -> Statement()
+    * f2 -> "while"
+    * f3 -> "("
+    * f4 -> Expression()
+    * f5 -> ")"
+    * f6 -> ";"
+    * </PRE>
+    */
+   public void visit(DoStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "for"
+    * f1 -> "("
+    * f2 -> [ ForInit() ]
+    * f3 -> ";"
+    * f4 -> [ Expression() ]
+    * f5 -> ";"
+    * f6 -> [ ForUpdate() ]
+    * f7 -> ")"
+    * f8 -> Statement()
+    * </PRE>
+    */
+   public void visit(ForStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> LocalVariableDeclaration()
+    *       | StatementExpressionList()
+    * </PRE>
+    */
+   public void visit(ForInit n);
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpression()
+    * f1 -> ( "," StatementExpression() )*
+    * </PRE>
+    */
+   public void visit(StatementExpressionList n);
+
+   /**
+    * <PRE>
+    * f0 -> StatementExpressionList()
+    * </PRE>
+    */
+   public void visit(ForUpdate n);
+
+   /**
+    * <PRE>
+    * f0 -> "break"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(BreakStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "continue"
+    * f1 -> [ &lt;IDENTIFIER&gt; ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(ContinueStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "return"
+    * f1 -> [ Expression() ]
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(ReturnStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "throw"
+    * f1 -> Expression()
+    * f2 -> ";"
+    * </PRE>
+    */
+   public void visit(ThrowStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "synchronized"
+    * f1 -> "("
+    * f2 -> Expression()
+    * f3 -> ")"
+    * f4 -> Block()
+    * </PRE>
+    */
+   public void visit(SynchronizedStatement n);
+
+   /**
+    * <PRE>
+    * f0 -> "try"
+    * f1 -> Block()
+    * f2 -> ( "catch" "(" FormalParameter() ")" Block() )*
+    * f3 -> [ "finally" Block() ]
+    * </PRE>
+    */
+   public void visit(TryStatement n);
+
+}
+





reply via email to

[Prev in Thread] Current Thread [Next in Thread]